|
37 | 37 | -----END RSA PRIVATE KEY-----
|
38 | 38 | """
|
39 | 39 |
|
| 40 | +RSA_PRIVATE_KEY_PEM_PKCS8 = """ |
| 41 | +-----BEGIN PRIVATE KEY----- |
| 42 | +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDN0jYhXzsI1lSA |
| 43 | +j+3uxraUu/78uHJlCcTifQlVUftgEzJth7WNGvrJ8bDLUHwV04cTYSkydgsivjms |
| 44 | +XFgzuTCOLiHX0ik/RT1fOvOpk0gte2gCfPIACUAkTlGXKJ+v+1kqnWFmZFNvtkz2 |
| 45 | +fmLIRq9ZrXWORVmySCeoSfvyygxkmfTUfGieFr8LMFSB6VoWKA/vOk0sMF/5PRxm |
| 46 | +JESS4pOMjWQ3QHpLdjsgUAnxsThLVMbaA5JXdHnFHlgkTbL/OSY06EUzuZ0dJpTU |
| 47 | +qSBbaz6qewlIO4eM9d2N+5d/mt5nn4rU7yuLGlJE/U9UpSutuvkCkqosST9yKBz7 |
| 48 | +YUhK7WyPAgMBAAECggEAYrHEZyhFJK2yA5wA2hjLgHLNiN3hbPXMRVbz3MfdJGrQ |
| 49 | +KZmDw1AGpkORJU1I0yaFhRN4L8xO9rAE89OsL9FDqUoRzG3ofYB0N3ALW2tWlwiw |
| 50 | +DVFgsge9jCtKEJPYTwjV7wtcoz7Ei7L9IM3mDGdoujXlQv2aT1UuPxKLEBc27h3Q |
| 51 | +KZZL0QbA33SmO24BUx9Y741hIXsVvoce0MQM1TPwEGH18qYpffb3kCBTwFEySx+q |
| 52 | +JFwadZiK1JPQgpELrXZT0VuARD2Ze8Z7c0b6668wYiwJ2mmf4l0NTLk67mIIfG1w |
| 53 | +NNNzHme/UGQEjSjUU9TFWLVHU9enumPv5UeLx3wvgQKBgQD7k6pCk8kkUcjjq0sq |
| 54 | +92Coy1DMlZg9ictcusJ5pfe1ZdW01iX/S/88ZOxk1X27jTWcHarAeA+ci4LzDWPG |
| 55 | +I61Hy4kJFOJB6Sx3hDSnfNvuIC/7zrcWLNzvfAeDYmPhAqi1K4HYFN7Ipa/1+Uew |
| 56 | +kWVllcUHRz5zWU+oYVXDsjARrwKBgQDRcJowibhaG4UUMzRsyyEK1l/w+z75L8A7 |
| 57 | +2ZA+wMqyUo9LPgJRYvEHHRQTHDGCzP81IUaAK2OfWrD5Jnn6r4Il7+cQ+xCHKiMD |
| 58 | +rBhnL9dG4lVAWgdZPyWXfrdT3mqpZ3UgfWysvph8s48QdLA3ku7PpTfchwtSdXQP |
| 59 | +cxhEItlrIQKBgQDTTB8AdCfIfXiA3+nuWH+yxbFDY5HOfeF0LNgSXDdFABcSH5si |
| 60 | +Za4mB44U0ssbr2qLiM9VgIF8NiDyCxj13hk359dc7VFrknBqoXuoANKnmhkzIVfd |
| 61 | +JCkca8vTqdvBrP4NzFDuL/k+BQtZSNnRjwze2X/2sPve3fBtt/LUvuBouQKBgQC9 |
| 62 | +T1Cv6uxN1m410grjA8C8MQXLpu5HAxh5gLBXaKBPCz0mv8gMlKhUy73ngCZomq9b |
| 63 | +8NXu6ElGMw2gR10ecSHs9KohuS45XqcDnLz6GE44bkCsyDO4QdHS2+EN2A8FTNSc |
| 64 | +J4Lhqe3fWdZJA5B8yz09R5P0q8RaJnxfsqMOg4mOwQKBgQC+N5xLCRa/n1kJ11we |
| 65 | +rnOe2POS+zuThhi1aMn0LLPIDwVMktymV7F8JegbdYB5KjxyxzDPcpRDRKCXvAew |
| 66 | +QiaCZLRyigBqDpDP4l3uIp1OEzWLYuEAWwnErC7fuPm0TFAy5ecegxW7eXasDy2C |
| 67 | +dJJcK3yV8NRVOzr2voGRmr4d7w== |
| 68 | +-----END PRIVATE KEY----- |
| 69 | +""" |
| 70 | + |
40 | 71 | RSA_PUBLIC_KEY_PEM = """
|
41 | 72 | -----BEGIN RSA PUBLIC KEY-----
|
42 | 73 | MIIBCgKCAQEAxaEsLWE2t3kJqsF1sFHYk7rSCGfGTSDa+3r5typT0cb/TtJ989C8
|
@@ -170,6 +201,19 @@ def test_rsa_encryption_roundtrip(self):
|
170 | 201 | pt_pub = rsa.decrypt(p, ct_pub)
|
171 | 202 | self.assertEqual(test_pt, pt_pub)
|
172 | 203 |
|
| 204 | + def test_rsa_encryption_roundtrip_pkcs8(self): |
| 205 | + param_list = [RSAEncryptionAlgorithm.PKCS1_5, |
| 206 | + RSAEncryptionAlgorithm.OAEP_SHA256, |
| 207 | + RSAEncryptionAlgorithm.OAEP_SHA512] |
| 208 | + |
| 209 | + for p in param_list: |
| 210 | + with self.subTest(msg="RSA Encryption Roundtrip using algo p", p=p): |
| 211 | + test_pt = b'totally original test string' |
| 212 | + rsa = RSA.new_private_key_from_pem_data(RSA_PRIVATE_KEY_PEM_PKCS8) |
| 213 | + ct = rsa.encrypt(p, test_pt) |
| 214 | + pt = rsa.decrypt(p, ct) |
| 215 | + self.assertEqual(test_pt, pt) |
| 216 | + |
173 | 217 | def test_rsa_encryption_roundtrip_der(self):
|
174 | 218 | param_list = [RSAEncryptionAlgorithm.PKCS1_5,
|
175 | 219 | RSAEncryptionAlgorithm.OAEP_SHA256,
|
@@ -211,6 +255,24 @@ def test_rsa_signing_roundtrip(self):
|
211 | 255 | rsa_pub = RSA.new_public_key_from_pem_data(RSA_PUBLIC_KEY_PEM)
|
212 | 256 | self.assertTrue(rsa_pub.verify(p, digest, signature))
|
213 | 257 |
|
| 258 | + def test_rsa_signing_roundtrip_pkcs8(self): |
| 259 | + param_list = [RSASignatureAlgorithm.PKCS1_5_SHA256, |
| 260 | + RSASignatureAlgorithm.PSS_SHA256, |
| 261 | + RSASignatureAlgorithm.PKCS1_5_SHA1] |
| 262 | + |
| 263 | + for p in param_list: |
| 264 | + with self.subTest(msg="RSA Signing Roundtrip using algo p", p=p): |
| 265 | + if (p == RSASignatureAlgorithm.PKCS1_5_SHA1): |
| 266 | + h = Hash.sha1_new() |
| 267 | + else: |
| 268 | + h = Hash.sha256_new() |
| 269 | + h.update(b'totally original test string') |
| 270 | + digest = h.digest() |
| 271 | + |
| 272 | + rsa = RSA.new_private_key_from_pem_data(RSA_PRIVATE_KEY_PEM_PKCS8) |
| 273 | + signature = rsa.sign(p, digest) |
| 274 | + self.assertTrue(rsa.verify(p, digest, signature)) |
| 275 | + |
214 | 276 | def test_rsa_signing_roundtrip_der(self):
|
215 | 277 | param_list = [RSASignatureAlgorithm.PKCS1_5_SHA256,
|
216 | 278 | RSASignatureAlgorithm.PSS_SHA256,
|
|
0 commit comments