| # coding: utf-8 |
| from __future__ import unicode_literals, division, absolute_import, print_function |
| |
| import unittest |
| import sys |
| import os |
| |
| from asn1crypto import algos, core |
| from ._unittest_compat import patch |
| |
| patch() |
| |
| if sys.version_info < (3,): |
| byte_cls = str |
| num_cls = long # noqa |
| else: |
| byte_cls = bytes |
| num_cls = int |
| |
| |
| tests_root = os.path.dirname(__file__) |
| fixtures_dir = os.path.join(tests_root, 'fixtures') |
| |
| |
| class AlgoTests(unittest.TestCase): |
| |
| def test_signed_digest_parameters(self): |
| sha256_rsa = algos.SignedDigestAlgorithm({'algorithm': 'sha256_rsa'}) |
| self.assertEqual(core.Null, sha256_rsa['parameters'].__class__) |
| |
| def test_digest_parameters(self): |
| sha1 = algos.DigestAlgorithm({'algorithm': 'sha1'}) |
| self.assertEqual(core.Null, sha1['parameters'].__class__) |
| |
| def test_ccm_parameters(self): |
| with open(os.path.join(fixtures_dir, 'aesccm_algo.der'), 'rb') as f: |
| # PBES2 AlgorithmIdentifier |
| algo = algos.EncryptionAlgorithm().load(f.read()) |
| scheme = algo['parameters']['encryption_scheme'] |
| self.assertEqual(scheme['parameters'].__class__, algos.CcmParams) |
| self.assertEqual(scheme['parameters']['aes_nonce'].__class__, core.OctetString) |
| self.assertEqual(scheme['parameters']['aes_nonce'].native, b'z\xb7\xbd\xb7\xe1\xc6\xc0\x11\xc1?\xf00') |
| self.assertEqual(scheme['parameters']['aes_icvlen'].__class__, core.Integer) |
| self.assertEqual(scheme['parameters']['aes_icvlen'].native, 8) |