Skip to content

Commit 54a7681

Browse files
tests
1 parent 274978b commit 54a7681

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

test/test_crypto.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
from test import NativeResourceTest
6-
from awscrt.crypto import Hash, RSA, RSAEncryptionAlgorithm, RSASignatureAlgorithm, ED25519, ED25519ExportFormat
6+
from awscrt.crypto import Hash, RSA, RSAEncryptionAlgorithm, RSASignatureAlgorithm, ED25519, ED25519ExportFormat, EC, ECType
77
import base64
88
import unittest
99

@@ -114,6 +114,12 @@
114114
'59309stR/bAhMzxOx31777XEPO1md854iXXr0XDMQlwCYkWyWb6hp4JlsqFBPMjn'
115115
'nGXWA0Gp6UWgpg4Hvjdsu+0FQ3AhDMBKZZ8fBFb4EW+HRQIHPnbH')
116116

117+
EC_PRIVATE_KEY_SEC1_BASE64 = (
118+
'MHcCAQEEIJkWKltOY4ZMX4439yu9lx1caIAYw5EPw8P5Osl6S6P2oAoGCCqGSM49'
119+
'AwEHoUQDQgAE7GzXS9wzwlYyrVJWrPXw5iiZhIOvc2/+14M7QoFdLuDb9qykxhZ+'
120+
'PuD/e0PooTZQkoMGlLPUkwbeY4qhHD+yVw=='
121+
)
122+
117123

118124
class TestCredentials(NativeResourceTest):
119125

@@ -326,6 +332,44 @@ def test_ed25519_keygen(self):
326332
self.assertEqual(68, len(key.export_public_key(ED25519ExportFormat.OPENSSH_B64)))
327333
self.assertEqual(312, len(key.export_private_key(ED25519ExportFormat.OPENSSH_B64)))
328334

335+
def test_ec_p256_signing_roundtrip(self):
336+
h = Hash.sha256_new()
337+
h.update(b'totally original test string')
338+
digest = h.digest()
339+
340+
ec = EC.new_generate(ECType.P_256)
341+
signature = ec.sign(digest)
342+
343+
(r, s) = EC.decode_der_signature(signature)
344+
self.assertEquals(signature, EC.encode_der_signature(r, s))
345+
346+
self.assertTrue(ec.verify(digest, signature))
347+
348+
def test_ec_p384_signing_roundtrip(self):
349+
h = Hash.sha256_new()
350+
h.update(b'totally original test string')
351+
digest = h.digest()
352+
353+
ec = EC.new_generate(ECType.P_384)
354+
signature = ec.sign(digest)
355+
356+
(r, s) = EC.decode_der_signature(signature)
357+
self.assertEquals(signature, EC.encode_der_signature(r, s))
358+
359+
self.assertTrue(ec.verify(digest, signature))
360+
361+
def test_ec_asn1_signing_roundtrip(self):
362+
h = Hash.sha256_new()
363+
h.update(b'totally original test string')
364+
digest = h.digest()
365+
366+
ec = EC.new_key_from_der_data(base64.decodebytes(EC_PRIVATE_KEY_SEC1_BASE64))
367+
signature = ec.sign(digest)
368+
369+
(r, s) = EC.decode_der_signature(signature)
370+
self.assertEquals(signature, EC.encode_der_signature(r, s))
371+
372+
self.assertTrue(ec.verify(digest, signature))
329373

330374
if __name__ == '__main__':
331375
unittest.main()

0 commit comments

Comments
 (0)