aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRuss Housley <housley@vigilsec.com>2019-07-30 15:40:08 -0400
committerIlya Etingof <etingof@gmail.com>2019-07-30 21:40:08 +0200
commita2a8bbbcf2dff6e625ce6d601f1af9e84270c049 (patch)
treee06b790f1165a7a3b08572859cb716ab0f784220 /tests
parent25403b21192ce05c13117a8b2ec79555fcfde38f (diff)
downloadpyasn1-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.py62
-rwxr-xr-x[-rw-r--r--]tests/test_rfc5480.py17
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())