Skip to content

Commit f476101

Browse files
committed
tests
1 parent f21bed3 commit f476101

File tree

4 files changed

+34
-20
lines changed

4 files changed

+34
-20
lines changed

cryptography-providers/tests/src/commonMain/kotlin/compatibility/EcCompatibilityTest.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,12 @@ abstract class EcCompatibilityTest<PublicK : EC.PublicKey, PrivateK : EC.Private
6565
val publicKeyData = KeyData(keyPair.publicKey.encodeTo(publicKeyFormats.values, ::supportsKeyFormat))
6666
val privateKeyData = KeyData(keyPair.privateKey.encodeTo(privateKeyFormats.values, ::supportsKeyFormat))
6767

68-
assertEquals(
69-
KeyData(keyPair.privateKey.getPublicKey().encodeTo(publicKeyFormats.values, ::supportsKeyFormat)),
70-
publicKeyData
71-
)
68+
if (supportsPublicKeyAccess()) {
69+
assertEquals(
70+
KeyData(keyPair.privateKey.getPublicKey().encodeTo(publicKeyFormats.values, ::supportsKeyFormat)),
71+
publicKeyData
72+
)
73+
}
7274

7375
val keyReference = api.keyPairs.saveData(keyParametersId, KeyPairData(publicKeyData, privateKeyData))
7476

cryptography-providers/tests/src/commonMain/kotlin/compatibility/EcdhCompatibilityTest.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,22 @@ abstract class EcdhCompatibilityTest(
3030
isStressTest = isStressTest
3131
) { otherKeyPair, otherKeyReference, _ ->
3232

33-
val secrets = listOf(
34-
keyPair.privateKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.publicKey),
35-
keyPair.privateKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.privateKey.getPublicKey()),
33+
val secrets = buildList {
34+
add(keyPair.privateKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.publicKey))
35+
add(keyPair.publicKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.privateKey))
36+
add(otherKeyPair.privateKey.sharedSecretGenerator().generateSharedSecret(keyPair.publicKey))
37+
add(otherKeyPair.publicKey.sharedSecretGenerator().generateSharedSecret(keyPair.privateKey))
3638

37-
keyPair.privateKey.getPublicKey().sharedSecretGenerator().generateSharedSecret(otherKeyPair.privateKey),
38-
keyPair.publicKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.privateKey),
39+
if (supportsPublicKeyAccess()) {
40+
val newPublicKey = keyPair.privateKey.getPublicKey()
41+
val newOtherPublicKey = otherKeyPair.privateKey.getPublicKey()
3942

40-
otherKeyPair.privateKey.sharedSecretGenerator().generateSharedSecret(keyPair.publicKey),
41-
otherKeyPair.privateKey.sharedSecretGenerator().generateSharedSecret(keyPair.privateKey.getPublicKey()),
42-
43-
otherKeyPair.privateKey.getPublicKey().sharedSecretGenerator().generateSharedSecret(keyPair.privateKey),
44-
otherKeyPair.publicKey.sharedSecretGenerator().generateSharedSecret(keyPair.privateKey),
45-
)
43+
add(keyPair.privateKey.sharedSecretGenerator().generateSharedSecret(newOtherPublicKey))
44+
add(newPublicKey.sharedSecretGenerator().generateSharedSecret(otherKeyPair.privateKey))
45+
add(otherKeyPair.privateKey.sharedSecretGenerator().generateSharedSecret(newPublicKey))
46+
add(newOtherPublicKey.sharedSecretGenerator().generateSharedSecret(keyPair.privateKey))
47+
}
48+
}
4649

4750
repeat(secrets.size) { i ->
4851
repeat(secrets.size) { j ->

cryptography-providers/tests/src/commonMain/kotlin/compatibility/EcdsaCompatibilityTest.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ abstract class EcdsaCompatibilityTest(
5757
keyPair.privateKey.signatureGenerator(signatureParameters.digest, signatureParameters.signatureFormat)
5858
val verifier =
5959
keyPair.publicKey.signatureVerifier(signatureParameters.digest, signatureParameters.signatureFormat)
60-
val verifier2 =
60+
val verifier2 = if (supportsPublicKeyAccess()) {
6161
keyPair.privateKey.getPublicKey().signatureVerifier(signatureParameters.digest, signatureParameters.signatureFormat)
62+
} else null
6263

6364
repeat(signatureIterations) {
6465
val dataSize = CryptographyRandom.nextInt(maxDataSize)
@@ -68,7 +69,7 @@ abstract class EcdsaCompatibilityTest(
6869
logger.log { "signature.size = ${signature.size}" }
6970

7071
verifier.assertVerifySignature(data, signature, "Initial Verify")
71-
verifier2.assertVerifySignature(data, signature, "Initial Verify (inferred public key)")
72+
verifier2?.assertVerifySignature(data, signature, "Initial Verify (inferred public key)")
7273

7374
api.signatures.saveData(signatureParametersId, SignatureData(keyReference, data, signature))
7475
}
@@ -86,15 +87,16 @@ abstract class EcdsaCompatibilityTest(
8687
api.signatures.getData<SignatureData>(parametersId) { (keyReference, data, signature), _, _ ->
8788
val (publicKeys, privateKeys) = keyPairs[keyReference] ?: return@getData
8889
val verifiers = publicKeys.map { it.signatureVerifier(signatureParameters.digest, signatureParameters.signatureFormat) }
89-
val verifiers2 =
90+
val verifiers2 = if (supportsPublicKeyAccess()) {
9091
privateKeys.map { it.getPublicKey().signatureVerifier(signatureParameters.digest, signatureParameters.signatureFormat) }
92+
} else null
9193
val generators = privateKeys.map { it.signatureGenerator(signatureParameters.digest, signatureParameters.signatureFormat) }
9294

9395
verifiers.forEach { verifier ->
9496
verifier.assertVerifySignature(data, signature, "Verify")
9597
}
9698

97-
verifiers2.forEach { verifier ->
99+
verifiers2?.forEach { verifier ->
98100
verifier.assertVerifySignature(data, signature, "Verify (inferred public key)")
99101
}
100102

@@ -103,7 +105,7 @@ abstract class EcdsaCompatibilityTest(
103105
verifiers.forEach { verifier ->
104106
verifier.assertVerifySignature(data, signature, "Sign-Verify")
105107
}
106-
verifiers2.forEach { verifier ->
108+
verifiers2?.forEach { verifier ->
107109
verifier.assertVerifySignature(data, signature, "Sign-Verify (inferred public key)")
108110
}
109111
}

cryptography-providers/tests/src/commonMain/kotlin/support.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ fun AlgorithmTestScope<out EC<*, *, *>>.supportsCurve(curve: EC.Curve): Boolean
104104
}
105105
}
106106

107+
fun AlgorithmTestScope<out EC<*, *, *>>.supportsPublicKeyAccess(): Boolean = supports {
108+
when {
109+
provider.isJdkDefault -> "getting public key for EC"
110+
else -> null
111+
}
112+
}
113+
107114
fun AlgorithmTestScope<out EC<*, *, *>>.supportsPrivateKeyDecoding(
108115
format: EC.PrivateKey.Format,
109116
key: ByteString,

0 commit comments

Comments
 (0)