diff --git a/README.md b/README.md new file mode 100644 index 0000000..f5a4bf6 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# Kotlin OTP + +This library provides various [One-Time Password](https://en.wikipedia.org/wiki/One-time_password) +implementations in Kotlin Multiplatform. + +## Features + +* [HTOP](https://en.wikipedia.org/wiki/HMAC-based_one-time_password) +* [TOTP](https://en.wikipedia.org/wiki/Time-based_one-time_password) +* Multiplatform support + * JVM + * JavaScript + * Native (Linux) + +## Installation + +Add the following to your `build.gradle.kts`. + +```kotlin +repositories { + maven("https://git.infendro.com/api/packages/Infendro/maven") +} + +dependencies { + implementation("com.infendro:otp:1.1.1") +} +``` + +## Usage + +```kotlin +import com.infendro.hash.SHA1 +import com.infendro.otp.SecretGenerator +import com.infendro.otp.TOTP +import kotlin.time.Clock.System.now +import kotlin.time.Duration.Companion.seconds + +fun main() { + // create a TOTP instance using SHA1, a length of 6, and a period of 30 seconds + val totp = TOTP( + function = SHA1, + length = 6, + period = 30.seconds, + ) + + // generate a secret using SHA1 + val secret = SecretGenerator.generate(SHA1) + + // generate an OTP + val otp = totp.generate(secret, now()) + + // verify an OTP + totp.verify(secret, now(), otp) +} +```