pyasn1-alt-modules 0.4.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyasn1-alt-modules might be problematic. Click here for more details.
- pyasn1_alt_modules/__init__.py +2 -0
- pyasn1_alt_modules/opentypemap.py +19 -0
- pyasn1_alt_modules/pem.py +66 -0
- pyasn1_alt_modules/rfc1155.py +97 -0
- pyasn1_alt_modules/rfc1157.py +127 -0
- pyasn1_alt_modules/rfc1901.py +23 -0
- pyasn1_alt_modules/rfc1902.py +130 -0
- pyasn1_alt_modules/rfc1905.py +136 -0
- pyasn1_alt_modules/rfc2040.py +50 -0
- pyasn1_alt_modules/rfc2251.py +564 -0
- pyasn1_alt_modules/rfc2314.py +68 -0
- pyasn1_alt_modules/rfc2315.py +325 -0
- pyasn1_alt_modules/rfc2437.py +70 -0
- pyasn1_alt_modules/rfc2459.py +1340 -0
- pyasn1_alt_modules/rfc2511.py +303 -0
- pyasn1_alt_modules/rfc2528.py +34 -0
- pyasn1_alt_modules/rfc2560.py +226 -0
- pyasn1_alt_modules/rfc2631.py +37 -0
- pyasn1_alt_modules/rfc2634.py +342 -0
- pyasn1_alt_modules/rfc2743.py +60 -0
- pyasn1_alt_modules/rfc2876.py +61 -0
- pyasn1_alt_modules/rfc2898.py +72 -0
- pyasn1_alt_modules/rfc2985.py +593 -0
- pyasn1_alt_modules/rfc2986.py +76 -0
- pyasn1_alt_modules/rfc3058.py +48 -0
- pyasn1_alt_modules/rfc3114.py +80 -0
- pyasn1_alt_modules/rfc3125.py +469 -0
- pyasn1_alt_modules/rfc3161.py +142 -0
- pyasn1_alt_modules/rfc3217.py +42 -0
- pyasn1_alt_modules/rfc3274.py +62 -0
- pyasn1_alt_modules/rfc3279.py +264 -0
- pyasn1_alt_modules/rfc3280.py +1544 -0
- pyasn1_alt_modules/rfc3281.py +332 -0
- pyasn1_alt_modules/rfc3370.py +142 -0
- pyasn1_alt_modules/rfc3412.py +54 -0
- pyasn1_alt_modules/rfc3414.py +29 -0
- pyasn1_alt_modules/rfc3447.py +46 -0
- pyasn1_alt_modules/rfc3537.py +44 -0
- pyasn1_alt_modules/rfc3546.py +23 -0
- pyasn1_alt_modules/rfc3560.py +74 -0
- pyasn1_alt_modules/rfc3565.py +59 -0
- pyasn1_alt_modules/rfc3657.py +69 -0
- pyasn1_alt_modules/rfc3709.py +230 -0
- pyasn1_alt_modules/rfc3739.py +207 -0
- pyasn1_alt_modules/rfc3770.py +77 -0
- pyasn1_alt_modules/rfc3779.py +139 -0
- pyasn1_alt_modules/rfc3820.py +66 -0
- pyasn1_alt_modules/rfc3852.py +707 -0
- pyasn1_alt_modules/rfc3874.py +29 -0
- pyasn1_alt_modules/rfc4010.py +58 -0
- pyasn1_alt_modules/rfc4043.py +45 -0
- pyasn1_alt_modules/rfc4055.py +285 -0
- pyasn1_alt_modules/rfc4056.py +56 -0
- pyasn1_alt_modules/rfc4059.py +101 -0
- pyasn1_alt_modules/rfc4073.py +62 -0
- pyasn1_alt_modules/rfc4108.py +355 -0
- pyasn1_alt_modules/rfc4210.py +807 -0
- pyasn1_alt_modules/rfc4211.py +420 -0
- pyasn1_alt_modules/rfc4231.py +38 -0
- pyasn1_alt_modules/rfc4262.py +37 -0
- pyasn1_alt_modules/rfc4334.py +78 -0
- pyasn1_alt_modules/rfc4357.py +485 -0
- pyasn1_alt_modules/rfc4366.py +23 -0
- pyasn1_alt_modules/rfc4387.py +23 -0
- pyasn1_alt_modules/rfc4476.py +99 -0
- pyasn1_alt_modules/rfc4490.py +119 -0
- pyasn1_alt_modules/rfc4491.py +44 -0
- pyasn1_alt_modules/rfc4683.py +76 -0
- pyasn1_alt_modules/rfc4985.py +52 -0
- pyasn1_alt_modules/rfc4998.py +125 -0
- pyasn1_alt_modules/rfc5035.py +206 -0
- pyasn1_alt_modules/rfc5055.py +763 -0
- pyasn1_alt_modules/rfc5083.py +55 -0
- pyasn1_alt_modules/rfc5084.py +94 -0
- pyasn1_alt_modules/rfc5126.py +578 -0
- pyasn1_alt_modules/rfc5208.py +73 -0
- pyasn1_alt_modules/rfc5275.py +404 -0
- pyasn1_alt_modules/rfc5276.py +82 -0
- pyasn1_alt_modules/rfc5280.py +1666 -0
- pyasn1_alt_modules/rfc5480.py +190 -0
- pyasn1_alt_modules/rfc5544.py +127 -0
- pyasn1_alt_modules/rfc5636.py +117 -0
- pyasn1_alt_modules/rfc5639.py +49 -0
- pyasn1_alt_modules/rfc5649.py +33 -0
- pyasn1_alt_modules/rfc5652.py +763 -0
- pyasn1_alt_modules/rfc5697.py +64 -0
- pyasn1_alt_modules/rfc5698.py +159 -0
- pyasn1_alt_modules/rfc5751.py +127 -0
- pyasn1_alt_modules/rfc5752.py +52 -0
- pyasn1_alt_modules/rfc5753.py +163 -0
- pyasn1_alt_modules/rfc5755.py +400 -0
- pyasn1_alt_modules/rfc5913.py +46 -0
- pyasn1_alt_modules/rfc5914.py +119 -0
- pyasn1_alt_modules/rfc5915.py +32 -0
- pyasn1_alt_modules/rfc5916.py +39 -0
- pyasn1_alt_modules/rfc5917.py +59 -0
- pyasn1_alt_modules/rfc5924.py +19 -0
- pyasn1_alt_modules/rfc5934.py +786 -0
- pyasn1_alt_modules/rfc5940.py +62 -0
- pyasn1_alt_modules/rfc5958.py +100 -0
- pyasn1_alt_modules/rfc5990.py +238 -0
- pyasn1_alt_modules/rfc6010.py +92 -0
- pyasn1_alt_modules/rfc6019.py +46 -0
- pyasn1_alt_modules/rfc6031.py +469 -0
- pyasn1_alt_modules/rfc6032.py +71 -0
- pyasn1_alt_modules/rfc6066.py +25 -0
- pyasn1_alt_modules/rfc6120.py +46 -0
- pyasn1_alt_modules/rfc6170.py +17 -0
- pyasn1_alt_modules/rfc6187.py +22 -0
- pyasn1_alt_modules/rfc6210.py +45 -0
- pyasn1_alt_modules/rfc6211.py +75 -0
- pyasn1_alt_modules/rfc6402.py +643 -0
- pyasn1_alt_modules/rfc6482.py +77 -0
- pyasn1_alt_modules/rfc6484.py +17 -0
- pyasn1_alt_modules/rfc6486.py +70 -0
- pyasn1_alt_modules/rfc6487.py +22 -0
- pyasn1_alt_modules/rfc6492.py +41 -0
- pyasn1_alt_modules/rfc6493.py +24 -0
- pyasn1_alt_modules/rfc6494.py +23 -0
- pyasn1_alt_modules/rfc6664.py +151 -0
- pyasn1_alt_modules/rfc6955.py +112 -0
- pyasn1_alt_modules/rfc6960.py +234 -0
- pyasn1_alt_modules/rfc6962.py +52 -0
- pyasn1_alt_modules/rfc7030.py +70 -0
- pyasn1_alt_modules/rfc7191.py +267 -0
- pyasn1_alt_modules/rfc7229.py +29 -0
- pyasn1_alt_modules/rfc7292.py +359 -0
- pyasn1_alt_modules/rfc7296.py +32 -0
- pyasn1_alt_modules/rfc7508.py +92 -0
- pyasn1_alt_modules/rfc7585.py +53 -0
- pyasn1_alt_modules/rfc7633.py +40 -0
- pyasn1_alt_modules/rfc7693.py +66 -0
- pyasn1_alt_modules/rfc7773.py +54 -0
- pyasn1_alt_modules/rfc7836.py +65 -0
- pyasn1_alt_modules/rfc7894.py +100 -0
- pyasn1_alt_modules/rfc7906.py +739 -0
- pyasn1_alt_modules/rfc7914.py +55 -0
- pyasn1_alt_modules/rfc8017.py +159 -0
- pyasn1_alt_modules/rfc8018.py +269 -0
- pyasn1_alt_modules/rfc8103.py +36 -0
- pyasn1_alt_modules/rfc8209.py +20 -0
- pyasn1_alt_modules/rfc8226.py +151 -0
- pyasn1_alt_modules/rfc8358.py +54 -0
- pyasn1_alt_modules/rfc8360.py +46 -0
- pyasn1_alt_modules/rfc8398.py +55 -0
- pyasn1_alt_modules/rfc8410.py +43 -0
- pyasn1_alt_modules/rfc8418.py +36 -0
- pyasn1_alt_modules/rfc8419.py +70 -0
- pyasn1_alt_modules/rfc8479.py +48 -0
- pyasn1_alt_modules/rfc8494.py +80 -0
- pyasn1_alt_modules/rfc8520.py +66 -0
- pyasn1_alt_modules/rfc8619.py +45 -0
- pyasn1_alt_modules/rfc8649.py +42 -0
- pyasn1_alt_modules/rfc8692.py +79 -0
- pyasn1_alt_modules/rfc8696.py +108 -0
- pyasn1_alt_modules/rfc8702.py +109 -0
- pyasn1_alt_modules/rfc8708.py +43 -0
- pyasn1_alt_modules/rfc8737.py +36 -0
- pyasn1_alt_modules/rfc8769.py +21 -0
- pyasn1_alt_modules/rfc8894.py +52 -0
- pyasn1_alt_modules/rfc8951.py +42 -0
- pyasn1_alt_modules/rfc8954.py +238 -0
- pyasn1_alt_modules/rfc8994.py +52 -0
- pyasn1_alt_modules/rfc8995.py +39 -0
- pyasn1_alt_modules/rfc9044.py +80 -0
- pyasn1_alt_modules/rfc9092.py +35 -0
- pyasn1_alt_modules/rfc9118.py +82 -0
- pyasn1_alt_modules/rfc9174.py +55 -0
- pyasn1_alt_modules/rfc9189.py +74 -0
- pyasn1_alt_modules/rfc9215.py +228 -0
- pyasn1_alt_modules/rfc9286.py +78 -0
- pyasn1_alt_modules/rfc9289.py +22 -0
- pyasn1_alt_modules/rfc9310.py +46 -0
- pyasn1_alt_modules/rfc9323.py +129 -0
- pyasn1_alt_modules/rfc9336.py +20 -0
- pyasn1_alt_modules/rfc9337.py +74 -0
- pyasn1_alt_modules/rfc9345.py +36 -0
- pyasn1_alt_modules/rfc9385.py +22 -0
- pyasn1_alt_modules/rfc9399.py +59 -0
- pyasn1_alt_modules/rfc9480.py +731 -0
- pyasn1_alt_modules/rfc9481.py +224 -0
- pyasn1_alt_modules/rfc9509.py +24 -0
- pyasn1_alt_modules/rfc9548.py +23 -0
- pyasn1_alt_modules/rfc9579.py +89 -0
- pyasn1_alt_modules/rfc9582.py +107 -0
- pyasn1_alt_modules/rfc9598.py +52 -0
- pyasn1_alt_modules/rfc9608.py +35 -0
- pyasn1_alt_modules/rfc9629.py +100 -0
- pyasn1_alt_modules/rfc9654.py +241 -0
- pyasn1_alt_modules-0.4.5.dist-info/LICENSE.txt +25 -0
- pyasn1_alt_modules-0.4.5.dist-info/METADATA +34 -0
- pyasn1_alt_modules-0.4.5.dist-info/RECORD +195 -0
- pyasn1_alt_modules-0.4.5.dist-info/WHEEL +5 -0
- pyasn1_alt_modules-0.4.5.dist-info/top_level.txt +1 -0
- pyasn1_alt_modules-0.4.5.dist-info/zip-safe +1 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
#
|
|
3
|
+
# This file is part of pyasn1-alt-modules software.
|
|
4
|
+
#
|
|
5
|
+
# Created by Stanisław Pitucha with asn1ate tool.
|
|
6
|
+
# Modified by Russ Housley to import from RFC 5280 instead of RFC 3280, to
|
|
7
|
+
# import from RFC 5252 instead of RFC 3852, and to include an opentype map
|
|
8
|
+
# for AttributeTypeAndValue.
|
|
9
|
+
#
|
|
10
|
+
# Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
|
|
11
|
+
# Copyright (c) 2021-2024, Vigil Security, LLC
|
|
12
|
+
# License: http://vigilsec.com/pyasn1-alt-modules-license.txt
|
|
13
|
+
#
|
|
14
|
+
# Internet X.509 Public Key Infrastructure Certificate Request
|
|
15
|
+
# Message Format (CRMF)
|
|
16
|
+
#
|
|
17
|
+
# ASN.1 source from:
|
|
18
|
+
# http://www.ietf.org/rfc/rfc4211.txt
|
|
19
|
+
#
|
|
20
|
+
from pyasn1.type import char
|
|
21
|
+
from pyasn1.type import constraint
|
|
22
|
+
from pyasn1.type import namedtype
|
|
23
|
+
from pyasn1.type import namedval
|
|
24
|
+
from pyasn1.type import opentype
|
|
25
|
+
from pyasn1.type import tag
|
|
26
|
+
from pyasn1.type import univ
|
|
27
|
+
|
|
28
|
+
from pyasn1_alt_modules import rfc5280
|
|
29
|
+
from pyasn1_alt_modules import rfc5652
|
|
30
|
+
from pyasn1_alt_modules import opentypemap
|
|
31
|
+
|
|
32
|
+
cmsAttributesMap = opentypemap.get('cmsAttributesMap')
|
|
33
|
+
|
|
34
|
+
MAX = float('inf')
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _buildOid(*components):
|
|
38
|
+
output = []
|
|
39
|
+
for x in tuple(components):
|
|
40
|
+
if isinstance(x, univ.ObjectIdentifier):
|
|
41
|
+
output.extend(list(x))
|
|
42
|
+
else:
|
|
43
|
+
output.append(int(x))
|
|
44
|
+
|
|
45
|
+
return univ.ObjectIdentifier(output)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
id_pkix = _buildOid(1, 3, 6, 1, 5, 5, 7)
|
|
49
|
+
|
|
50
|
+
id_pkip = _buildOid(id_pkix, 5)
|
|
51
|
+
|
|
52
|
+
id_regCtrl = _buildOid(id_pkip, 1)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class SinglePubInfo(univ.Sequence):
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
SinglePubInfo.componentType = namedtype.NamedTypes(
|
|
60
|
+
namedtype.NamedType('pubMethod', univ.Integer(
|
|
61
|
+
namedValues=namedval.NamedValues(('dontCare', 0), ('x500', 1), ('web', 2), ('ldap', 3)))),
|
|
62
|
+
namedtype.OptionalNamedType('pubLocation', rfc5280.GeneralName())
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class UTF8Pairs(char.UTF8String):
|
|
67
|
+
pass
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class PKMACValue(univ.Sequence):
|
|
71
|
+
pass
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
PKMACValue.componentType = namedtype.NamedTypes(
|
|
75
|
+
namedtype.NamedType('algId', rfc5280.AlgorithmIdentifier()),
|
|
76
|
+
namedtype.NamedType('value', univ.BitString())
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class POPOSigningKeyInput(univ.Sequence):
|
|
81
|
+
pass
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
POPOSigningKeyInput.componentType = namedtype.NamedTypes(
|
|
85
|
+
namedtype.NamedType(
|
|
86
|
+
'authInfo', univ.Choice(
|
|
87
|
+
componentType=namedtype.NamedTypes(
|
|
88
|
+
namedtype.NamedType(
|
|
89
|
+
'sender', rfc5280.GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))
|
|
90
|
+
),
|
|
91
|
+
namedtype.NamedType(
|
|
92
|
+
'publicKeyMAC', PKMACValue()
|
|
93
|
+
)
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
),
|
|
97
|
+
namedtype.NamedType('publicKey', rfc5280.SubjectPublicKeyInfo())
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class POPOSigningKey(univ.Sequence):
|
|
102
|
+
pass
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
POPOSigningKey.componentType = namedtype.NamedTypes(
|
|
106
|
+
namedtype.OptionalNamedType('poposkInput', POPOSigningKeyInput().subtype(
|
|
107
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
|
108
|
+
namedtype.NamedType('algorithmIdentifier', rfc5280.AlgorithmIdentifier()),
|
|
109
|
+
namedtype.NamedType('signature', univ.BitString())
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class Attributes(univ.SetOf):
|
|
114
|
+
pass
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
Attributes.componentType = rfc5280.Attribute()
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class PrivateKeyInfo(univ.Sequence):
|
|
121
|
+
pass
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
PrivateKeyInfo.componentType = namedtype.NamedTypes(
|
|
125
|
+
namedtype.NamedType('version', univ.Integer()),
|
|
126
|
+
namedtype.NamedType('privateKeyAlgorithm', rfc5280.AlgorithmIdentifier()),
|
|
127
|
+
namedtype.NamedType('privateKey', univ.OctetString()),
|
|
128
|
+
namedtype.OptionalNamedType('attributes',
|
|
129
|
+
Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class EncryptedValue(univ.Sequence):
|
|
134
|
+
pass
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
EncryptedValue.componentType = namedtype.NamedTypes(
|
|
138
|
+
namedtype.OptionalNamedType('intendedAlg', rfc5280.AlgorithmIdentifier().subtype(
|
|
139
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
|
140
|
+
namedtype.OptionalNamedType('symmAlg', rfc5280.AlgorithmIdentifier().subtype(
|
|
141
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
|
142
|
+
namedtype.OptionalNamedType('encSymmKey', univ.BitString().subtype(
|
|
143
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
|
144
|
+
namedtype.OptionalNamedType('keyAlg', rfc5280.AlgorithmIdentifier().subtype(
|
|
145
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
|
146
|
+
namedtype.OptionalNamedType('valueHint', univ.OctetString().subtype(
|
|
147
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
|
148
|
+
namedtype.NamedType('encValue', univ.BitString())
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class EncryptedKey(univ.Choice):
|
|
153
|
+
pass
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
EncryptedKey.componentType = namedtype.NamedTypes(
|
|
157
|
+
namedtype.NamedType('encryptedValue', EncryptedValue()),
|
|
158
|
+
namedtype.NamedType('envelopedData', rfc5652.EnvelopedData().subtype(
|
|
159
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
class KeyGenParameters(univ.OctetString):
|
|
164
|
+
pass
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class PKIArchiveOptions(univ.Choice):
|
|
168
|
+
pass
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
PKIArchiveOptions.componentType = namedtype.NamedTypes(
|
|
172
|
+
namedtype.NamedType('encryptedPrivKey',
|
|
173
|
+
EncryptedKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
|
174
|
+
namedtype.NamedType('keyGenParameters',
|
|
175
|
+
KeyGenParameters().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
|
176
|
+
namedtype.NamedType('archiveRemGenPrivKey',
|
|
177
|
+
univ.Boolean().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
id_regCtrl_authenticator = _buildOid(id_regCtrl, 2)
|
|
181
|
+
|
|
182
|
+
id_regInfo = _buildOid(id_pkip, 2)
|
|
183
|
+
|
|
184
|
+
id_regInfo_certReq = _buildOid(id_regInfo, 2)
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class ProtocolEncrKey(rfc5280.SubjectPublicKeyInfo):
|
|
188
|
+
pass
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class Authenticator(char.UTF8String):
|
|
192
|
+
pass
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
class SubsequentMessage(univ.Integer):
|
|
196
|
+
pass
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
SubsequentMessage.namedValues = namedval.NamedValues(
|
|
200
|
+
('encrCert', 0),
|
|
201
|
+
('challengeResp', 1)
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class AttributeTypeAndValue(univ.Sequence):
|
|
206
|
+
pass
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
AttributeTypeAndValue.componentType = namedtype.NamedTypes(
|
|
210
|
+
namedtype.NamedType('type', univ.ObjectIdentifier()),
|
|
211
|
+
namedtype.NamedType('value', univ.Any(),
|
|
212
|
+
openType=opentype.OpenType('type', cmsAttributesMap))
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
class POPOPrivKey(univ.Choice):
|
|
217
|
+
pass
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
POPOPrivKey.componentType = namedtype.NamedTypes(
|
|
221
|
+
namedtype.NamedType('thisMessage',
|
|
222
|
+
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
|
223
|
+
namedtype.NamedType('subsequentMessage',
|
|
224
|
+
SubsequentMessage().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
|
225
|
+
namedtype.NamedType('dhMAC',
|
|
226
|
+
univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
|
227
|
+
namedtype.NamedType('agreeMAC',
|
|
228
|
+
PKMACValue().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
|
229
|
+
namedtype.NamedType('encryptedKey', rfc5652.EnvelopedData().subtype(
|
|
230
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class ProofOfPossession(univ.Choice):
|
|
235
|
+
pass
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
ProofOfPossession.componentType = namedtype.NamedTypes(
|
|
239
|
+
namedtype.NamedType('raVerified',
|
|
240
|
+
univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
|
241
|
+
namedtype.NamedType('signature', POPOSigningKey().subtype(
|
|
242
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
|
|
243
|
+
namedtype.NamedType('keyEncipherment',
|
|
244
|
+
POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
|
|
245
|
+
namedtype.NamedType('keyAgreement',
|
|
246
|
+
POPOPrivKey().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
class OptionalValidity(univ.Sequence):
|
|
251
|
+
pass
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
OptionalValidity.componentType = namedtype.NamedTypes(
|
|
255
|
+
namedtype.OptionalNamedType('notBefore', rfc5280.Time().subtype(
|
|
256
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
|
257
|
+
namedtype.OptionalNamedType('notAfter', rfc5280.Time().subtype(
|
|
258
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class CertTemplate(univ.Sequence):
|
|
263
|
+
pass
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
CertTemplate.componentType = namedtype.NamedTypes(
|
|
267
|
+
namedtype.OptionalNamedType('version', rfc5280.Version().subtype(
|
|
268
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
|
269
|
+
namedtype.OptionalNamedType('serialNumber', univ.Integer().subtype(
|
|
270
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
|
271
|
+
namedtype.OptionalNamedType('signingAlg', rfc5280.AlgorithmIdentifier().subtype(
|
|
272
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
|
273
|
+
namedtype.OptionalNamedType('issuer', rfc5280.Name().subtype(
|
|
274
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
|
|
275
|
+
namedtype.OptionalNamedType('validity', OptionalValidity().subtype(
|
|
276
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
|
|
277
|
+
namedtype.OptionalNamedType('subject', rfc5280.Name().subtype(
|
|
278
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
|
|
279
|
+
namedtype.OptionalNamedType('publicKey', rfc5280.SubjectPublicKeyInfo().subtype(
|
|
280
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
|
281
|
+
namedtype.OptionalNamedType('issuerUID', rfc5280.UniqueIdentifier().subtype(
|
|
282
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
|
283
|
+
namedtype.OptionalNamedType('subjectUID', rfc5280.UniqueIdentifier().subtype(
|
|
284
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))),
|
|
285
|
+
namedtype.OptionalNamedType('extensions', rfc5280.Extensions().subtype(
|
|
286
|
+
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 9)))
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
class Controls(univ.SequenceOf):
|
|
291
|
+
pass
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
Controls.componentType = AttributeTypeAndValue()
|
|
295
|
+
Controls.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
class CertRequest(univ.Sequence):
|
|
299
|
+
pass
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
CertRequest.componentType = namedtype.NamedTypes(
|
|
303
|
+
namedtype.NamedType('certReqId', univ.Integer()),
|
|
304
|
+
namedtype.NamedType('certTemplate', CertTemplate()),
|
|
305
|
+
namedtype.OptionalNamedType('controls', Controls())
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
class CertReqMsg(univ.Sequence):
|
|
310
|
+
pass
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
CertReqMsg.componentType = namedtype.NamedTypes(
|
|
314
|
+
namedtype.NamedType('certReq', CertRequest()),
|
|
315
|
+
namedtype.OptionalNamedType('popo', ProofOfPossession()),
|
|
316
|
+
namedtype.OptionalNamedType('regInfo', univ.SequenceOf(componentType=AttributeTypeAndValue()))
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
class CertReqMessages(univ.SequenceOf):
|
|
321
|
+
pass
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
CertReqMessages.componentType = CertReqMsg()
|
|
325
|
+
CertReqMessages.sizeSpec = constraint.ValueSizeConstraint(1, MAX)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
class CertReq(CertRequest):
|
|
329
|
+
pass
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
id_regCtrl_pkiPublicationInfo = _buildOid(id_regCtrl, 3)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
class CertId(univ.Sequence):
|
|
336
|
+
pass
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
CertId.componentType = namedtype.NamedTypes(
|
|
340
|
+
namedtype.NamedType('issuer', rfc5280.GeneralName()),
|
|
341
|
+
namedtype.NamedType('serialNumber', univ.Integer())
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
class OldCertId(CertId):
|
|
346
|
+
pass
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
class PKIPublicationInfo(univ.Sequence):
|
|
350
|
+
pass
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
PKIPublicationInfo.componentType = namedtype.NamedTypes(
|
|
354
|
+
namedtype.NamedType('action',
|
|
355
|
+
univ.Integer(namedValues=namedval.NamedValues(('dontPublish', 0), ('pleasePublish', 1)))),
|
|
356
|
+
namedtype.OptionalNamedType('pubInfos', univ.SequenceOf(componentType=SinglePubInfo()))
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
class EncKeyWithID(univ.Sequence):
|
|
361
|
+
pass
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
EncKeyWithID.componentType = namedtype.NamedTypes(
|
|
365
|
+
namedtype.NamedType('privateKey', PrivateKeyInfo()),
|
|
366
|
+
namedtype.OptionalNamedType(
|
|
367
|
+
'identifier', univ.Choice(
|
|
368
|
+
componentType=namedtype.NamedTypes(
|
|
369
|
+
namedtype.NamedType('string', char.UTF8String()),
|
|
370
|
+
namedtype.NamedType('generalName', rfc5280.GeneralName())
|
|
371
|
+
)
|
|
372
|
+
)
|
|
373
|
+
)
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
id_regCtrl_protocolEncrKey = _buildOid(id_regCtrl, 6)
|
|
377
|
+
|
|
378
|
+
id_regCtrl_oldCertID = _buildOid(id_regCtrl, 5)
|
|
379
|
+
|
|
380
|
+
id_smime = _buildOid(1, 2, 840, 113549, 1, 9, 16)
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
class PBMParameter(univ.Sequence):
|
|
384
|
+
pass
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
PBMParameter.componentType = namedtype.NamedTypes(
|
|
388
|
+
namedtype.NamedType('salt', univ.OctetString()),
|
|
389
|
+
namedtype.NamedType('owf', rfc5280.AlgorithmIdentifier()),
|
|
390
|
+
namedtype.NamedType('iterationCount', univ.Integer()),
|
|
391
|
+
namedtype.NamedType('mac', rfc5280.AlgorithmIdentifier())
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
id_regCtrl_regToken = _buildOid(id_regCtrl, 1)
|
|
395
|
+
|
|
396
|
+
id_regCtrl_pkiArchiveOptions = _buildOid(id_regCtrl, 4)
|
|
397
|
+
|
|
398
|
+
id_regInfo_utf8Pairs = _buildOid(id_regInfo, 1)
|
|
399
|
+
|
|
400
|
+
id_ct = _buildOid(id_smime, 1)
|
|
401
|
+
|
|
402
|
+
id_ct_encKeyWithID = _buildOid(id_ct, 21)
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
class RegToken(char.UTF8String):
|
|
406
|
+
pass
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
# Update the CMS Attribute Map
|
|
410
|
+
|
|
411
|
+
_cmsAttributesMapUpdate = {
|
|
412
|
+
id_regCtrl_regToken: RegToken(),
|
|
413
|
+
id_regCtrl_authenticator: Authenticator(),
|
|
414
|
+
id_regCtrl_pkiPublicationInfo: PKIPublicationInfo(),
|
|
415
|
+
id_regCtrl_pkiArchiveOptions: PKIArchiveOptions(),
|
|
416
|
+
id_regCtrl_oldCertID: OldCertId(),
|
|
417
|
+
id_regCtrl_protocolEncrKey: rfc5280.SubjectPublicKeyInfo(),
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
cmsAttributesMap.update(_cmsAttributesMapUpdate)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is part of pyasn1-alt-modules software.
|
|
3
|
+
#
|
|
4
|
+
# Created by Russ Housley.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2020-2024, Vigil Security, LLC
|
|
7
|
+
# License: http://vigilsec.com/pyasn1-alt-modules-license.txt
|
|
8
|
+
#
|
|
9
|
+
# Identifiers for HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384,
|
|
10
|
+
# and HMAC-SHA-512
|
|
11
|
+
#
|
|
12
|
+
# ASN.1 source from:
|
|
13
|
+
# https://www.rfc-editor.org/rfc/rfc4231.txt
|
|
14
|
+
# https://www.rfc-editor.org/rfc/rfc8018.txt
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
from pyasn1_alt_modules import rfc8018
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# The HMAC object identifiers are already defined in RFC 8018
|
|
21
|
+
|
|
22
|
+
id_hmacWithSHA224 = rfc8018.id_hmacWithSHA224
|
|
23
|
+
|
|
24
|
+
id_hmacWithSHA256 = rfc8018.id_hmacWithSHA256
|
|
25
|
+
|
|
26
|
+
id_hmacWithSHA384 = rfc8018.id_hmacWithSHA384
|
|
27
|
+
|
|
28
|
+
id_hmacWithSHA512 = rfc8018.id_hmacWithSHA512
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# The Algorithm Identifiers Map is updated by importing rfc8018.
|
|
32
|
+
# To save looking it up, the map is updated with these entries:
|
|
33
|
+
# _algorithmIdentifierMapUpdate = {
|
|
34
|
+
# id_hmacWithSHA224: univ.Null(),
|
|
35
|
+
# id_hmacWithSHA256: univ.Null(),
|
|
36
|
+
# id_hmacWithSHA384: univ.Null(),
|
|
37
|
+
# id_hmacWithSHA512: univ.Null(),
|
|
38
|
+
# }
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is part of pyasn1-alt-modules software.
|
|
3
|
+
#
|
|
4
|
+
# Created by Russ Housley.
|
|
5
|
+
# Modified by Russ Housley to include the opentypemap manager.
|
|
6
|
+
#
|
|
7
|
+
# Copyright (c) 2021-2024, Vigil Security, LLC
|
|
8
|
+
# License: http://vigilsec.com/pyasn1-alt-modules-license.txt
|
|
9
|
+
#
|
|
10
|
+
# S/MIME Capabilities Certificate Extension
|
|
11
|
+
#
|
|
12
|
+
# ASN.1 source from:
|
|
13
|
+
# https://www.rfc-editor.org/rfc/rfc4262.txt
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
from pyasn1_alt_modules import rfc5751
|
|
17
|
+
from pyasn1_alt_modules import opentypemap
|
|
18
|
+
|
|
19
|
+
certificateExtensionsMap = opentypemap.get('certificateExtensionsMap')
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Imports from RFC 5751
|
|
23
|
+
|
|
24
|
+
smimeCapabilities = rfc5751.smimeCapabilities
|
|
25
|
+
|
|
26
|
+
SMIMECapabilities = rfc5751.SMIMECapabilities
|
|
27
|
+
|
|
28
|
+
SMIMECapability = rfc5751.SMIMECapability
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# Update the Certificate Extensions Map
|
|
32
|
+
|
|
33
|
+
_certificateExtensionsMap = {
|
|
34
|
+
smimeCapabilities: SMIMECapabilities(),
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
certificateExtensionsMap.update(_certificateExtensionsMap)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is part of pyasn1-alt-modules software.
|
|
3
|
+
#
|
|
4
|
+
# Created by Russ Housley with assistance from asn1ate v.0.6.0.
|
|
5
|
+
# Modified by Russ Housley to include the opentypemap manager.
|
|
6
|
+
#
|
|
7
|
+
# Copyright (c) 2019-2024, Vigil Security, LLC
|
|
8
|
+
# License: http://vigilsec.com/pyasn1-alt-modules-license.txt
|
|
9
|
+
#
|
|
10
|
+
# Certificate Extensions and Attributes Supporting Authentication
|
|
11
|
+
# in PPP and Wireless LAN Networks
|
|
12
|
+
#
|
|
13
|
+
# ASN.1 source from:
|
|
14
|
+
# https://www.rfc-editor.org/rfc/rfc4334.txt
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
from pyasn1.type import constraint
|
|
18
|
+
from pyasn1.type import univ
|
|
19
|
+
|
|
20
|
+
from pyasn1_alt_modules import opentypemap
|
|
21
|
+
|
|
22
|
+
certificateAttributesMap = opentypemap.get('certificateAttributesMap')
|
|
23
|
+
|
|
24
|
+
certificateExtensionsMap = opentypemap.get('certificateExtensionsMap')
|
|
25
|
+
|
|
26
|
+
MAX = float('inf')
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# OID Arcs
|
|
30
|
+
|
|
31
|
+
id_pe = univ.ObjectIdentifier('1.3.6.1.5.5.7.1')
|
|
32
|
+
|
|
33
|
+
id_kp = univ.ObjectIdentifier('1.3.6.1.5.5.7.3')
|
|
34
|
+
|
|
35
|
+
id_aca = univ.ObjectIdentifier('1.3.6.1.5.5.7.10')
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# Extended Key Usage Values
|
|
39
|
+
|
|
40
|
+
id_kp_eapOverPPP = id_kp + (13, )
|
|
41
|
+
|
|
42
|
+
id_kp_eapOverLAN = id_kp + (14, )
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Wireless LAN SSID Extension
|
|
46
|
+
|
|
47
|
+
id_pe_wlanSSID = id_pe + (13, )
|
|
48
|
+
|
|
49
|
+
class SSID(univ.OctetString):
|
|
50
|
+
constraint.ValueSizeConstraint(1, 32)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class SSIDList(univ.SequenceOf):
|
|
54
|
+
componentType = SSID()
|
|
55
|
+
subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# Wireless LAN SSID Attribute Certificate Attribute
|
|
59
|
+
|
|
60
|
+
id_aca_wlanSSID = id_aca + (7, )
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# Update the Certificate Extensions Map
|
|
64
|
+
|
|
65
|
+
_certificateExtensionsMap = {
|
|
66
|
+
id_pe_wlanSSID: SSIDList(),
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
certificateExtensionsMap.update(_certificateExtensionsMap)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# Update the Certificate Attributes Map
|
|
73
|
+
|
|
74
|
+
_certificateAttributesMapUpdate = {
|
|
75
|
+
id_aca_wlanSSID: SSIDList(),
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
certificateAttributesMap.update(_certificateAttributesMapUpdate)
|