diff options
author | Russ Housley <housley@vigilsec.com> | 2019-07-30 15:40:08 -0400 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-07-30 21:40:08 +0200 |
commit | a2a8bbbcf2dff6e625ce6d601f1af9e84270c049 (patch) | |
tree | e06b790f1165a7a3b08572859cb716ab0f784220 /tests | |
parent | 25403b21192ce05c13117a8b2ec79555fcfde38f (diff) | |
download | pyasn1-modules-a2a8bbbcf2dff6e625ce6d601f1af9e84270c049.tar.gz |
Add opentypes maps for RFC 4055 and RFC 5480 (#54)
* Add open types maps for RFC 4055 and RFC 5480
Diffstat (limited to 'tests')
-rwxr-xr-x[-rw-r--r--] | tests/test_rfc4055.py | 62 | ||||
-rwxr-xr-x[-rw-r--r--] | tests/test_rfc5480.py | 17 |
2 files changed, 77 insertions, 2 deletions
diff --git a/tests/test_rfc4055.py b/tests/test_rfc4055.py index 93296c9..3bb319a 100644..100755 --- a/tests/test_rfc4055.py +++ b/tests/test_rfc4055.py @@ -11,6 +11,8 @@ import sys from pyasn1.codec.der import decoder as der_decoder from pyasn1.codec.der import encoder as der_encoder +from pyasn1.type import univ + from pyasn1_modules import pem from pyasn1_modules import rfc5280 from pyasn1_modules import rfc4055 @@ -36,6 +38,16 @@ class PSSDefautTestCase(unittest.TestCase): assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object) + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.pss_default_pem_text) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + assert not asn1Object['parameters'].hasValue() + class PSSSHA512TestCase(unittest.TestCase): pss_sha512_pem_text = "MDwGCSqGSIb3DQEBCjAvoA8wDQYJYIZIAWUDBAIDBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIDBQA=" @@ -52,6 +64,17 @@ class PSSSHA512TestCase(unittest.TestCase): assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object) + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.pss_sha512_pem_text) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + assert asn1Object['parameters'].hasValue() + assert asn1Object['parameters']['saltLength'] == 20 + class OAEPDefautTestCase(unittest.TestCase): oaep_default_pem_text = "MAsGCSqGSIb3DQEBBw==" @@ -68,6 +91,16 @@ class OAEPDefautTestCase(unittest.TestCase): assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object) + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.oaep_default_pem_text) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + assert not asn1Object['parameters'].hasValue() + class OAEPSHA256TestCase(unittest.TestCase): oaep_sha256_pem_text = "MDwGCSqGSIb3DQEBBzAvoA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQA=" @@ -84,6 +117,19 @@ class OAEPSHA256TestCase(unittest.TestCase): assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object) + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.oaep_sha256_pem_text) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + assert asn1Object['parameters'].hasValue() + oaep_p = asn1Object['parameters'] + assert oaep_p['hashFunc']['parameters'] == univ.Null("") + assert oaep_p['maskGenFunc']['parameters']['parameters'] == univ.Null("") + class OAEPFullTestCase(unittest.TestCase): oaep_full_pem_text = "MFMGCSqGSIb3DQEBBzBGoA8wDQYJYIZIAWUDBAICBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAICBQCiFTATBgkqhkiG9w0BAQkEBmZvb2Jhcg==" @@ -100,11 +146,25 @@ class OAEPFullTestCase(unittest.TestCase): assert der_encoder.encode(asn1Object) == substrate assert substrate == der_encoder.encode(asn1Object) + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.oaep_full_pem_text) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + assert asn1Object['parameters'].hasValue() + oaep_p = asn1Object['parameters'] + assert oaep_p['hashFunc']['parameters'] == univ.Null("") + assert oaep_p['maskGenFunc']['parameters']['parameters'] == univ.Null("") + assert oaep_p['pSourceFunc']['parameters'] == univ.OctetString(value='foobar') + suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) if __name__ == '__main__': import sys - + result = unittest.TextTestRunner(verbosity=2).run(suite) sys.exit(not result.wasSuccessful()) diff --git a/tests/test_rfc5480.py b/tests/test_rfc5480.py index 23d227a..06e336d 100644..100755 --- a/tests/test_rfc5480.py +++ b/tests/test_rfc5480.py @@ -14,6 +14,7 @@ from pyasn1.codec.der import encoder as der_encoder from pyasn1_modules import pem from pyasn1_modules import rfc5280 from pyasn1_modules import rfc5480 +from pyasn1_modules import rfc4055 try: import unittest2 as unittest @@ -62,11 +63,25 @@ Ea8/B6hPatJ0ES8q/HO3X8IVQwVs1n3aAr0im0/T+Xc= assert param.prettyPrint() assert param['namedCurve'] == rfc5480.secp384r1 + def testOpenTypes(self): + substrate = pem.readBase64fromText(self.digicert_ec_cert_pem_text) + rfc5280.algorithmIdentifierMap.update(rfc5480.algorithmIdentifierMapUpdate) + asn1Object, rest = der_decoder.decode(substrate, + asn1Spec=self.asn1Spec, + decodeOpenTypes=True) + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + + spki_alg = asn1Object['tbsCertificate']['subjectPublicKeyInfo']['algorithm'] + assert spki_alg['algorithm'] == rfc5480.id_ecPublicKey + assert spki_alg['parameters']['namedCurve'] == rfc5480.secp384r1 + suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) if __name__ == '__main__': import sys - + result = unittest.TextTestRunner(verbosity=2).run(suite) sys.exit(not result.wasSuccessful()) |