tests/test_crts.py | 27 ++++++++++++++++----------- diff --git a/tests/test_crts.py b/tests/test_crts.py index d92f0905a81bdb9b60ed7f4db580a719f13c8284739b5ae2cb45e49816e417ed..ede57b743ce55419845fc6f3681244097926ff93d7c3cfd8b391955fd1081e6b 100644 --- a/tests/test_crts.py +++ b/tests/test_crts.py @@ -19,6 +19,7 @@ from copy import copy from datetime import datetime from unittest import TestCase +from six import assertRaisesRegex from six.moves.cPickle import dumps as pickle_dumps from six.moves.cPickle import HIGHEST_PROTOCOL as pickle_proto from six.moves.cPickle import loads as pickle_loads @@ -27,6 +28,7 @@ from pyderasn import Any from pyderasn import BitString from pyderasn import Boolean from pyderasn import Choice +from pyderasn import DecodeError from pyderasn import encode_cer from pyderasn import GeneralizedTime from pyderasn import hexdec @@ -44,6 +46,7 @@ from pyderasn import tag_ctxc from pyderasn import tag_ctxp from pyderasn import TeletexString from pyderasn import UTCTime +from pyderasn import UTF8String name2oid = { @@ -102,14 +105,21 @@ ("teletexString", TeletexString()), ) +class CommonName(Choice): + schema = ( + ("printableString", PrintableString()), + ("utf8String", UTF8String()), + ) + + class AttributeTypeAndValue(Sequence): schema = ( - ("type", AttributeType(defines=(((".", "value"), { + ("type", AttributeType(defines=((("value",), { name2oid["id-at-countryName"]: PrintableString(), name2oid["id-at-localityName"]: PrintableString(), name2oid["id-at-stateOrProvinceName"]: PrintableString(), name2oid["id-at-organizationName"]: OrganizationName(), - name2oid["id-at-commonName"]: PrintableString(), + name2oid["id-at-commonName"]: CommonName(), }),))), ("value", AttributeValue()), ) @@ -365,6 +375,8 @@ ) class TestGoPayPalVector(TestCase): + """PayPal certificate with "www.paypal.com\x00ssl.secureconnection.cc" name + """ def runTest(self): raw = hexdec("".join(( "30820644308205ada003020102020300f09b300d06092a864886f70d010105050", @@ -418,12 +430,5 @@ "b4ad7b9dc889e3778415bf782a5f2ba41255a901a1e4538a1525875942644fb20", "07ba44cce54a2d723f9847f626dc054605076321ab469b9c78d5545b3d0c1ec86", "48cb55023826fdbb8221c439607a8bb", ))) - crt = Certificate().decod(raw) - self.assertSequenceEqual(crt.encode(), raw) - pprint(crt) - repr(crt) - pickle_loads(pickle_dumps(crt, pickle_proto)) - self.assertEqual( - Certificate().decod(encode_cer(crt), ctx={"bered": True}), - crt, - ) + with assertRaisesRegex(self, DecodeError, "non-printable"): + crt = Certificate().decod(raw)