Compare commits

...

4 Commits

Author SHA1 Message Date
f32ebaf416 bump version to 1.1.1
All checks were successful
/ publish (push) Successful in 3m30s
2025-07-24 21:07:58 +02:00
633263c541 add opt-in 2025-07-24 21:07:38 +02:00
ba1c983094 update dependencies 2025-07-24 21:07:32 +02:00
f4385d172e remove encoding dependency 2025-07-13 00:11:35 +02:00
6 changed files with 20 additions and 36 deletions

View File

@@ -1,5 +1,5 @@
group = "com.infendro"
version = "1.1.0"
version = "1.1.1"
repositories {
maven("https://git.infendro.com/api/packages/Infendro/maven")
@@ -20,11 +20,16 @@ kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.encoding)
implementation(libs.hash)
implementation(libs.random)
implementation(libs.mac)
implementation(libs.hash)
implementation(libs.bytearray)
}
}
compilerOptions {
freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime")
}
}
publishing {

View File

@@ -1,13 +1,15 @@
[versions]
kotlin = "2.1.20"
encoding = "1.1.0"
hash = "1.1.0"
mac = "1.1.0"
random = "1.0.0"
mac = "1.1.2"
hash = "1.2.2"
bytearray = "1.1.1"
[plugins]
multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
[libraries]
encoding = { module = "com.infendro:encoding", version.ref = "encoding" }
hash = { module = "com.infendro:hash", version.ref = "hash" }
random = { module = "com.infendro:random", version.ref = "random" }
mac = { module = "com.infendro:mac", version.ref = "mac" }
hash = { module = "com.infendro:hash", version.ref = "hash" }
bytearray = { module = "com.infendro:bytearray", version.ref = "bytearray" }

View File

@@ -1,10 +1,10 @@
package com.infendro.otp
import com.infendro.bytearray.toByteArray
import com.infendro.bytearray.toInt
import com.infendro.hash.HashFunction
import com.infendro.hash.SHA1
import com.infendro.mac.HMAC
import com.infendro.otp.util.toByteArray
import com.infendro.otp.util.toInt
import kotlin.experimental.and
import kotlin.math.pow
@@ -24,8 +24,7 @@ class HOTP(
secret: ByteArray,
counter: Long,
): String {
if (counter < 0)
throw Exception()
if (counter < 0) throw Exception()
val hash = generateHash(
secret,

View File

@@ -1,10 +1,10 @@
package com.infendro.otp
import com.infendro.hash.*
import kotlin.random.Random
import com.infendro.random.PRNG
object SecretGenerator {
private val random = Random.Default
private val random = PRNG.HMAC
fun generate(
algorithm: HashFunction = SHA1,

View File

@@ -4,10 +4,8 @@ import com.infendro.hash.HashFunction
import com.infendro.hash.SHA1
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@ExperimentalTime
class TOTP(
function: HashFunction = SHA1,
length: Int = 6,

View File

@@ -1,20 +0,0 @@
package com.infendro.otp.util
internal fun Long.toByteArray(): ByteArray {
return ByteArray(8) { i ->
val offset = (7 - i) * 8
(this shr offset).toByte()
}
}
internal fun ByteArray.toInt(): Int {
if (size != 4) throw Exception()
return fold(0) { acc, byte ->
(acc shl 8) or (byte.toInt() and 0xFF)
}
}
internal fun Collection<Byte>.toInt(): Int {
return toByteArray().toInt()
}