forked from sergeych/crypto2
58 lines
1.7 KiB
Kotlin
58 lines
1.7 KiB
Kotlin
import kotlinx.coroutines.test.runTest
|
|
import net.sergeych.bintools.encodeToHex
|
|
import net.sergeych.crypto2.BinaryId
|
|
import net.sergeych.crypto2.Contrail
|
|
import net.sergeych.crypto2.NumericNonce
|
|
import net.sergeych.crypto2.initCrypto
|
|
import kotlin.test.*
|
|
|
|
class ToolsTest {
|
|
@Test
|
|
fun testContrails() = runTest {
|
|
initCrypto()
|
|
val data = ubyteArrayOf(1u, 2u, 3u, 4u, 5u)
|
|
val c = Contrail.create(data)
|
|
assertTrue { Contrail.isValid(c) }
|
|
c[2] = c[2] xor 11u
|
|
assertFalse { Contrail.isValid(c) }
|
|
c[2] = c[2] xor 11u
|
|
assertTrue { Contrail.isValid(c) }
|
|
assertContentEquals(data,Contrail.unpack(c))
|
|
}
|
|
|
|
@Test
|
|
fun numericNonceTest() = runTest{
|
|
initCrypto()
|
|
val nn = NumericNonce.random(32)
|
|
val counter = 1031
|
|
val x1 = nn.withInt(0)
|
|
val x2 = nn.withInt(counter)
|
|
// println(x1.toDump())
|
|
// println(x2.toDump())
|
|
val t = (x1[0] xor x2[0]).toInt() + ((x1[1] xor x2[1]).toInt() shl 8)
|
|
assertEquals(counter, t)
|
|
assertContentEquals(x1.drop(2), x2.drop(2))
|
|
}
|
|
|
|
@Test
|
|
fun testUBytesAsHashKeys() {
|
|
val k1 = BinaryId.createFromString(0,"Just the business")
|
|
val k2 = BinaryId.createFromString(0,"Just the business")
|
|
val l = mutableListOf<UByte>()
|
|
for( b in k1.id) l += b
|
|
val k3 = BinaryId.createFromUBytes(0, k1.id.dropLast(2).toUByteArray() )
|
|
|
|
assertEquals(k1, k2)
|
|
|
|
println(k1.id.encodeToHex())
|
|
println(k3.id.encodeToHex())
|
|
|
|
assertEquals(k1, k3)
|
|
|
|
val m = mutableMapOf(k1 to "foo")
|
|
m[k2] ="bar"
|
|
assertEquals("bar", m[k2])
|
|
assertEquals("bar", m[k1])
|
|
assertEquals("bar", m[k3])
|
|
}
|
|
} |