@@ -6,6 +6,8 @@ package aws.smithy.kotlin.runtime.hashing
66
77import org.junit.jupiter.api.Assertions.assertFalse
88import org.junit.jupiter.api.Assertions.assertTrue
9+ import org.junit.jupiter.api.condition.EnabledForJreRange
10+ import org.junit.jupiter.api.condition.JRE
911import java.security.*
1012import java.security.interfaces.*
1113import java.security.spec.*
@@ -30,6 +32,10 @@ class EcdsaJVMTest {
3032
3133 assertTrue(signature.isNotEmpty())
3234 assertTrue(signature.size >= 64 ) // ECDSA signatures are typically 70-72 bytes in DER format
35+
36+ val rawSignature = ecdsaSecp256r1Rs(privateKey, message)
37+ assertTrue(signature.isNotEmpty())
38+ assertTrue(rawSignature.size == 64 )
3339 }
3440
3541 @Test
@@ -44,6 +50,13 @@ class EcdsaJVMTest {
4450 assertTrue(signature1.isNotEmpty())
4551 assertTrue(signature2.isNotEmpty())
4652 assertFalse(signature1.contentEquals(signature2))
53+
54+ val rawSignature1 = ecdsaSecp256r1Rs(privateKey, message1)
55+ val rawSignature2 = ecdsaSecp256r1Rs(privateKey, message2)
56+
57+ assertTrue(rawSignature1.isNotEmpty())
58+ assertTrue(rawSignature2.isNotEmpty())
59+ assertFalse(rawSignature1.contentEquals(rawSignature2))
4760 }
4861
4962 @Test
@@ -53,6 +66,9 @@ class EcdsaJVMTest {
5366
5467 val signature = ecdsaSecp256r1(privateKey, message)
5568 assertTrue(signature.isNotEmpty())
69+
70+ val rawSignature = ecdsaSecp256r1Rs(privateKey, message)
71+ assertTrue(rawSignature.isNotEmpty())
5672 }
5773
5874 @Test
@@ -62,6 +78,9 @@ class EcdsaJVMTest {
6278
6379 val signature = ecdsaSecp256r1(privateKey, largeMessage)
6480 assertTrue(signature.isNotEmpty())
81+
82+ val rawSignature = ecdsaSecp256r1Rs(privateKey, largeMessage)
83+ assertTrue(rawSignature.isNotEmpty())
6584 }
6685
6786 @Test
@@ -78,6 +97,23 @@ class EcdsaJVMTest {
7897 val verifier = Signature .getInstance(" SHA256withECDSA" )
7998 verifier.initVerify(publicKey)
8099 verifier.update(message)
100+ }
101+
102+ @Test
103+ @EnabledForJreRange(min = JRE .JAVA_11 )
104+ fun testVerifyRawSignature () {
105+ val keyGen = KeyPairGenerator .getInstance(" EC" )
106+ keyGen.initialize(ECGenParameterSpec (" secp256r1" ))
107+ val keyPair = keyGen.generateKeyPair()
108+ val privateKey = (keyPair.private as ECPrivateKey ).s.toByteArray()
109+ val publicKey = keyPair.public
110+
111+ val message = " Hello, World!" .toByteArray()
112+ val signature = ecdsaSecp256r1Rs(privateKey, message)
113+
114+ val verifier = Signature .getInstance(" SHA256withECDSAinP1363Format" )
115+ verifier.initVerify(publicKey)
116+ verifier.update(message)
81117
82118 assertTrue(verifier.verify(signature))
83119 }
0 commit comments