blob: bf45220cb79d587f4f0b2f7392b71de5b458b1da [file] [log] [blame]
wbond3855a152015-07-13 10:47:32 -04001# coding: utf-8
2from __future__ import unicode_literals
3
4import unittest
5import sys
6import os
wbond3855a152015-07-13 10:47:32 -04007
wbond44b89192015-08-24 09:34:01 -04008from asn1crypto import csr, util
wbond3855a152015-07-13 10:47:32 -04009
10if sys.version_info < (3,):
11 byte_cls = str
12 num_cls = long #pylint: disable=E0602
13else:
14 byte_cls = bytes
15 num_cls = int
16
17
18tests_root = os.path.dirname(__file__)
19fixtures_dir = os.path.join(tests_root, 'fixtures')
20
21
22class CSRTests(unittest.TestCase):
23
24 def test_parse_csr(self):
25 with open(os.path.join(fixtures_dir, 'test-inter-der.csr'), 'rb') as f:
26 certification_request = csr.CertificationRequest.load(f.read())
27
28 cri = certification_request['certification_request_info']
29
30 self.assertEqual(
31 'v1',
32 cri['version'].native
33 )
34
35 self.assertEqual(
wbond44b89192015-08-24 09:34:01 -040036 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -040037 ('country_name', 'US'),
38 ('state_or_province_name', 'Massachusetts'),
39 ('locality_name', 'Newbury'),
40 ('organization_name', 'Codex Non Sufficit LC'),
41 ('organizational_unit_name', 'Testing Intermediate'),
42 ('common_name', 'Will Bond'),
43 ('email_address', 'will@codexns.io'),
44 ]),
45 cri['subject'].native
46 )
47 self.assertEqual(
wbond44b89192015-08-24 09:34:01 -040048 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -040049 ('algorithm', 'rsa'),
50 ('parameters', None),
51 ]),
52 cri['subject_pk_info']['algorithm'].native
53 )
54 self.assertEqual(
55 24141757533938720807477509823483015516687050697622322097001928034085434547050399731881871694642845241206788286795830006142635608141713689209738431462004600429798152826994774062467402648660593454536565119527837471261495586474194846971065722669734666949739228862107500673350843489920495869942508240779131331715037662761414997889327943217889802893638175792326783316531272170879284118280173511200768884738639370318760377047837471530387161553030663446359575963736475504659902898072137674205021477968813148345198711103071746476009234601299344030395455052526948041544669303473529511160643491569274897838845918784633403435929,
56 cri['subject_pk_info']['public_key'].parsed['modulus'].native
57 )
58 self.assertEqual(
59 65537,
60 cri['subject_pk_info']['public_key'].parsed['public_exponent'].native
61 )
62 self.assertEqual(
63 [],
64 cri['attributes'].native
65 )
66
67
68 def test_parse_csr2(self):
69 with open(os.path.join(fixtures_dir, 'test-third-der.csr'), 'rb') as f:
70 certification_request = csr.CertificationRequest.load(f.read())
71
72 cri = certification_request['certification_request_info']
73
74 self.assertEqual(
75 'v1',
76 cri['version'].native
77 )
78
79 self.assertEqual(
wbond44b89192015-08-24 09:34:01 -040080 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -040081 ('country_name', 'US'),
82 ('state_or_province_name', 'Massachusetts'),
83 ('locality_name', 'Newbury'),
84 ('organization_name', 'Codex Non Sufficit LC'),
85 ('organizational_unit_name', 'Test Third-Level Certificate'),
86 ('common_name', 'Will Bond'),
87 ('email_address', 'will@codexns.io'),
88 ]),
89 cri['subject'].native
90 )
91 self.assertEqual(
wbond44b89192015-08-24 09:34:01 -040092 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -040093 ('algorithm', 'rsa'),
94 ('parameters', None),
95 ]),
96 cri['subject_pk_info']['algorithm'].native
97 )
98 self.assertEqual(
99 24242772097421005542208203320016703216069397492249392798445262959177221203301502279838173203064357049006693856302147277901773700963054800321566171864477088538775137040886151390015408166478059887940234405152693144166884492162723776487601158833605063151869850475289834250129252480954724818505034734280077580919995584375189497366089269712298471489896645221362055822887892887126082288043106492130176555423739906252380437817155678204772878611148787130925042126257401487070141904017757131876614711613405231164930930771261221451019736883391322299033324412671768599041417705072563016759224152503535867541947310239343903761461,
100 cri['subject_pk_info']['public_key'].parsed['modulus'].native
101 )
102 self.assertEqual(
103 65537,
104 cri['subject_pk_info']['public_key'].parsed['public_exponent'].native
105 )
106 self.assertEqual(
107 [
wbond44b89192015-08-24 09:34:01 -0400108 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -0400109 ('type', 'extension_request'),
110 (
111 'values',
112 [
113 [
wbond44b89192015-08-24 09:34:01 -0400114 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -0400115 ('extn_id', 'basic_constraints'),
116 ('critical', False),
117 (
118 'extn_value',
wbond44b89192015-08-24 09:34:01 -0400119 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -0400120 ('ca', False),
121 ('path_len_constraint', None),
122 ])
123 ),
124 ]),
wbond44b89192015-08-24 09:34:01 -0400125 util.OrderedDict([
wbond3855a152015-07-13 10:47:32 -0400126 ('extn_id', 'key_usage'),
127 ('critical', False),
128 (
129 'extn_value',
wbond407e9e32015-08-24 09:35:28 -0400130 set(['digital_signature', 'non_repudiation', 'key_encipherment']),
wbond3855a152015-07-13 10:47:32 -0400131 ),
132 ])
133 ]
134 ]
135 ),
136 ]),
137 ],
138 cri['attributes'].native
139 )