pyasn1-alt-modules 0.4.2__py2.py3-none-any.whl → 0.4.3__py2.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 (190) hide show
  1. pyasn1_alt_modules/__init__.py +1 -1
  2. pyasn1_alt_modules/opentypemap.py +1 -1
  3. pyasn1_alt_modules/pem.py +1 -1
  4. pyasn1_alt_modules/rfc1155.py +1 -1
  5. pyasn1_alt_modules/rfc1157.py +1 -1
  6. pyasn1_alt_modules/rfc1901.py +1 -1
  7. pyasn1_alt_modules/rfc1902.py +1 -1
  8. pyasn1_alt_modules/rfc1905.py +1 -1
  9. pyasn1_alt_modules/rfc2040.py +1 -1
  10. pyasn1_alt_modules/rfc2251.py +1 -1
  11. pyasn1_alt_modules/rfc2314.py +1 -1
  12. pyasn1_alt_modules/rfc2315.py +1 -1
  13. pyasn1_alt_modules/rfc2437.py +1 -1
  14. pyasn1_alt_modules/rfc2459.py +1 -1
  15. pyasn1_alt_modules/rfc2511.py +1 -1
  16. pyasn1_alt_modules/rfc2528.py +1 -1
  17. pyasn1_alt_modules/rfc2560.py +1 -1
  18. pyasn1_alt_modules/rfc2631.py +1 -1
  19. pyasn1_alt_modules/rfc2634.py +1 -1
  20. pyasn1_alt_modules/rfc2743.py +1 -1
  21. pyasn1_alt_modules/rfc2876.py +1 -1
  22. pyasn1_alt_modules/rfc2898.py +1 -1
  23. pyasn1_alt_modules/rfc2985.py +1 -1
  24. pyasn1_alt_modules/rfc2986.py +1 -1
  25. pyasn1_alt_modules/rfc3058.py +1 -1
  26. pyasn1_alt_modules/rfc3114.py +1 -1
  27. pyasn1_alt_modules/rfc3125.py +1 -1
  28. pyasn1_alt_modules/rfc3161.py +1 -1
  29. pyasn1_alt_modules/rfc3217.py +1 -1
  30. pyasn1_alt_modules/rfc3274.py +1 -1
  31. pyasn1_alt_modules/rfc3279.py +1 -1
  32. pyasn1_alt_modules/rfc3280.py +1 -1
  33. pyasn1_alt_modules/rfc3281.py +1 -1
  34. pyasn1_alt_modules/rfc3370.py +1 -1
  35. pyasn1_alt_modules/rfc3412.py +1 -1
  36. pyasn1_alt_modules/rfc3414.py +1 -1
  37. pyasn1_alt_modules/rfc3447.py +1 -1
  38. pyasn1_alt_modules/rfc3537.py +1 -1
  39. pyasn1_alt_modules/rfc3546.py +23 -0
  40. pyasn1_alt_modules/rfc3560.py +1 -1
  41. pyasn1_alt_modules/rfc3565.py +1 -1
  42. pyasn1_alt_modules/rfc3657.py +1 -1
  43. pyasn1_alt_modules/rfc3709.py +1 -1
  44. pyasn1_alt_modules/rfc3739.py +6 -3
  45. pyasn1_alt_modules/rfc3770.py +1 -1
  46. pyasn1_alt_modules/rfc3779.py +1 -1
  47. pyasn1_alt_modules/rfc3820.py +1 -1
  48. pyasn1_alt_modules/rfc3852.py +1 -1
  49. pyasn1_alt_modules/rfc3874.py +1 -1
  50. pyasn1_alt_modules/rfc4010.py +1 -1
  51. pyasn1_alt_modules/rfc4043.py +1 -1
  52. pyasn1_alt_modules/rfc4055.py +1 -1
  53. pyasn1_alt_modules/rfc4056.py +1 -1
  54. pyasn1_alt_modules/rfc4059.py +1 -1
  55. pyasn1_alt_modules/rfc4073.py +1 -1
  56. pyasn1_alt_modules/rfc4108.py +1 -1
  57. pyasn1_alt_modules/rfc4210.py +1 -1
  58. pyasn1_alt_modules/rfc4211.py +1 -1
  59. pyasn1_alt_modules/rfc4231.py +1 -1
  60. pyasn1_alt_modules/rfc4262.py +1 -1
  61. pyasn1_alt_modules/rfc4334.py +1 -1
  62. pyasn1_alt_modules/rfc4357.py +1 -1
  63. pyasn1_alt_modules/rfc4366.py +23 -0
  64. pyasn1_alt_modules/rfc4387.py +1 -1
  65. pyasn1_alt_modules/rfc4476.py +1 -1
  66. pyasn1_alt_modules/rfc4490.py +1 -1
  67. pyasn1_alt_modules/rfc4491.py +1 -1
  68. pyasn1_alt_modules/rfc4683.py +1 -1
  69. pyasn1_alt_modules/rfc4985.py +1 -1
  70. pyasn1_alt_modules/rfc4998.py +1 -1
  71. pyasn1_alt_modules/rfc5035.py +1 -1
  72. pyasn1_alt_modules/rfc5055.py +1 -1
  73. pyasn1_alt_modules/rfc5083.py +1 -1
  74. pyasn1_alt_modules/rfc5084.py +1 -1
  75. pyasn1_alt_modules/rfc5126.py +1 -1
  76. pyasn1_alt_modules/rfc5208.py +1 -1
  77. pyasn1_alt_modules/rfc5275.py +1 -1
  78. pyasn1_alt_modules/rfc5276.py +1 -1
  79. pyasn1_alt_modules/rfc5280.py +3 -2
  80. pyasn1_alt_modules/rfc5480.py +1 -1
  81. pyasn1_alt_modules/rfc5544.py +1 -1
  82. pyasn1_alt_modules/rfc5636.py +1 -1
  83. pyasn1_alt_modules/rfc5639.py +1 -1
  84. pyasn1_alt_modules/rfc5649.py +1 -1
  85. pyasn1_alt_modules/rfc5652.py +1 -1
  86. pyasn1_alt_modules/rfc5697.py +1 -1
  87. pyasn1_alt_modules/rfc5698.py +1 -1
  88. pyasn1_alt_modules/rfc5751.py +1 -1
  89. pyasn1_alt_modules/rfc5752.py +1 -1
  90. pyasn1_alt_modules/rfc5753.py +1 -1
  91. pyasn1_alt_modules/rfc5755.py +1 -1
  92. pyasn1_alt_modules/rfc5913.py +1 -1
  93. pyasn1_alt_modules/rfc5914.py +1 -1
  94. pyasn1_alt_modules/rfc5915.py +1 -1
  95. pyasn1_alt_modules/rfc5916.py +1 -1
  96. pyasn1_alt_modules/rfc5917.py +1 -1
  97. pyasn1_alt_modules/rfc5924.py +1 -1
  98. pyasn1_alt_modules/rfc5934.py +1 -1
  99. pyasn1_alt_modules/rfc5940.py +1 -1
  100. pyasn1_alt_modules/rfc5958.py +1 -1
  101. pyasn1_alt_modules/rfc5990.py +1 -1
  102. pyasn1_alt_modules/rfc6010.py +1 -1
  103. pyasn1_alt_modules/rfc6019.py +1 -1
  104. pyasn1_alt_modules/rfc6031.py +1 -1
  105. pyasn1_alt_modules/rfc6032.py +1 -1
  106. pyasn1_alt_modules/rfc6066.py +1 -1
  107. pyasn1_alt_modules/rfc6120.py +1 -1
  108. pyasn1_alt_modules/rfc6170.py +1 -1
  109. pyasn1_alt_modules/rfc6187.py +1 -1
  110. pyasn1_alt_modules/rfc6210.py +1 -1
  111. pyasn1_alt_modules/rfc6211.py +1 -1
  112. pyasn1_alt_modules/rfc6402.py +1 -1
  113. pyasn1_alt_modules/rfc6482.py +1 -1
  114. pyasn1_alt_modules/rfc6484.py +1 -1
  115. pyasn1_alt_modules/rfc6486.py +1 -1
  116. pyasn1_alt_modules/rfc6487.py +1 -1
  117. pyasn1_alt_modules/rfc6492.py +1 -1
  118. pyasn1_alt_modules/rfc6493.py +1 -1
  119. pyasn1_alt_modules/rfc6494.py +1 -1
  120. pyasn1_alt_modules/rfc6664.py +1 -1
  121. pyasn1_alt_modules/rfc6955.py +1 -1
  122. pyasn1_alt_modules/rfc6960.py +1 -1
  123. pyasn1_alt_modules/rfc6962.py +1 -1
  124. pyasn1_alt_modules/rfc7030.py +1 -1
  125. pyasn1_alt_modules/rfc7191.py +1 -1
  126. pyasn1_alt_modules/rfc7229.py +1 -1
  127. pyasn1_alt_modules/rfc7292.py +1 -1
  128. pyasn1_alt_modules/rfc7296.py +1 -1
  129. pyasn1_alt_modules/rfc7508.py +1 -1
  130. pyasn1_alt_modules/rfc7585.py +1 -1
  131. pyasn1_alt_modules/rfc7633.py +1 -1
  132. pyasn1_alt_modules/rfc7693.py +1 -1
  133. pyasn1_alt_modules/rfc7773.py +1 -1
  134. pyasn1_alt_modules/rfc7836.py +1 -1
  135. pyasn1_alt_modules/rfc7894.py +1 -1
  136. pyasn1_alt_modules/rfc7906.py +1 -1
  137. pyasn1_alt_modules/rfc7914.py +1 -1
  138. pyasn1_alt_modules/rfc8017.py +1 -1
  139. pyasn1_alt_modules/rfc8018.py +1 -1
  140. pyasn1_alt_modules/rfc8103.py +1 -1
  141. pyasn1_alt_modules/rfc8209.py +1 -1
  142. pyasn1_alt_modules/rfc8226.py +1 -1
  143. pyasn1_alt_modules/rfc8358.py +1 -1
  144. pyasn1_alt_modules/rfc8360.py +1 -1
  145. pyasn1_alt_modules/rfc8398.py +1 -1
  146. pyasn1_alt_modules/rfc8410.py +1 -1
  147. pyasn1_alt_modules/rfc8418.py +1 -1
  148. pyasn1_alt_modules/rfc8419.py +1 -1
  149. pyasn1_alt_modules/rfc8479.py +1 -1
  150. pyasn1_alt_modules/rfc8494.py +1 -1
  151. pyasn1_alt_modules/rfc8520.py +1 -1
  152. pyasn1_alt_modules/rfc8619.py +1 -1
  153. pyasn1_alt_modules/rfc8649.py +1 -1
  154. pyasn1_alt_modules/rfc8692.py +1 -1
  155. pyasn1_alt_modules/rfc8696.py +1 -1
  156. pyasn1_alt_modules/rfc8702.py +1 -1
  157. pyasn1_alt_modules/rfc8708.py +1 -1
  158. pyasn1_alt_modules/rfc8737.py +1 -1
  159. pyasn1_alt_modules/rfc8769.py +1 -1
  160. pyasn1_alt_modules/rfc8894.py +1 -1
  161. pyasn1_alt_modules/rfc8951.py +1 -1
  162. pyasn1_alt_modules/rfc8994.py +1 -1
  163. pyasn1_alt_modules/rfc8995.py +1 -1
  164. pyasn1_alt_modules/rfc9044.py +1 -1
  165. pyasn1_alt_modules/rfc9092.py +1 -1
  166. pyasn1_alt_modules/rfc9118.py +1 -1
  167. pyasn1_alt_modules/rfc9174.py +1 -1
  168. pyasn1_alt_modules/rfc9189.py +1 -1
  169. pyasn1_alt_modules/rfc9215.py +11 -1
  170. pyasn1_alt_modules/rfc9286.py +1 -1
  171. pyasn1_alt_modules/rfc9289.py +1 -1
  172. pyasn1_alt_modules/rfc9310.py +1 -1
  173. pyasn1_alt_modules/rfc9323.py +1 -1
  174. pyasn1_alt_modules/rfc9336.py +1 -1
  175. pyasn1_alt_modules/rfc9337.py +1 -1
  176. pyasn1_alt_modules/rfc9345.py +36 -0
  177. pyasn1_alt_modules/rfc9385.py +22 -0
  178. pyasn1_alt_modules/rfc9399.py +59 -0
  179. pyasn1_alt_modules/rfc9480.py +716 -0
  180. pyasn1_alt_modules/rfc9481.py +224 -0
  181. pyasn1_alt_modules/rfc9509.py +24 -0
  182. {pyasn1_alt_modules-0.4.2.dist-info → pyasn1_alt_modules-0.4.3.dist-info}/LICENSE.txt +1 -1
  183. {pyasn1_alt_modules-0.4.2.dist-info → pyasn1_alt_modules-0.4.3.dist-info}/METADATA +5 -5
  184. pyasn1_alt_modules-0.4.3.dist-info/RECORD +187 -0
  185. {pyasn1_alt_modules-0.4.2.dist-info → pyasn1_alt_modules-0.4.3.dist-info}/WHEEL +1 -1
  186. pyasn1_alt_modules/addon.py +0 -284
  187. pyasn1_alt_modules/rfc5794.py +0 -391
  188. pyasn1_alt_modules-0.4.2.dist-info/RECORD +0 -181
  189. {pyasn1_alt_modules-0.4.2.dist-info → pyasn1_alt_modules-0.4.3.dist-info}/top_level.txt +0 -0
  190. {pyasn1_alt_modules-0.4.2.dist-info → pyasn1_alt_modules-0.4.3.dist-info}/zip-safe +0 -0
