]> Cypherpunks.ru repositories - pygost.git/blobdiff - pygost/test_pfx.py
Raise copyright years
[pygost.git] / pygost / test_pfx.py
index fe5b1649cf209012d5691eabf9b46bfdfa2ede6a..77025080a6c471f82f6cd65b9a9cfef8726be5e3 100644 (file)
@@ -1,11 +1,10 @@
 # coding: utf-8
 # PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-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 General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation, version 3 of the License.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -23,13 +22,13 @@ from unittest import TestCase
 from pygost.gost28147 import cfb_decrypt
 from pygost.gost34112012512 import GOST34112012512
 from pygost.gost34112012512 import pbkdf2 as gost34112012_pbkdf2
-from pygost.utils import hexdec
 
 
 try:
     from pygost.asn1schemas.pfx import OctetStringSafeContents
     from pygost.asn1schemas.pfx import PFX
     from pygost.asn1schemas.pfx import PKCS8ShroudedKeyBag
+    from pygost.asn1schemas.pfx import SafeContents
 except ImportError:
     pyderasn_exists = False
 else:
@@ -73,7 +72,7 @@ AwcBAQIDBEAIFX0fyZe20QKKhWm6WYX+S92Gt6zaXroXOvAmayzLfZ5Sd9C2t9zZ
 JSg6M8RBUYpw/8ym5ou1o2nDa09M5zF3BCCpzyCQBI+rzfISeKvPV1ROfcXiYU93
 mwcl1xQV2G5/fgICB9A=
     """)
-    password = u'Пароль для PFX'
+    password = u"Пароль для PFX"
 
     def test_shrouded_key_bag(self):
         private_key_info_expected = b64decode(b"""
@@ -83,13 +82,12 @@ G2ki9enTqos4KpUU0j9IDpl1UXiaA1YDIwUjlAp+81GkLmyt8Fw6Gt/X5JZySAY=
 
         pfx, tail = PFX().decode(self.pfx_raw)
         self.assertSequenceEqual(tail, b"")
-        _, octet_string_safe_contents = pfx["authSafe"]["content"].defined
-        outer_safe_contents = octet_string_safe_contents["safeContents"]
-        octet_string_safe_contents, tail = OctetStringSafeContents().decode(
+        _, outer_safe_contents = pfx["authSafe"]["content"].defined
+        safe_contents, tail = OctetStringSafeContents().decode(
             bytes(outer_safe_contents[0]["bagValue"]),
         )
         self.assertSequenceEqual(tail, b"")
-        safe_bag = octet_string_safe_contents["safeContents"][0]
+        safe_bag = safe_contents[0]
         shrouded_key_bag, tail = PKCS8ShroudedKeyBag().decode(
             bytes(safe_bag["bagValue"]),
         )
@@ -110,7 +108,7 @@ G2ki9enTqos4KpUU0j9IDpl1UXiaA1YDIwUjlAp+81GkLmyt8Fw6Gt/X5JZySAY=
                 key,
                 bytes(shrouded_key_bag["encryptedData"]),
                 iv=bytes(enc_scheme_params["iv"]),
-                sbox="Gost28147_tc26_ParamZ",
+                sbox="id-tc26-gost-28147-param-Z",
             ),
             private_key_info_expected,
         )
@@ -136,8 +134,7 @@ ATAMBggqhQMHAQEDAgUAA0EA9oq0Vvk8kkgIwkp0x0J5eKtia4MNTiwKAm7jgnCZIx3O98BThaTX
 
         pfx, tail = PFX().decode(self.pfx_raw)
         self.assertSequenceEqual(tail, b"")
-        _, octet_string_safe_contents = pfx["authSafe"]["content"].defined
-        outer_safe_contents = octet_string_safe_contents["safeContents"]
+        _, outer_safe_contents = pfx["authSafe"]["content"].defined
         _, encrypted_data = outer_safe_contents[1]["bagValue"].defined
         _, pbes2_params = encrypted_data["encryptedContentInfo"]["contentEncryptionAlgorithm"]["parameters"].defined
         _, pbkdf2_params = pbes2_params["keyDerivationFunc"]["parameters"].defined
@@ -154,7 +151,7 @@ ATAMBggqhQMHAQEDAgUAA0EA9oq0Vvk8kkgIwkp0x0J5eKtia4MNTiwKAm7jgnCZIx3O98BThaTX
                 key,
                 bytes(encrypted_data["encryptedContentInfo"]["encryptedContent"]),
                 iv=bytes(enc_scheme_params["iv"]),
-                sbox="Gost28147_tc26_ParamZ",
+                sbox="id-tc26-gost-28147-param-Z",
             ),
             cert_bag_expected,
         )
@@ -162,11 +159,10 @@ ATAMBggqhQMHAQEDAgUAA0EA9oq0Vvk8kkgIwkp0x0J5eKtia4MNTiwKAm7jgnCZIx3O98BThaTX
     def test_mac(self):
         pfx, tail = PFX().decode(self.pfx_raw)
         self.assertSequenceEqual(tail, b"")
-        _, octet_string_safe_contents = pfx["authSafe"]["content"].defined
-        outer_safe_contents = octet_string_safe_contents["safeContents"]
+        _, outer_safe_contents = pfx["authSafe"]["content"].defined
         mac_data = pfx["macData"]
         mac_key = gost34112012_pbkdf2(
-            password=self.password.encode('utf-8'),
+            password=self.password.encode("utf-8"),
             salt=bytes(mac_data["macSalt"]),
             iterations=int(mac_data["iterations"]),
             dklen=96,
@@ -175,7 +171,7 @@ ATAMBggqhQMHAQEDAgUAA0EA9oq0Vvk8kkgIwkp0x0J5eKtia4MNTiwKAm7jgnCZIx3O98BThaTX
         self.assertSequenceEqual(
             hmac_new(
                 key=mac_key,
-                msg=outer_safe_contents.encode(),
+                msg=SafeContents(outer_safe_contents).encode(),
                 digestmod=GOST34112012512,
             ).digest(),
             bytes(mac_data["mac"]["digest"]),