]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - tests/test_crts.py
Raise copyright years
[pyderasn.git] / tests / test_crts.py
index e31470f6c2f42fddee8d0d97ae575b2168bfb118..e43b4c22fbd23390c83da7eaec791ea4fca461ff 100644 (file)
@@ -1,6 +1,6 @@
 # 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-2024 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
@@ -44,6 +44,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 +103,21 @@ class OrganizationName(Choice):
     )
 
 
+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()),
     )
@@ -163,7 +171,6 @@ class SubjectKeyIdentifier(KeyIdentifier):
     pass
 
 
-
 class Extension(Sequence):
     schema = (
         ("extnID", ObjectIdentifier()),
@@ -222,7 +229,7 @@ class TestGoSelfSignedVector(TestCase):
             "ba3ca12568fdc6c7b4511cd40a7f659980402df2b998bb9a4a8cbeb34c0f0a78c",
             "f8d91ede14a5ed76bf116fe360aafa8821490435",
         )))
-        crt = Certificate().decod(raw)
+        crt = Certificate().decod(raw, ctx={"keep_memoryview": True})
         tbs = crt["tbsCertificate"]
         self.assertEqual(tbs["version"], 0)
         self.assertFalse(tbs["version"].decoded)
@@ -294,6 +301,7 @@ class TestGoSelfSignedVector(TestCase):
             "998bb9a4a8cbeb34c0f0a78cf8d91ede14a5ed76bf116fe360aafa8821490435",
         )))))
         self.assertSequenceEqual(crt.encode(), raw)
+        crt = Certificate().decod(raw)
         pprint(crt)
         repr(crt)
         pickle_loads(pickle_dumps(crt, pickle_proto))
@@ -365,6 +373,8 @@ class TestGoSelfSignedVector(TestCase):
 
 
 class TestGoPayPalVector(TestCase):
+    """PayPal certificate with "www.paypal.com\x00ssl.secureconnection.cc" name
+    """
     def runTest(self):
         raw = hexdec("".join((
             "30820644308205ada003020102020300f09b300d06092a864886f70d010105050",
@@ -418,12 +428,5 @@ class TestGoPayPalVector(TestCase):
             "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)