@@ -0,0 +1,716 @@
1
+ #
2
+ # This file is part of pyasn1_alt_modules software.
3
+ #
4
+ # Created by Russ Housley with minor assistance from asn1ate v.0.6.0.
5
+ #
6
+ # Copyright (c) 2021-2024, Vigil Security, LLC
7
+ # License: http://vigilsec.com/pyasn1_alt_modules_license.txt
8
+ #
9
+ # Updates to the Certificate Management Protocol (CMP)
10
+ #
11
+ # ASN.1 source from:
12
+ # https://www.rfc_editor.org/rfc/rfc9480.txt
13
+ #
14
+
15
+ from pyasn1.type import char
16
+ from pyasn1.type import constraint
17
+ from pyasn1.type import namedval
18
+ from pyasn1.type import namedtype
19
+ from pyasn1.type import opentype
20
+ from pyasn1.type import tag
21
+ from pyasn1.type import univ
22
+ from pyasn1.type import useful
23
+
24
+ from pyasn1_alt_modules import rfc2985
25
+ from pyasn1_alt_modules import rfc4210
26
+ from pyasn1_alt_modules import rfc4211
27
+ from pyasn1_alt_modules import rfc5280
28
+ from pyasn1_alt_modules import rfc5652
29
+ from pyasn1_alt_modules import rfc6402
30
+ from pyasn1_alt_modules import opentypemap
31
+
32
+ cmpInfoTypeAndValueMap = opentypemap.get('cmpInfoTypeAndValueMap')
33
+
34
+ cmsAttributesMap = opentypemap.get('cmsAttributesMap')
35
+
36
+ MAX = float('inf')
37
+
38
+
39
+ # Imports from RFC 5280
40
+
41
+ Certificate = rfc5280.Certificate
42
+
43
+ CertificateList = rfc5280.CertificateList
44
+
45
+ DistributionPointName = rfc5280.DistributionPointName
46
+
47
+ Extensions = rfc5280.Extensions
48
+
49
+ Name = rfc5280.Name
50
+
51
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
52
+
53
+ GeneralNames = rfc5280.GeneralNames
54
+
55
+ GeneralName = rfc5280.GeneralName
56
+
57
+ KeyIdentifier = rfc5280.KeyIdentifier
58
+
59
+ Time = rfc5280.Time
60
+
61
+ id_pkix = rfc5280.id_pkix
62
+
63
+ id_kp = rfc5280.id_kp
64
+
65
+
66
+ # Imports from RFC 4211
67
+
68
+ CertTemplate = rfc4211.CertTemplate
69
+
70
+ PKIPublicationInfo = rfc4211.PKIPublicationInfo
71
+
72
+ EncryptedKey = rfc4211.EncryptedKey
73
+
74
+ CertId = rfc4211.CertId
75
+
76
+ CertReqMessages = rfc4211.CertReqMessages
77
+
78
+ Controls = rfc4211.Controls
79
+
80
+ AttributeTypeAndValue = rfc4211.AttributeTypeAndValue
81
+
82
+ id_regCtrl = rfc4211.id_regCtrl
83
+
84
+
85
+ # Imports from RFC 5652
86
+
87
+ Attribute = rfc5652.Attribute
88
+
89
+ EnvelopedData = rfc5652.EnvelopedData
90
+
91
+ SignedData = rfc5652.SignedData
92
+
93
+
94
+ # Imports from RFC 6402
95
+
96
+ CertificationRequest = rfc6402.CertificationRequest
97
+
98
+ id_kp_cmcCA = rfc6402.id_kp_cmcCA
99
+
100
+ id_kp_cmcRA = rfc6402.id_kp_cmcRA
101
+
102
+
103
+ # Imports from RFC 2985
104
+
105
+ pkcs_9 = rfc2985.pkcs_9
106
+
107
+ pkcs_9_at_localKeyId = rfc2985.pkcs_9_at_localKeyId
108
+
109
+
110
+ # Updates to the Certificate Management Protocol (CMP)
111
+ # Where possible, just import from RFC 4210
112
+
113
+ CMPCertificate = rfc4210.CMPCertificate
114
+
115
+
116
+ OOBCert = rfc4210.OOBCert
117
+
118
+
119
+ CertAnnContent = rfc4210.CertAnnContent
120
+
121
+
122
+ KeyIdentifier = rfc4210.KeyIdentifier
123
+
124
+
125
+ PollRepContent = rfc4210.PollRepContent
126
+
127
+
128
+ PKIConfirmContent = rfc4210.PKIConfirmContent
129
+
130
+
131
+ CRLAnnContent = rfc4210.CRLAnnContent
132
+
133
+
134
+ CAKeyUpdAnnContent = rfc4210.CAKeyUpdAnnContent
135
+
136
+
137
+ RevDetails = rfc4210.RevDetails
138
+
139
+
140
+ RevReqContent = rfc4210.RevReqContent
141
+
142
+
143
+ class InfoTypeAndValue(univ.Sequence):
144
+ componentType = namedtype.NamedTypes(
145
+ namedtype.NamedType('infoType', univ.ObjectIdentifier()),
146
+ namedtype.NamedType('infoValue', univ.Any(),
147
+ openType=opentype.OpenType('infoType', cmpInfoTypeAndValueMap))
148
+ )
149
+
150
+
151
+ class GenRepContent(univ.SequenceOf):
152
+ componentType = InfoTypeAndValue()
153
+
154
+
155
+ class GenMsgContent(univ.SequenceOf):
156
+ componentType = InfoTypeAndValue()
157
+
158
+
159
+ class CertOrEncCert(univ.Choice):
160
+ componentType = namedtype.NamedTypes(
161
+ namedtype.NamedType('certificate', CMPCertificate().subtype(
162
+ explicitTag=tag.Tag(tag.tagClassContext,
163
+ tag.tagFormatConstructed, 0))),
164
+ namedtype.NamedType('encryptedCert', EncryptedKey().subtype(
165
+ explicitTag=tag.Tag(tag.tagClassContext,
166
+ tag.tagFormatSimple, 1)))
167
+ )
168
+
169
+
170
+ class CertifiedKeyPair(univ.Sequence):
171
+ componentType = namedtype.NamedTypes(
172
+ namedtype.NamedType('certOrEncCert', CertOrEncCert()),
173
+ namedtype.OptionalNamedType('privateKey',
174
+ EncryptedKey().subtype(explicitTag=tag.Tag(
175
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
176
+ namedtype.OptionalNamedType('publicationInfo',
177
+ PKIPublicationInfo().subtype(explicitTag=tag.Tag(
178
+ tag.tagClassContext, tag.tagFormatSimple, 1)))
179
+ )
180
+
181
+
182
+ POPODecKeyRespContent = rfc4210.POPODecKeyRespContent
183
+
184
+
185
+ Challenge = rfc4210.Challenge
186
+
187
+
188
+ # Added in CMP Updates
189
+ #
190
+ class Rand(univ.Sequence):
191
+ componentType = namedtype.NamedTypes(
192
+ namedtype.NamedType('int', univ.Integer()),
193
+ namedtype.NamedType('sender', GeneralName())
194
+ )
195
+
196
+
197
+ PKIStatus = rfc4210.PKIStatus
198
+
199
+
200
+ PKIFailureInfo = rfc4210.PKIFailureInfo
201
+
202
+
203
+ RevAnnContent = rfc4210.RevAnnContent
204
+
205
+
206
+ RevRepContent = rfc4210.RevRepContent
207
+
208
+
209
+ KeyRecRepContent = rfc4210.KeyRecRepContent
210
+
211
+
212
+ CertResponse = rfc4210.CertResponse
213
+
214
+
215
+ CertRepMessage = rfc4210.CertRepMessage
216
+
217
+
218
+ POPODecKeyChallContent = rfc4210.POPODecKeyChallContent
219
+
220
+
221
+ OOBCertHash = rfc4210.OOBCertHash
222
+
223
+
224
+ DHBMParameter = rfc4210.DHBMParameter
225
+
226
+
227
+ PBMParameter = rfc4210.PBMParameter
228
+
229
+
230
+ PKIProtection = rfc4210.PKIProtection
231
+
232
+
233
+ class PKIFreeText(univ.SequenceOf):
234
+ componentType = char.UTF8String()
235
+ subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
236
+
237
+
238
+ class PKIStatusInfo(univ.Sequence):
239
+ componentType = namedtype.NamedTypes(
240
+ namedtype.NamedType('status', PKIStatus()),
241
+ namedtype.OptionalNamedType('statusString', PKIFreeText()),
242
+ namedtype.OptionalNamedType('failInfo', PKIFailureInfo())
243
+ )
244
+
245
+
246
+ class ErrorMsgContent(univ.Sequence):
247
+ componentType = namedtype.NamedTypes(
248
+ namedtype.NamedType('pKIStatusInfo', PKIStatusInfo()),
249
+ namedtype.OptionalNamedType('errorCode', univ.Integer()),
250
+ namedtype.OptionalNamedType('errorDetails', PKIFreeText())
251
+ )
252
+
253
+
254
+ PollReqContent = rfc4210.PollReqContent
255
+
256
+
257
+ class PollRepContent(univ.SequenceOf):
258
+ componentType = univ.Sequence(componentType=namedtype.NamedTypes(
259
+ namedtype.NamedType('certReqId', univ.Integer()),
260
+ namedtype.NamedType('checkAfter', univ.Integer()),
261
+ namedtype.OptionalNamedType('reason', PKIFreeText())
262
+ ))
263
+
264
+
265
+ class CertStatus(univ.Sequence):
266
+ componentType = namedtype.NamedTypes(
267
+ namedtype.OptionalNamedType('hashAlg',
268
+ AlgorithmIdentifier().subtype(explicitTag=tag.Tag(
269
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
270
+ namedtype.NamedType('certHash', univ.OctetString()),
271
+ namedtype.NamedType('certReqId', univ.Integer()),
272
+ namedtype.OptionalNamedType('statusInfo', PKIStatusInfo())
273
+ )
274
+
275
+
276
+ class CertConfirmContent(univ.SequenceOf):
277
+ componentType = CertStatus()
278
+
279
+
280
+ class PKIHeader(univ.Sequence):
281
+ componentType = namedtype.NamedTypes(
282
+ namedtype.NamedType('pvno', univ.Integer(
283
+ namedValues=namedval.NamedValues(
284
+ ('cmp1999', 1), ('cmp2000', 2), ('cmp2021', 3)))),
285
+ namedtype.NamedType('sender', GeneralName()),
286
+ namedtype.NamedType('recipient', GeneralName()),
287
+ namedtype.OptionalNamedType('messageTime',
288
+ useful.GeneralizedTime().subtype(explicitTag=tag.Tag(
289
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
290
+ namedtype.OptionalNamedType('protectionAlg',
291
+ AlgorithmIdentifier().subtype(explicitTag=tag.Tag(
292
+ tag.tagClassContext, tag.tagFormatSimple, 1))),
293
+ namedtype.OptionalNamedType('senderKID',
294
+ KeyIdentifier().subtype(explicitTag=tag.Tag(
295
+ tag.tagClassContext, tag.tagFormatSimple, 2))),
296
+ namedtype.OptionalNamedType('recipKID',
297
+ KeyIdentifier().subtype(explicitTag=tag.Tag(
298
+ tag.tagClassContext, tag.tagFormatSimple, 3))),
299
+ namedtype.OptionalNamedType('transactionID',
300
+ univ.OctetString().subtype(explicitTag=tag.Tag(
301
+ tag.tagClassContext, tag.tagFormatSimple, 4))),
302
+ namedtype.OptionalNamedType('senderNonce',
303
+ univ.OctetString().subtype(explicitTag=tag.Tag(
304
+ tag.tagClassContext, tag.tagFormatSimple, 5))),
305
+ namedtype.OptionalNamedType('recipNonce',
306
+ univ.OctetString().subtype(explicitTag=tag.Tag(
307
+ tag.tagClassContext, tag.tagFormatSimple, 6))),
308
+ namedtype.OptionalNamedType('freeText',
309
+ PKIFreeText().subtype(explicitTag=tag.Tag(
310
+ tag.tagClassContext, tag.tagFormatSimple, 7))),
311
+ namedtype.OptionalNamedType('generalInfo',
312
+ univ.SequenceOf(componentType=InfoTypeAndValue()).subtype(
313
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX)).subtype(
314
+ explicitTag=tag.Tag(tag.tagClassContext,
315
+ tag.tagFormatSimple, 8)))
316
+ )
317
+
318
+
319
+ # Since pyasn1 does not naturally handle recursive definitions, this hack
320
+ # instead of:
321
+ # class NestedMessageContent(PKIMessages):
322
+ # pass
323
+ # Note that there is a second part of the hack at the bottom of the module.
324
+ #
325
+ class NestedMessageContent(univ.SequenceOf):
326
+ componentType = univ.Any()
327
+
328
+
329
+ nestedMessageContent = NestedMessageContent().subtype(
330
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 20))
331
+
332
+
333
+ class PKIBody(univ.Choice):
334
+ componentType = namedtype.NamedTypes(
335
+ namedtype.NamedType('ir', CertReqMessages().subtype(
336
+ explicitTag=tag.Tag(tag.tagClassContext,
337
+ tag.tagFormatSimple, 0))),
338
+ namedtype.NamedType('ip', CertRepMessage().subtype(
339
+ explicitTag=tag.Tag(tag.tagClassContext,
340
+ tag.tagFormatConstructed, 1))),
341
+ namedtype.NamedType('cr', CertReqMessages().subtype(
342
+ explicitTag=tag.Tag(tag.tagClassContext,
343
+ tag.tagFormatSimple, 2))),
344
+ namedtype.NamedType('cp', CertRepMessage().subtype(
345
+ explicitTag=tag.Tag(tag.tagClassContext,
346
+ tag.tagFormatConstructed, 3))),
347
+ namedtype.NamedType('p10cr', CertificationRequest().subtype(
348
+ explicitTag=tag.Tag(tag.tagClassContext,
349
+ tag.tagFormatSimple, 4))),
350
+ namedtype.NamedType('popdecc', POPODecKeyChallContent().subtype(
351
+ explicitTag=tag.Tag(tag.tagClassContext,
352
+ tag.tagFormatSimple, 5))),
353
+ namedtype.NamedType('popdecr', POPODecKeyRespContent().subtype(
354
+ explicitTag=tag.Tag(tag.tagClassContext,
355
+ tag.tagFormatSimple, 6))),
356
+ namedtype.NamedType('kur', CertReqMessages().subtype(
357
+ explicitTag=tag.Tag(tag.tagClassContext,
358
+ tag.tagFormatSimple, 7))),
359
+ namedtype.NamedType('kup', CertRepMessage().subtype(
360
+ explicitTag=tag.Tag(tag.tagClassContext,
361
+ tag.tagFormatConstructed, 8))),
362
+ namedtype.NamedType('krr', CertReqMessages().subtype(
363
+ explicitTag=tag.Tag(tag.tagClassContext,
364
+ tag.tagFormatSimple, 9))),
365
+ namedtype.NamedType('krp', KeyRecRepContent().subtype(
366
+ explicitTag=tag.Tag(tag.tagClassContext,
367
+ tag.tagFormatConstructed, 10))),
368
+ namedtype.NamedType('rr', RevReqContent().subtype(
369
+ explicitTag=tag.Tag(tag.tagClassContext,
370
+ tag.tagFormatSimple, 11))),
371
+ namedtype.NamedType('rp', RevRepContent().subtype(
372
+ explicitTag=tag.Tag(tag.tagClassContext,
373
+ tag.tagFormatConstructed, 12))),
374
+ namedtype.NamedType('ccr', CertReqMessages().subtype(
375
+ explicitTag=tag.Tag(tag.tagClassContext,
376
+ tag.tagFormatSimple, 13))),
377
+ namedtype.NamedType('ccp', CertRepMessage().subtype(
378
+ explicitTag=tag.Tag(tag.tagClassContext,
379
+ tag.tagFormatConstructed, 14))),
380
+ namedtype.NamedType('ckuann', CAKeyUpdAnnContent().subtype(
381
+ explicitTag=tag.Tag(tag.tagClassContext,
382
+ tag.tagFormatConstructed, 15))),
383
+ namedtype.NamedType('cann', CertAnnContent().subtype(
384
+ explicitTag=tag.Tag(tag.tagClassContext,
385
+ tag.tagFormatConstructed, 16))),
386
+ namedtype.NamedType('rann', RevAnnContent().subtype(
387
+ explicitTag=tag.Tag(tag.tagClassContext,
388
+ tag.tagFormatConstructed, 17))),
389
+ namedtype.NamedType('crlann', CRLAnnContent().subtype(
390
+ explicitTag=tag.Tag(tag.tagClassContext,
391
+ tag.tagFormatSimple, 18))),
392
+ namedtype.NamedType('pkiconf', PKIConfirmContent().subtype(
393
+ explicitTag=tag.Tag(tag.tagClassContext,
394
+ tag.tagFormatSimple, 19))),
395
+ namedtype.NamedType('nested', nestedMessageContent),
396
+ namedtype.NamedType('genm', GenMsgContent().subtype(
397
+ explicitTag=tag.Tag(tag.tagClassContext,
398
+ tag.tagFormatSimple, 21))),
399
+ namedtype.NamedType('genp', GenRepContent().subtype(
400
+ explicitTag=tag.Tag(tag.tagClassContext,
401
+ tag.tagFormatSimple, 22))),
402
+ namedtype.NamedType('error', ErrorMsgContent().subtype(
403
+ explicitTag=tag.Tag(tag.tagClassContext,
404
+ tag.tagFormatConstructed, 23))),
405
+ namedtype.NamedType('certConf', CertConfirmContent().subtype(
406
+ explicitTag=tag.Tag(tag.tagClassContext,
407
+ tag.tagFormatSimple, 24))),
408
+ namedtype.NamedType('pollReq', PollReqContent().subtype(
409
+ explicitTag=tag.Tag(tag.tagClassContext,
410
+ tag.tagFormatSimple, 25))),
411
+ namedtype.NamedType('pollRep', PollRepContent().subtype(
412
+ explicitTag=tag.Tag(tag.tagClassContext,
413
+ tag.tagFormatSimple, 26)))
414
+ )
415
+
416
+
417
+ class PKIMessage(univ.Sequence):
418
+ componentType = namedtype.NamedTypes(
419
+ namedtype.NamedType('header', PKIHeader()),
420
+ namedtype.NamedType('body', PKIBody()),
421
+ namedtype.OptionalNamedType('protection', PKIProtection().subtype(
422
+ explicitTag=tag.Tag(tag.tagClassContext,
423
+ tag.tagFormatSimple, 0))),
424
+ namedtype.OptionalNamedType('extraCerts', univ.SequenceOf(
425
+ componentType=CMPCertificate()).subtype(
426
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX)).subtype(
427
+ explicitTag=tag.Tag(tag.tagClassContext,
428
+ tag.tagFormatSimple, 1)))
429
+ )
430
+
431
+
432
+ class PKIMessages(univ.SequenceOf):
433
+ componentType = PKIMessage()
434
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
435
+
436
+
437
+ class ProtectedPart(univ.Sequence):
438
+ componentType = namedtype.NamedTypes(
439
+ namedtype.NamedType('header', PKIHeader()),
440
+ namedtype.NamedType('body', PKIBody())
441
+ )
442
+
443
+
444
+ # Added in CMP Updates
445
+ #
446
+ class RootCaKeyUpdateContent(univ.Sequence):
447
+ componentType = namedtype.NamedTypes(
448
+ namedtype.NamedType('newWithNew', CMPCertificate()),
449
+ namedtype.OptionalNamedType('newWithOld', CMPCertificate().subtype(
450
+ explicitTag=tag.Tag(tag.tagClassContext,
451
+ tag.tagFormatConstructed, 0))),
452
+ namedtype.OptionalNamedType('oldWithNew', CMPCertificate().subtype(
453
+ explicitTag=tag.Tag(tag.tagClassContext,
454
+ tag.tagFormatConstructed, 1)))
455
+ )
456
+
457
+
458
+ # Added in CMP Updates
459
+ #
460
+ class CRLSource(univ.Choice):
461
+ componentType = namedtype.NamedTypes(
462
+ namedtype.NamedType('dpn', DistributionPointName().subtype(
463
+ explicitTag=tag.Tag(tag.tagClassContext,
464
+ tag.tagFormatConstructed, 0))),
465
+ namedtype.NamedType('issuer', EncryptedKey().subtype(
466
+ explicitTag=tag.Tag(tag.tagClassContext,
467
+ tag.tagFormatConstructed, 1)))
468
+ )
469
+
470
+
471
+ # Added in CMP Updates
472
+ #
473
+ class CRLStatus(univ.Sequence):
474
+ componentType = namedtype.NamedTypes(
475
+ namedtype.NamedType('source', CRLSource()),
476
+ namedtype.OptionalNamedType('thisUpdate', Time())
477
+ )
478
+
479
+
480
+ # Added in CMP Updates
481
+ #
482
+ class CertReqTemplateContent(univ.Sequence):
483
+ componentType = namedtype.NamedTypes(
484
+ namedtype.NamedType('certTemplate', CertTemplate()),
485
+ namedtype.OptionalNamedType('keySpec', Controls())
486
+ )
487
+
488
+
489
+ # Object Identifiers for MAC algorithms
490
+
491
+ id_DHBasedMac = rfc4210.id_DHBasedMac
492
+
493
+ id_PasswordBasedMac = rfc4210.id_PasswordBasedMac
494
+
495
+
496
+ # Extended Key Usage extension for PKI entities used in CMP operations
497
+
498
+ id_kp_cmKGA = id_kp + (32,)
499
+
500
+
501
+ # The value for the LocalKeyId Attribute from PKCS#9 (RFC 2985)
502
+
503
+ class LocalKeyIdValue(univ.OctetString):
504
+ pass
505
+
506
+
507
+ # Additional CRMF Registration Controls
508
+
509
+ id_regCtrl_altCertTemplate = id_regCtrl + (7,)
510
+
511
+ class AltCertTemplate(AttributeTypeAndValue):
512
+ pass
513
+
514
+
515
+ id_regCtrl_algId = id_regCtrl + (11,)
516
+
517
+ class AlgIdCtrl(AlgorithmIdentifier):
518
+ pass
519
+
520
+
521
+ id_regCtrl_rsaKeyLen = id_regCtrl + (12,)
522
+
523
+ class RsaKeyLenCtrl(univ.Integer):
524
+ subtypeSpec = constraint.ValueRangeConstraint(1, MAX)
525
+
526
+
527
+ # CMP Information Types
528
+
529
+ id_it = id_pkix + (4,)
530
+
531
+ id_it_caProtEncCert = id_it + (1,)
532
+
533
+ class CAProtEncCertValue(CMPCertificate):
534
+ pass
535
+
536
+
537
+ id_it_signKeyPairTypes = id_it + (2,)
538
+
539
+ class SignKeyPairTypesValueclass(univ.SequenceOf):
540
+ componentType = AlgorithmIdentifier()
541
+
542
+
543
+ id_it_encKeyPairTypes = id_it + (3,)
544
+
545
+ class EncKeyPairTypesValue(univ.SequenceOf):
546
+ componentType = AlgorithmIdentifier()
547
+
548
+
549
+ id_it_preferredSymmAlg = id_it + (4,)
550
+
551
+ class PreferredSymmAlgValue(AlgorithmIdentifier):
552
+ pass
553
+
554
+
555
+ id_it_caKeyUpdateInfo = id_it + (5,)
556
+
557
+ class CAKeyUpdateInfoValue(CAKeyUpdAnnContent):
558
+ pass
559
+
560
+
561
+ id_it_currentCRL = id_it + (6,)
562
+
563
+ class CurrentCRLValue(CertificateList):
564
+ pass
565
+
566
+
567
+ id_it_unsupportedOIDs = id_it + (7,)
568
+
569
+ class UnsupportedOIDsValue(univ.SequenceOf):
570
+ componentType = univ.ObjectIdentifier()
571
+
572
+
573
+ id_it_keyPairParamReq = id_it + (10,)
574
+
575
+ class KeyPairParamReqValue(univ.ObjectIdentifier):
576
+ pass
577
+
578
+
579
+ id_it_keyPairParamRep = id_it + (11,)
580
+
581
+ class KeyPairParamRepValue(AlgorithmIdentifier):
582
+ pass
583
+
584
+
585
+ id_it_revPassphrase = id_it + (12,)
586
+
587
+ class RevPassphraseValue(EncryptedKey):
588
+ pass
589
+
590
+
591
+ id_it_implicitConfirm = id_it + (13,)
592
+
593
+ class ImplicitConfirmValue(univ.Null):
594
+ pass
595
+
596
+
597
+ id_it_confirmWaitTime = id_it + (14,)
598
+
599
+ class ConfirmWaitTimeValue(useful.GeneralizedTime):
600
+ pass
601
+
602
+
603
+ id_it_origPKIMessage = id_it + (15,)
604
+
605
+ class OrigPKIMessageValue(PKIMessages):
606
+ pass
607
+
608
+
609
+ id_it_suppLangTags = id_it + (16,)
610
+
611
+ class SuppLangTagsValue(univ.SequenceOf):
612
+ componentType = char.UTF8String()
613
+
614
+
615
+ # Added in CMP Updates
616
+ #
617
+ id_it_caCerts = id_it + (17,)
618
+
619
+ class CaCertsValue(univ.SequenceOf):
620
+ componentType = CMPCertificate()
621
+
622
+
623
+ # Added in CMP Updates
624
+ #
625
+ id_it_rootCaKeyUpdate = id_it + (18,)
626
+
627
+ class RootCaKeyUpdateValue(RootCaKeyUpdateContent):
628
+ pass
629
+
630
+
631
+ # Added in CMP Updates
632
+ #
633
+ id_it_certReqTemplate = id_it + (19,)
634
+
635
+ class CertReqTemplateValue(CertReqTemplateContent):
636
+ pass
637
+
638
+
639
+ # Added in CMP Updates
640
+ #
641
+ id_it_rootCaCert = id_it + (20,)
642
+
643
+ class RootCaCertValue(CMPCertificate):
644
+ pass
645
+
646
+
647
+ # Added in CMP Updates
648
+ #
649
+ id_it_certProfile = id_it + (21,)
650
+
651
+ class CertProfileValue(char.UTF8String):
652
+ pass
653
+
654
+
655
+ # Added in CMP Updates
656
+ #
657
+ id_it_crlStatusList = id_it + (22,)
658
+
659
+ class CRLStatusListValue(univ.SequenceOf):
660
+ componentType = CRLStatus()
661
+ subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
662
+
663
+
664
+ # Added in CMP Updates
665
+ #
666
+ id_it_crls = id_it + (23,)
667
+
668
+ class CRLsValue(univ.SequenceOf):
669
+ componentType = CertificateList()
670
+ subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
671
+
672
+
673
+ # Update the CMP Information Types Map
674
+
675
+ _cmpInfoTypeAndValueMapUpdate = {
676
+ id_it_caProtEncCert: CAProtEncCertValue(),
677
+ id_it_signKeyPairTypes: SignKeyPairTypesValueclass(),
678
+ id_it_encKeyPairTypes: EncKeyPairTypesValue(),
679
+ id_it_preferredSymmAlg: PreferredSymmAlgValue(),
680
+ id_it_caKeyUpdateInfo: CAKeyUpdateInfoValue(),
681
+ id_it_currentCRL: CurrentCRLValue(),
682
+ id_it_unsupportedOIDs: UnsupportedOIDsValue(),
683
+ id_it_keyPairParamReq: KeyPairParamReqValue(),
684
+ id_it_keyPairParamRep: KeyPairParamRepValue(),
685
+ id_it_revPassphrase: RevPassphraseValue(),
686
+ id_it_implicitConfirm: ImplicitConfirmValue(),
687
+ id_it_confirmWaitTime: ConfirmWaitTimeValue(),
688
+ id_it_origPKIMessage: OrigPKIMessageValue(),
689
+ id_it_suppLangTags: SuppLangTagsValue(),
690
+ id_it_caCerts: CaCertsValue(),
691
+ id_it_rootCaKeyUpdate: RootCaKeyUpdateValue(),
692
+ id_it_certReqTemplate: CertReqTemplateValue(),
693
+ id_it_rootCaCert: RootCaCertValue(),
694
+ id_it_certProfile: CertProfileValue(),
695
+ id_it_crlStatusList: CRLStatusListValue(),
696
+ id_it_crls: CRLsValue(),
697
+ }
698
+
699
+ cmpInfoTypeAndValueMap.update(_cmpInfoTypeAndValueMapUpdate)
700
+
701
+
702
+ # Update the CMS Attribute Map
703
+
704
+ _cmsAttributesMapUpdate = {
705
+ id_regCtrl_altCertTemplate: AltCertTemplate(),
706
+ id_regCtrl_algId: AlgIdCtrl(),
707
+ id_regCtrl_rsaKeyLen: RsaKeyLenCtrl(),
708
+ }
709
+
710
+ cmsAttributesMap.update(_cmsAttributesMapUpdate)
711
+
712
+
713
+ # Since pyasn1 does not naturally handle recursive definitions, this hack:
714
+ #
715
+ NestedMessageContent._componentType = PKIMessages()
716
+ nestedMessageContent._componentType = PKIMessages()