diff options
author | Russ Housley <housley@vigilsec.com> | 2019-04-23 17:03:00 -0400 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-04-23 23:03:00 +0200 |
commit | 1fde413eb7936639b1076019ddc04b377c38bb9e (patch) | |
tree | ab0cb0c0c40d4a33498b1ea1165666f863e6bf32 /tests | |
parent | b0a0a429b82ed7cd5f502cffc2894e19250ddf8e (diff) | |
download | pyasn1-modules-1fde413eb7936639b1076019ddc04b377c38bb9e.tar.gz |
Add support for RFC5958, RFC8410 and RFC8418 (#27)
Add modules and tests for RFC5958, RFC8410 and RFC8418
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_rfc5958.py | 50 | ||||
-rw-r--r-- | tests/test_rfc8410.py | 44 | ||||
-rw-r--r-- | tests/test_rfc8418.py | 43 |
3 files changed, 137 insertions, 0 deletions
diff --git a/tests/test_rfc5958.py b/tests/test_rfc5958.py new file mode 100644 index 0000000..1abc40e --- /dev/null +++ b/tests/test_rfc5958.py @@ -0,0 +1,50 @@ +# +# This file is part of pyasn1-modules software. +# +# Created by Russ Housley +# Copyright (c) 2019, Vigil Security, LLC +# License: http://snmplabs.com/pyasn1/license.html +# + +import sys + +from pyasn1.codec.der import decoder as der_decoder +from pyasn1.codec.der import encoder as der_encoder + +from pyasn1_modules import pem +from pyasn1_modules import rfc5958 +from pyasn1_modules import rfc8410 + +try: + import unittest2 as unittest +except ImportError: + import unittest + + +class PrivateKeyTestCase(unittest.TestCase): + priv_key_pem_text = """\ +MHICAQEwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC +oB8wHQYKKoZIhvcNAQkJFDEPDA1DdXJkbGUgQ2hhaXJzgSEAGb9ECWmEzf6FQbrB +Z9w7lshQhqowtrbLDFw4rXAxZuE= +""" + + def setUp(self): + self.asn1Spec = rfc5958.PrivateKeyInfo() + + def testDerCodec(self): + substrate = pem.readBase64fromText(self.priv_key_pem_text) + asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) + assert not rest + assert asn1Object.prettyPrint() + assert asn1Object['privateKeyAlgorithm']['algorithm'] == rfc8410.id_Ed25519 + assert asn1Object['privateKey'].isValue + assert asn1Object['privateKey'].prettyPrint()[0:10] == "0x0420d4ee" + assert asn1Object['publicKey'].isValue + assert asn1Object['publicKey'].prettyPrint()[0:10] == "1164575857" + assert der_encoder.encode(asn1Object) == substrate + + +suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/tests/test_rfc8410.py b/tests/test_rfc8410.py new file mode 100644 index 0000000..7c74175 --- /dev/null +++ b/tests/test_rfc8410.py @@ -0,0 +1,44 @@ +# +# This file is part of pyasn1-modules software. +# +# Created by Russ Housley +# Copyright (c) 2019, Vigil Security, LLC +# License: http://snmplabs.com/pyasn1/license.html +# + +import sys + +from pyasn1.codec.der import decoder as der_decoder +from pyasn1.codec.der import encoder as der_encoder + +from pyasn1_modules import pem +from pyasn1_modules import rfc5208 +from pyasn1_modules import rfc8410 + +try: + import unittest2 as unittest +except ImportError: + import unittest + + +class PrivateKeyTestCase(unittest.TestCase): + no_pub_key_pem_text = "MC4CAQAwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC" + + def setUp(self): + self.asn1Spec = rfc5208.PrivateKeyInfo() + + def testDerCodec(self): + substrate = pem.readBase64fromText(self.no_pub_key_pem_text) + asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) + assert not rest + assert asn1Object.prettyPrint() + assert asn1Object['privateKeyAlgorithm']['algorithm'] == rfc8410.id_Ed25519 + assert asn1Object['privateKey'].isValue + assert asn1Object['privateKey'].prettyPrint()[0:10] == "0x0420d4ee" + assert der_encoder.encode(asn1Object) == substrate + + +suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/tests/test_rfc8418.py b/tests/test_rfc8418.py new file mode 100644 index 0000000..b0dbb7d --- /dev/null +++ b/tests/test_rfc8418.py @@ -0,0 +1,43 @@ +# +# This file is part of pyasn1-modules software. +# +# Created by Russ Housley +# Copyright (c) 2019, Vigil Security, LLC +# License: http://snmplabs.com/pyasn1/license.html +# + +import sys + +from pyasn1.codec.der import decoder as der_decoder +from pyasn1.codec.der import encoder as der_encoder + +from pyasn1_modules import pem +from pyasn1_modules import rfc5280 +from pyasn1_modules import rfc8418 + +try: + import unittest2 as unittest +except ImportError: + import unittest + + +class KeyAgreeAlgTestCase(unittest.TestCase): + key_agree_alg_id_pem_text = "MBoGCyqGSIb3DQEJEAMUMAsGCWCGSAFlAwQBLQ==" + + def setUp(self): + self.asn1Spec = rfc5280.AlgorithmIdentifier() + + def testDerCodec(self): + substrate = pem.readBase64fromText(self.key_agree_alg_id_pem_text) + asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) + assert not rest + assert asn1Object.prettyPrint() + assert asn1Object['algorithm'] == rfc8418.dhSinglePass_stdDH_hkdf_sha384_scheme + assert asn1Object['parameters'].isValue + assert der_encoder.encode(asn1Object) == substrate + + +suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite) |