That repairs autodecoding of certificates in tests and shows that forged
PayPal certificate can not be successfully decoded now as expected.
from datetime import datetime
from unittest import TestCase
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
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
from pyderasn import BitString
from pyderasn import Boolean
from pyderasn import Choice
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
from pyderasn import encode_cer
from pyderasn import GeneralizedTime
from pyderasn import hexdec
from pyderasn import tag_ctxp
from pyderasn import TeletexString
from pyderasn import UTCTime
from pyderasn import tag_ctxp
from pyderasn import TeletexString
from pyderasn import UTCTime
+from pyderasn import UTF8String
+class CommonName(Choice):
+ schema = (
+ ("printableString", PrintableString()),
+ ("utf8String", UTF8String()),
+ )
+
+
class AttributeTypeAndValue(Sequence):
schema = (
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-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()),
)
}),))),
("value", AttributeValue()),
)
class TestGoPayPalVector(TestCase):
class TestGoPayPalVector(TestCase):
+ """PayPal certificate with "www.paypal.com\x00ssl.secureconnection.cc" name
+ """
def runTest(self):
raw = hexdec("".join((
"30820644308205ada003020102020300f09b300d06092a864886f70d010105050",
def runTest(self):
raw = hexdec("".join((
"30820644308205ada003020102020300f09b300d06092a864886f70d010105050",
"07ba44cce54a2d723f9847f626dc054605076321ab469b9c78d5545b3d0c1ec86",
"48cb55023826fdbb8221c439607a8bb",
)))
"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)