forked from sergeych/crypto2
fix #4 update data in container
This commit is contained in:
1 parent
a1561bc280
commit
165cd07353
2 files changed
+171
-51
No files matched your search
@@ -24,6 +24,11 @@ class ContainerTest {
|
||||
assertNotNull(d)
|
||||
assertContentEquals(data, d)
|
||||
assertTrue { c1.isDecrypted }
|
||||
|
||||
val data2 = "To push unpushinable".encodeToUByteArray()
|
||||
val c2 = Container.decode(c.updateData(data2).encoded)
|
||||
assertFalse { c2.isDecrypted }
|
||||
assertContentEquals(data2, c2.decryptWith(syk1))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -45,6 +50,11 @@ class ContainerTest {
|
||||
assertNotNull(d)
|
||||
assertContentEquals(data, d)
|
||||
assertTrue { c1.isDecrypted }
|
||||
|
||||
val data2 = "To push unpushinable".encodeToUByteArray()
|
||||
val c2 = Container.decode(c.updateData(data2).encoded)
|
||||
assertFalse { c2.isDecrypted }
|
||||
assertContentEquals(data2, c2.decryptWith(p2.secretKey))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -67,6 +77,11 @@ class ContainerTest {
|
||||
assertNotNull(d)
|
||||
assertContentEquals(data, d)
|
||||
assertTrue { c1.isDecrypted }
|
||||
|
||||
val data2 = "To push unpushinable".encodeToUByteArray()
|
||||
val c2 = Container.decode(c.updateData(data2).encoded)
|
||||
assertFalse { c2.isDecrypted }
|
||||
assertContentEquals(data2, c2.decryptWith(p2.secretKey))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -86,7 +101,7 @@ class ContainerTest {
|
||||
key(p1.secretKey to p3.publicKey)
|
||||
key(p4.publicKey)
|
||||
}
|
||||
assertFalse { c.isDecrypted }
|
||||
assertTrue { c.isDecrypted }
|
||||
var c1 = Container.decode(c.encoded)
|
||||
assertFalse { c1.isDecrypted }
|
||||
|
||||
@@ -104,6 +119,13 @@ class ContainerTest {
|
||||
c1 = Container.decode(c.encoded)
|
||||
assertFalse { c1.isDecrypted }
|
||||
assertContentEquals(data, c1.decryptWith(syk3, p4.secretKey))
|
||||
|
||||
val data2 = "To push unpushinable".encodeToUByteArray()
|
||||
assertTrue { c.isDecrypted }
|
||||
val c2 = Container.decode(c.updateData(data2).encoded)
|
||||
assertFalse { c2.isDecrypted }
|
||||
assertContentEquals(data2, c2.decryptWith(syk2))
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -119,6 +141,7 @@ class ContainerTest {
|
||||
.encodeToUByteArray()
|
||||
|
||||
var c = Container.createWith(data, syk1)
|
||||
assertTrue { c.isDecrypted }
|
||||
|
||||
fun expectOpen(k: DecryptingKey) {
|
||||
val c1 = Container.decode(c.encoded)
|
||||
@@ -158,6 +181,13 @@ class ContainerTest {
|
||||
expectOpen(p3.secretKey)
|
||||
expectNotOpen(syk3)
|
||||
expectOpen(p4.secretKey)
|
||||
|
||||
val data2 = "To push unpushinable".encodeToUByteArray()
|
||||
assertTrue { c.isDecrypted }
|
||||
val c2 = Container.decode(c.updateData(data2).encoded)
|
||||
assertFalse { c2.isDecrypted }
|
||||
assertContentEquals(data2, c2.decryptWith(p4.secretKey))
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -195,4 +225,80 @@ class ContainerTest {
|
||||
expectNotOpen(syk2)
|
||||
expectOpen(p3.secretKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMixedOps1() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p2 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
val p4 = Asymmetric.generateKeys()
|
||||
val data = "Translating the name 'Sergey Chernov' from Russian to archaic Sanskrit would be 'Ramo Krishna'"
|
||||
.encodeToUByteArray()
|
||||
|
||||
var c = Container.createWith(data, p1.secretKey to p3.publicKey)
|
||||
|
||||
fun expectOpen(testData: UByteArray,vararg keys: DecryptingKey) {
|
||||
val c1 = Container.decode(c.encoded)
|
||||
for( k in keys)
|
||||
assertContentEquals(testData, c1.decryptWith(k))
|
||||
}
|
||||
|
||||
fun expectNotOpen(vararg keys: DecryptingKey) {
|
||||
val c1 = Container.decode(c.encoded)
|
||||
for(k in keys) assertNull(c1.decryptWith(k))
|
||||
}
|
||||
|
||||
expectNotOpen(syk1)
|
||||
expectOpen(data, p3.secretKey)
|
||||
|
||||
// c = Container.decode(c.encoded)
|
||||
|
||||
val data2 = "Cocktails have a delicious, complex taste".encodeToUByteArray()
|
||||
c = (c + syk3 + (p1.secretKey to p4.publicKey)).updateData(data2)
|
||||
expectNotOpen(syk2, syk1, p1.secretKey, p2.secretKey )
|
||||
expectOpen(data2, syk3, p3.secretKey, p4.secretKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMixedOps2() = runTest {
|
||||
initCrypto()
|
||||
val syk1 = SymmetricKey.random()
|
||||
val syk2 = SymmetricKey.random()
|
||||
val syk3 = SymmetricKey.random()
|
||||
val p1 = Asymmetric.generateKeys()
|
||||
val p2 = Asymmetric.generateKeys()
|
||||
val p3 = Asymmetric.generateKeys()
|
||||
val p4 = Asymmetric.generateKeys()
|
||||
val data = "Translating the name 'Sergey Chernov' from Russian to archaic Sanskrit would be 'Ramo Krishna'"
|
||||
.encodeToUByteArray()
|
||||
|
||||
var c = Container.createWith(data, p1.secretKey to p3.publicKey)
|
||||
|
||||
fun expectOpen(testData: UByteArray,vararg keys: DecryptingKey) {
|
||||
val c1 = Container.decode(c.encoded)
|
||||
for( k in keys)
|
||||
assertContentEquals(testData, c1.decryptWith(k))
|
||||
}
|
||||
|
||||
fun expectNotOpen(vararg keys: DecryptingKey) {
|
||||
val c1 = Container.decode(c.encoded)
|
||||
for(k in keys) assertNull(c1.decryptWith(k))
|
||||
}
|
||||
|
||||
expectNotOpen(syk1)
|
||||
expectOpen(data, p3.secretKey)
|
||||
|
||||
c = Container.decode(c.encoded)
|
||||
c.decryptWith(p3.secretKey)
|
||||
|
||||
val data2 = "Cocktails have a delicious, complex taste".encodeToUByteArray()
|
||||
c = (c + syk3 + (p1.secretKey to p4.publicKey)).updateData(data2)
|
||||
expectNotOpen(syk2, syk1, p1.secretKey, p2.secretKey )
|
||||
expectOpen(data2, syk3, p3.secretKey, p4.secretKey)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user