Container started

This commit is contained in:
sergeych committed 2024-06-19 16:46:32 +07:00
1 parent e4e3b5ba8b
commit e2916d0fe2
12 files changed
+360 -76

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
import com.ionspin.kotlin.crypto.util.encodeToUByteArray
import kotlinx.coroutines.test.runTest
import net.sergeych.crypto2.Asymmetric
import net.sergeych.crypto2.Container
import net.sergeych.crypto2.SymmetricKey
import net.sergeych.crypto2.initCrypto
import kotlin.test.*
class ContainerTest {
@Test
fun testSingle() = runTest {
initCrypto()
val syk1 = SymmetricKey.random()
val syk2 = SymmetricKey.random()
val data = "sergeych, ohm many.".encodeToUByteArray()
val c = Container.create(data, syk1)
assertFalse { c.isDecrypted }
val c1 = Container.decode(c.encoded)
assertFalse { c.isDecrypted }
assertIs<Container.Single>(c)
assertNull(c1.decryptWith(syk2))
val d = c1.decryptWith(syk2, syk1)
assertNotNull(d)
assertContentEquals(data, d)
assertTrue { c1.isDecrypted }
}
@Test
fun testSinglePair() = runTest {
initCrypto()
val p1 = Asymmetric.generateKeys()
val p2 = Asymmetric.generateKeys()
val p3 = Asymmetric.generateKeys()
val data = "sergeych, ohm many.".encodeToUByteArray()
val c = Container.create(data, p1.secretKey to p2.publicKey)
assertFalse { c.isDecrypted }
val c1 = Container.decode(c.encoded)
assertFalse { c.isDecrypted }
assertIs<Container.Single>(c)
assertNull(c1.decryptWith(p3.secretKey))
val d = c1.decryptWith(p3.secretKey, p2.secretKey)
assertNotNull(d)
assertContentEquals(data, d)
assertTrue { c1.isDecrypted }
}
@Test
fun testSingleAsymmetric() = runTest {
initCrypto()
// val p1 = Asymmetric.generateKeys()
val p2 = Asymmetric.generateKeys()
val p3 = Asymmetric.generateKeys()
val data = "sergeych, ohm many.".encodeToUByteArray()
val c = Container.create(data) { key(p2.publicKey) }
assertFalse { c.isDecrypted }
val c1 = Container.decode(c.encoded)
assertFalse { c.isDecrypted }
assertIs<Container.Single>(c)
assertNull(c1.decryptWith(p3.secretKey))
val d = c1.decryptWith(p3.secretKey, p2.secretKey)
assertNotNull(d)
assertContentEquals(data, d)
assertTrue { c1.isDecrypted }
}
@Test
fun testMultipleSymmetric() = runTest {
initCrypto()
val syk1 = SymmetricKey.random()
val syk2 = SymmetricKey.random()
// val syk3 = SymmetricKey.random()
val data = "Translating the name 'Sergey Chernov' from Russian to archaic Sanskrit would be 'Ramo Krishna'"
.encodeToUByteArray()
val c = Container.create(data, syk1, syk2)
assertFalse { c.isDecrypted }
val c1 = Container.decode(c.encoded)
assertFalse { c1.isDecrypted }
}
}
+5 -7
View File
@@ -3,7 +3,6 @@ import com.ionspin.kotlin.crypto.util.encodeToUByteArray
import kotlinx.coroutines.test.runTest
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import net.sergeych.bipack.BipackEncoder
import net.sergeych.crypto2.*
import net.sergeych.utools.now
import net.sergeych.utools.pack
@@ -140,25 +139,24 @@ class KeysTest {
val plain = "The fake vaccine kills".encodeToUByteArray()
var m = Asymmetric.createMessage(sk0, pk1, plain)
var m = pk1.encryptMessage(plain, sk1)
assertContentEquals(plain, m.decrypt(sk1))
assertThrows<DecryptionFailedException> {
assertContentEquals(plain, m.decrypt(sk2))
}
m = pk2.encryptAnonymously(plain)
m = pk2.encryptAnonymousMessage(plain)
assertContentEquals(plain, m.decrypt(sk2))
assertContentEquals(plain, sk2.decrypt(m))
assertContentEquals(plain, sk2.decrypt(sk1.encrypt(plain, pk2)))
// assertContentEquals(plain, sk2.decrypt(sk1.encrypt(plain, pk2)))
assertThrows<DecryptionFailedException> {
assertContentEquals(plain, m.decrypt(sk1))
}
val x1 = BipackEncoder.encode(Asymmetric.createMessage(sk0, pk1, plain))
val x2 = BipackEncoder.encode(Asymmetric.createMessage(sk0, pk1, plain))
val x1 = pk1.encryptMessage(plain, sk1).encoded
val x2 = pk1.encryptMessage(plain, sk1).encoded
assertFalse { x1 contentEquals x2 }
}
@Test
fun asymmetricKeySerializationTest() = runTest {
+5
View File
@@ -52,4 +52,9 @@ class RingTest {
assertEquals(r, r2)
}
@Test
@Ignore
fun testKeysWithSameTags() {
// it should be able to keep keys with same tags
}
}