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.

Files changed (195) hide show
  1. pyasn1_alt_modules/__init__.py +2 -0
  2. pyasn1_alt_modules/opentypemap.py +19 -0
  3. pyasn1_alt_modules/pem.py +66 -0
  4. pyasn1_alt_modules/rfc1155.py +97 -0
  5. pyasn1_alt_modules/rfc1157.py +127 -0
  6. pyasn1_alt_modules/rfc1901.py +23 -0
  7. pyasn1_alt_modules/rfc1902.py +130 -0
  8. pyasn1_alt_modules/rfc1905.py +136 -0
  9. pyasn1_alt_modules/rfc2040.py +50 -0
  10. pyasn1_alt_modules/rfc2251.py +564 -0
  11. pyasn1_alt_modules/rfc2314.py +68 -0
  12. pyasn1_alt_modules/rfc2315.py +325 -0
  13. pyasn1_alt_modules/rfc2437.py +70 -0
  14. pyasn1_alt_modules/rfc2459.py +1340 -0
  15. pyasn1_alt_modules/rfc2511.py +303 -0
  16. pyasn1_alt_modules/rfc2528.py +34 -0
  17. pyasn1_alt_modules/rfc2560.py +226 -0
  18. pyasn1_alt_modules/rfc2631.py +37 -0
  19. pyasn1_alt_modules/rfc2634.py +342 -0
  20. pyasn1_alt_modules/rfc2743.py +60 -0
  21. pyasn1_alt_modules/rfc2876.py +61 -0
  22. pyasn1_alt_modules/rfc2898.py +72 -0
  23. pyasn1_alt_modules/rfc2985.py +593 -0
  24. pyasn1_alt_modules/rfc2986.py +76 -0
  25. pyasn1_alt_modules/rfc3058.py +48 -0
  26. pyasn1_alt_modules/rfc3114.py +80 -0
  27. pyasn1_alt_modules/rfc3125.py +469 -0
  28. pyasn1_alt_modules/rfc3161.py +142 -0
  29. pyasn1_alt_modules/rfc3217.py +42 -0
  30. pyasn1_alt_modules/rfc3274.py +62 -0
  31. pyasn1_alt_modules/rfc3279.py +264 -0
  32. pyasn1_alt_modules/rfc3280.py +1544 -0
  33. pyasn1_alt_modules/rfc3281.py +332 -0
  34. pyasn1_alt_modules/rfc3370.py +142 -0
  35. pyasn1_alt_modules/rfc3412.py +54 -0
  36. pyasn1_alt_modules/rfc3414.py +29 -0
  37. pyasn1_alt_modules/rfc3447.py +46 -0
  38. pyasn1_alt_modules/rfc3537.py +44 -0
  39. pyasn1_alt_modules/rfc3546.py +23 -0
  40. pyasn1_alt_modules/rfc3560.py +74 -0
  41. pyasn1_alt_modules/rfc3565.py +59 -0
  42. pyasn1_alt_modules/rfc3657.py +69 -0
  43. pyasn1_alt_modules/rfc3709.py +230 -0
  44. pyasn1_alt_modules/rfc3739.py +207 -0
  45. pyasn1_alt_modules/rfc3770.py +77 -0
  46. pyasn1_alt_modules/rfc3779.py +139 -0
  47. pyasn1_alt_modules/rfc3820.py +66 -0
  48. pyasn1_alt_modules/rfc3852.py +707 -0
  49. pyasn1_alt_modules/rfc3874.py +29 -0
  50. pyasn1_alt_modules/rfc4010.py +58 -0
  51. pyasn1_alt_modules/rfc4043.py +45 -0
  52. pyasn1_alt_modules/rfc4055.py +285 -0
  53. pyasn1_alt_modules/rfc4056.py +56 -0
  54. pyasn1_alt_modules/rfc4059.py +101 -0
  55. pyasn1_alt_modules/rfc4073.py +62 -0
  56. pyasn1_alt_modules/rfc4108.py +355 -0
  57. pyasn1_alt_modules/rfc4210.py +807 -0
  58. pyasn1_alt_modules/rfc4211.py +420 -0
  59. pyasn1_alt_modules/rfc4231.py +38 -0
  60. pyasn1_alt_modules/rfc4262.py +37 -0
  61. pyasn1_alt_modules/rfc4334.py +78 -0
  62. pyasn1_alt_modules/rfc4357.py +485 -0
  63. pyasn1_alt_modules/rfc4366.py +23 -0
  64. pyasn1_alt_modules/rfc4387.py +23 -0
  65. pyasn1_alt_modules/rfc4476.py +99 -0
  66. pyasn1_alt_modules/rfc4490.py +119 -0
  67. pyasn1_alt_modules/rfc4491.py +44 -0
  68. pyasn1_alt_modules/rfc4683.py +76 -0
  69. pyasn1_alt_modules/rfc4985.py +52 -0
  70. pyasn1_alt_modules/rfc4998.py +125 -0
  71. pyasn1_alt_modules/rfc5035.py +206 -0
  72. pyasn1_alt_modules/rfc5055.py +763 -0
  73. pyasn1_alt_modules/rfc5083.py +55 -0
  74. pyasn1_alt_modules/rfc5084.py +94 -0
  75. pyasn1_alt_modules/rfc5126.py +578 -0
  76. pyasn1_alt_modules/rfc5208.py +73 -0
  77. pyasn1_alt_modules/rfc5275.py +404 -0
  78. pyasn1_alt_modules/rfc5276.py +82 -0
  79. pyasn1_alt_modules/rfc5280.py +1666 -0
  80. pyasn1_alt_modules/rfc5480.py +190 -0
  81. pyasn1_alt_modules/rfc5544.py +127 -0
  82. pyasn1_alt_modules/rfc5636.py +117 -0
  83. pyasn1_alt_modules/rfc5639.py +49 -0
  84. pyasn1_alt_modules/rfc5649.py +33 -0
  85. pyasn1_alt_modules/rfc5652.py +763 -0
  86. pyasn1_alt_modules/rfc5697.py +64 -0
  87. pyasn1_alt_modules/rfc5698.py +159 -0
  88. pyasn1_alt_modules/rfc5751.py +127 -0
  89. pyasn1_alt_modules/rfc5752.py +52 -0
  90. pyasn1_alt_modules/rfc5753.py +163 -0
  91. pyasn1_alt_modules/rfc5755.py +400 -0
  92. pyasn1_alt_modules/rfc5913.py +46 -0
  93. pyasn1_alt_modules/rfc5914.py +119 -0
  94. pyasn1_alt_modules/rfc5915.py +32 -0
  95. pyasn1_alt_modules/rfc5916.py +39 -0
  96. pyasn1_alt_modules/rfc5917.py +59 -0
  97. pyasn1_alt_modules/rfc5924.py +19 -0
  98. pyasn1_alt_modules/rfc5934.py +786 -0
  99. pyasn1_alt_modules/rfc5940.py +62 -0
  100. pyasn1_alt_modules/rfc5958.py +100 -0
  101. pyasn1_alt_modules/rfc5990.py +238 -0
  102. pyasn1_alt_modules/rfc6010.py +92 -0
  103. pyasn1_alt_modules/rfc6019.py +46 -0
  104. pyasn1_alt_modules/rfc6031.py +469 -0
  105. pyasn1_alt_modules/rfc6032.py +71 -0
  106. pyasn1_alt_modules/rfc6066.py +25 -0
  107. pyasn1_alt_modules/rfc6120.py +46 -0
  108. pyasn1_alt_modules/rfc6170.py +17 -0
  109. pyasn1_alt_modules/rfc6187.py +22 -0
  110. pyasn1_alt_modules/rfc6210.py +45 -0
  111. pyasn1_alt_modules/rfc6211.py +75 -0
  112. pyasn1_alt_modules/rfc6402.py +643 -0
  113. pyasn1_alt_modules/rfc6482.py +77 -0
  114. pyasn1_alt_modules/rfc6484.py +17 -0
  115. pyasn1_alt_modules/rfc6486.py +70 -0
  116. pyasn1_alt_modules/rfc6487.py +22 -0
  117. pyasn1_alt_modules/rfc6492.py +41 -0
  118. pyasn1_alt_modules/rfc6493.py +24 -0
  119. pyasn1_alt_modules/rfc6494.py +23 -0
  120. pyasn1_alt_modules/rfc6664.py +151 -0
  121. pyasn1_alt_modules/rfc6955.py +112 -0
  122. pyasn1_alt_modules/rfc6960.py +234 -0
  123. pyasn1_alt_modules/rfc6962.py +52 -0
  124. pyasn1_alt_modules/rfc7030.py +70 -0
  125. pyasn1_alt_modules/rfc7191.py +267 -0
  126. pyasn1_alt_modules/rfc7229.py +29 -0
  127. pyasn1_alt_modules/rfc7292.py +359 -0
  128. pyasn1_alt_modules/rfc7296.py +32 -0
  129. pyasn1_alt_modules/rfc7508.py +92 -0
  130. pyasn1_alt_modules/rfc7585.py +53 -0
  131. pyasn1_alt_modules/rfc7633.py +40 -0
  132. pyasn1_alt_modules/rfc7693.py +66 -0
  133. pyasn1_alt_modules/rfc7773.py +54 -0
  134. pyasn1_alt_modules/rfc7836.py +65 -0
  135. pyasn1_alt_modules/rfc7894.py +100 -0
  136. pyasn1_alt_modules/rfc7906.py +739 -0
  137. pyasn1_alt_modules/rfc7914.py +55 -0
  138. pyasn1_alt_modules/rfc8017.py +159 -0
  139. pyasn1_alt_modules/rfc8018.py +269 -0
  140. pyasn1_alt_modules/rfc8103.py +36 -0
  141. pyasn1_alt_modules/rfc8209.py +20 -0
  142. pyasn1_alt_modules/rfc8226.py +151 -0
  143. pyasn1_alt_modules/rfc8358.py +54 -0
  144. pyasn1_alt_modules/rfc8360.py +46 -0
  145. pyasn1_alt_modules/rfc8398.py +55 -0
  146. pyasn1_alt_modules/rfc8410.py +43 -0
  147. pyasn1_alt_modules/rfc8418.py +36 -0
  148. pyasn1_alt_modules/rfc8419.py +70 -0
  149. pyasn1_alt_modules/rfc8479.py +48 -0
  150. pyasn1_alt_modules/rfc8494.py +80 -0
  151. pyasn1_alt_modules/rfc8520.py +66 -0
  152. pyasn1_alt_modules/rfc8619.py +45 -0
  153. pyasn1_alt_modules/rfc8649.py +42 -0
  154. pyasn1_alt_modules/rfc8692.py +79 -0
  155. pyasn1_alt_modules/rfc8696.py +108 -0
  156. pyasn1_alt_modules/rfc8702.py +109 -0
  157. pyasn1_alt_modules/rfc8708.py +43 -0
  158. pyasn1_alt_modules/rfc8737.py +36 -0
  159. pyasn1_alt_modules/rfc8769.py +21 -0
  160. pyasn1_alt_modules/rfc8894.py +52 -0
  161. pyasn1_alt_modules/rfc8951.py +42 -0
  162. pyasn1_alt_modules/rfc8954.py +238 -0
  163. pyasn1_alt_modules/rfc8994.py +52 -0
  164. pyasn1_alt_modules/rfc8995.py +39 -0
  165. pyasn1_alt_modules/rfc9044.py +80 -0
  166. pyasn1_alt_modules/rfc9092.py +35 -0
  167. pyasn1_alt_modules/rfc9118.py +82 -0
  168. pyasn1_alt_modules/rfc9174.py +55 -0
  169. pyasn1_alt_modules/rfc9189.py +74 -0
  170. pyasn1_alt_modules/rfc9215.py +228 -0
  171. pyasn1_alt_modules/rfc9286.py +78 -0
  172. pyasn1_alt_modules/rfc9289.py +22 -0
  173. pyasn1_alt_modules/rfc9310.py +46 -0
  174. pyasn1_alt_modules/rfc9323.py +129 -0
  175. pyasn1_alt_modules/rfc9336.py +20 -0
  176. pyasn1_alt_modules/rfc9337.py +74 -0
  177. pyasn1_alt_modules/rfc9345.py +36 -0
  178. pyasn1_alt_modules/rfc9385.py +22 -0
  179. pyasn1_alt_modules/rfc9399.py +59 -0
  180. pyasn1_alt_modules/rfc9480.py +731 -0
  181. pyasn1_alt_modules/rfc9481.py +224 -0
  182. pyasn1_alt_modules/rfc9509.py +24 -0
  183. pyasn1_alt_modules/rfc9548.py +23 -0
  184. pyasn1_alt_modules/rfc9579.py +89 -0
  185. pyasn1_alt_modules/rfc9582.py +107 -0
  186. pyasn1_alt_modules/rfc9598.py +52 -0
  187. pyasn1_alt_modules/rfc9608.py +35 -0
  188. pyasn1_alt_modules/rfc9629.py +100 -0
  189. pyasn1_alt_modules/rfc9654.py +241 -0
  190. pyasn1_alt_modules-0.4.5.dist-info/LICENSE.txt +25 -0
  191. pyasn1_alt_modules-0.4.5.dist-info/METADATA +34 -0
  192. pyasn1_alt_modules-0.4.5.dist-info/RECORD +195 -0
  193. pyasn1_alt_modules-0.4.5.dist-info/WHEEL +5 -0
  194. pyasn1_alt_modules-0.4.5.dist-info/top_level.txt +1 -0
  195. 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)