Add seeded private key generation
This commit is contained in:
1 parent
8015a4310b
commit
d0f1fffe6d
6 files changed
+197
-4
No files matched your search
@@ -82,6 +82,48 @@ class KeysTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun seededPrivateKeysTest() = runTest {
|
||||
initCrypto()
|
||||
val source = "stable high entropy key material placeholder".encodeToUByteArray() + randomUBytes(128)
|
||||
val data = "seeded generation works".encodeToUByteArray()
|
||||
|
||||
val signingSeed = SigningSecretKey.seedFromBytes(source)
|
||||
val decryptingSeed = DecryptingSecretKey.seedFromBytes(source)
|
||||
assertEquals(SigningSecretKey.seedLength, signingSeed.size)
|
||||
assertEquals(DecryptingSecretKey.seedLength, decryptingSeed.size)
|
||||
assertFalse(signingSeed contentEquals decryptingSeed)
|
||||
|
||||
val signingKey1 = SigningSecretKey.fromSeed(signingSeed)
|
||||
val signingKey2 = SigningSecretKey.fromSeed(signingSeed)
|
||||
assertEquals(signingKey1, signingKey2)
|
||||
val signature = signingKey1.sign(data)
|
||||
assertTrue(signingKey2.verifyingKey.verify(signature, data))
|
||||
|
||||
val decryptingKey1 = DecryptingSecretKey.fromSeed(decryptingSeed)
|
||||
val decryptingKey2 = DecryptingSecretKey.fromSeed(decryptingSeed)
|
||||
assertEquals(decryptingKey1.publicKey, decryptingKey2.publicKey)
|
||||
assertContentEquals(data, decryptingKey2.decrypt(decryptingKey1.publicKey.encrypt(data)))
|
||||
|
||||
val universalSeed = UniversalPrivateKey.seedFromBytes(source)
|
||||
assertEquals(UniversalPrivateKey.seedLength, universalSeed.size)
|
||||
val universalKey1 = UniversalPrivateKey.fromSeed(universalSeed)
|
||||
val universalKey2 = UniversalPrivateKey.fromSeed(universalSeed)
|
||||
assertEquals(universalKey1.publicKey, universalKey2.publicKey)
|
||||
assertTrue(universalKey2.publicKey.verify(universalKey1.sign(data), data))
|
||||
assertContentEquals(data, universalKey2.decrypt(universalKey1.publicKey.encrypt(data)))
|
||||
|
||||
assertFailsWith<IllegalArgumentException> {
|
||||
SigningSecretKey.fromSeed(signingSeed.dropLast(1).toUByteArray())
|
||||
}
|
||||
assertFailsWith<IllegalArgumentException> {
|
||||
DecryptingSecretKey.fromSeed(decryptingSeed.dropLast(1).toUByteArray())
|
||||
}
|
||||
assertFailsWith<IllegalArgumentException> {
|
||||
UniversalPrivateKey.fromSeed(universalSeed.dropLast(1).toUByteArray())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun secretEncryptTest() = runTest {
|
||||
initCrypto()
|
||||
|
||||
Reference in new issue
Block a user