+id now has public constructor

+default bas64 repr for ByteChunk
This commit is contained in:
Sergey Chernov 2024-11-29 11:25:01 +07:00
parent cef7e4abed
commit db7453fbb2
4 changed files with 9 additions and 3 deletions

View File

@ -37,7 +37,7 @@ import kotlin.random.Random
* @throws InvalidException if crc check failed * @throws InvalidException if crc check failed
*/ */
@Serializable @Serializable
open class BinaryId protected constructor ( open class BinaryId(
/** /**
* The packed binary id. Note that serialized version is one byte longer containing * The packed binary id. Note that serialized version is one byte longer containing
* the size prefix * the size prefix

View File

@ -53,7 +53,7 @@ class ByteChunk(val data: UByteArray): Comparable<ByteChunk> {
/** /**
* hex representation of data * hex representation of data
*/ */
override fun toString(): String = hex override fun toString(): String = base64Url
/** /**
* Hex encoded data * Hex encoded data

View File

@ -83,7 +83,10 @@ class VerifyingPublicKey(override val keyBytes: UByteArray) : UniversalKey(), Ve
val data = s.decodeBase64Url().asUByteArray() val data = s.decodeBase64Url().asUByteArray()
if (data.size == 32) if (data.size == 32)
VerifyingPublicKey(data) VerifyingPublicKey(data)
else { else if( data.size == 34) {
// raw id
BinaryId(data).asVerifyingKey as VerifyingPublicKey
}else {
runCatching { data.decodeFromBipack<VerifyingPublicKey>() }.getOrNull() runCatching { data.decodeFromBipack<VerifyingPublicKey>() }.getOrNull()
?: kotlin.runCatching { data.decodeFromBipack<UniversalKey>() as VerifyingPublicKey } ?: kotlin.runCatching { data.decodeFromBipack<UniversalKey>() as VerifyingPublicKey }
.getOrElse { throw IllegalArgumentException("can't parse verifying key") } .getOrElse { throw IllegalArgumentException("can't parse verifying key") }

View File

@ -456,5 +456,8 @@ class KeysTest {
testToString(k4) testToString(k4)
for( i in listOf(k1, k2, k3, k4, k5, k6, k7, k8)) testAsString(i) for( i in listOf(k1, k2, k3, k4, k5, k6, k7, k8)) testAsString(i)
val x = VerifyingPublicKey.parse("I1po9Y2I7p2aOxeh4nFyGPm3e0YunBEu1Mo-PmIqP84Evg")
println(x)
} }
} }