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.
116 lines
3.1 KiB
116 lines
3.1 KiB
# coding: utf-8
|
|
from __future__ import unicode_literals, division, absolute_import, print_function
|
|
|
|
import unittest
|
|
import os
|
|
import sys
|
|
|
|
from asn1crypto import pkcs12
|
|
from ._unittest_compat import patch
|
|
|
|
patch()
|
|
|
|
if sys.version_info < (3,):
|
|
byte_cls = str
|
|
else:
|
|
byte_cls = bytes
|
|
|
|
tests_root = os.path.dirname(__file__)
|
|
fixtures_dir = os.path.join(tests_root, 'fixtures')
|
|
|
|
|
|
class PKCS12Tests(unittest.TestCase):
|
|
|
|
def test_parse_pfx(self):
|
|
with open(os.path.join(fixtures_dir, 'test-tripledes.p12'), 'rb') as f:
|
|
info = pkcs12.Pfx.load(f.read())
|
|
|
|
self.assertEqual(
|
|
'v3',
|
|
info['version'].native
|
|
)
|
|
|
|
auth_safe = info['auth_safe']
|
|
|
|
self.assertEqual(
|
|
'data',
|
|
auth_safe['content_type'].native
|
|
)
|
|
|
|
self.assertEqual(
|
|
2,
|
|
len(info.authenticated_safe)
|
|
)
|
|
|
|
for i, content_info in enumerate(info.authenticated_safe):
|
|
if i == 0:
|
|
self.assertEqual(
|
|
'encrypted_data',
|
|
content_info['content_type'].native
|
|
)
|
|
else:
|
|
self.assertEqual(
|
|
'data',
|
|
content_info['content_type'].native
|
|
)
|
|
safe_contents = pkcs12.SafeContents.load(content_info['content'].native)
|
|
self.assertEqual(
|
|
1,
|
|
len(safe_contents)
|
|
)
|
|
bag_attributes = safe_contents[0]['bag_attributes']
|
|
self.assertEqual(
|
|
2,
|
|
len(bag_attributes)
|
|
)
|
|
self.assertEqual(
|
|
'local_key_id',
|
|
bag_attributes[0]['type'].native
|
|
)
|
|
self.assertEqual(
|
|
[b'\x95\xd7\xcf\xd7&\x80\x02\x94Q\xc2}X\xee\xd7\x9eiQ\xc0\x10P'],
|
|
bag_attributes[0]['values'].native
|
|
)
|
|
self.assertEqual(
|
|
'friendly_name',
|
|
bag_attributes[1]['type'].native
|
|
)
|
|
self.assertEqual(
|
|
['PKCS#12 Test'],
|
|
bag_attributes[1]['values'].native
|
|
)
|
|
|
|
def test_parse_certbag(self):
|
|
'''test to parse the java oid "2.16.840.1.113894.746875.1.1"'''
|
|
with open(os.path.join(fixtures_dir, 'certbag.der'), 'rb') as f:
|
|
certbag = pkcs12.SafeBag.load(f.read())
|
|
|
|
self.assertEqual(
|
|
2,
|
|
len(certbag['bag_attributes'])
|
|
)
|
|
|
|
attr_0 = certbag['bag_attributes'][0]
|
|
|
|
self.assertEqual(
|
|
'friendly_name',
|
|
attr_0['type'].native
|
|
)
|
|
|
|
self.assertEqual(
|
|
['testcertificate'],
|
|
attr_0['values'].native
|
|
)
|
|
|
|
attr_1 = certbag['bag_attributes'][1]
|
|
|
|
self.assertEqual(
|
|
'trusted_key_usage',
|
|
attr_1['type'].native
|
|
)
|
|
|
|
self.assertEqual(
|
|
['any_extended_key_usage'],
|
|
attr_1['values'].native
|
|
)
|