You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
# 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)
|