# coding: utf-8
# PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
-# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2017-2021 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
from copy import copy
from datetime import datetime
+from pickle import dumps as pickle_dumps
+from pickle import HIGHEST_PROTOCOL as pickle_proto
+from pickle import loads as pickle_loads
from unittest import TestCase
-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 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
from pyderasn import tag_ctxp
from pyderasn import TeletexString
from pyderasn import UTCTime
+from pyderasn import UTF8String
name2oid = {
)
+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()),
)
pass
-
class Extension(Sequence):
schema = (
("extnID", ObjectIdentifier()),
class TestGoPayPalVector(TestCase):
+ """PayPal certificate with "www.paypal.com\x00ssl.secureconnection.cc" name
+ """
def runTest(self):
raw = hexdec("".join((
"30820644308205ada003020102020300f09b300d06092a864886f70d010105050",
"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 self.assertRaisesRegex(DecodeError, "alphabet value"):
+ crt = Certificate().decod(raw)