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,786 @@
1
+ # This file is part of pyasn1-alt-modules software.
2
+ #
3
+ # Created by Russ Housley with assistance from asn1ate v.0.6.0.
4
+ # Modified by Russ Housley to include the opentypemap manager and
5
+ # remove the _OID routine.
6
+ #
7
+ # Copyright (c) 2019-2024, Vigil Security, LLC
8
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
9
+ #
10
+ # Trust Anchor Format
11
+ #
12
+ # ASN.1 source from:
13
+ # https://www.rfc-editor.org/rfc/rfc5934.txt
14
+
15
+ from pyasn1.type import char
16
+ from pyasn1.type import constraint
17
+ from pyasn1.type import namedtype
18
+ from pyasn1.type import namedval
19
+ from pyasn1.type import tag
20
+ from pyasn1.type import univ
21
+
22
+ from pyasn1_alt_modules import rfc2985
23
+ from pyasn1_alt_modules import rfc5280
24
+ from pyasn1_alt_modules import rfc5652
25
+ from pyasn1_alt_modules import rfc5914
26
+ from pyasn1_alt_modules import opentypemap
27
+
28
+ cmsContentTypesMap = opentypemap.get('cmsContentTypesMap')
29
+
30
+ cmsAttributesMap = opentypemap.get('cmsAttributesMap')
31
+
32
+ certificateExtensionsMap = opentypemap.get('certificateExtensionsMap')
33
+
34
+ MAX = float('inf')
35
+
36
+
37
+ # Imports from RFC 2985
38
+
39
+ SingleAttribute = rfc2985.SingleAttribute
40
+
41
+
42
+ # Imports from RFC5914
43
+
44
+ CertPathControls = rfc5914.CertPathControls
45
+
46
+ TrustAnchorChoice = rfc5914.TrustAnchorChoice
47
+
48
+ TrustAnchorTitle = rfc5914.TrustAnchorTitle
49
+
50
+
51
+ # Imports from RFC 5280
52
+
53
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
54
+
55
+ AnotherName = rfc5280.AnotherName
56
+
57
+ Attribute = rfc5280.Attribute
58
+
59
+ Certificate = rfc5280.Certificate
60
+
61
+ CertificateSerialNumber = rfc5280.CertificateSerialNumber
62
+
63
+ Extension = rfc5280.Extension
64
+
65
+ Extensions = rfc5280.Extensions
66
+
67
+ KeyIdentifier = rfc5280.KeyIdentifier
68
+
69
+ Name = rfc5280.Name
70
+
71
+ SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo
72
+
73
+ TBSCertificate = rfc5280.TBSCertificate
74
+
75
+ Validity = rfc5280.Validity
76
+
77
+
78
+ # Object Identifier Arc for TAMP Message Content Types
79
+
80
+ id_tamp = univ.ObjectIdentifier('2.16.840.1.101.2.1.2.77')
81
+
82
+
83
+ # TAMP Status Query Message
84
+
85
+ id_ct_TAMP_statusQuery = id_tamp + (1,)
86
+
87
+
88
+ class TAMPVersion(univ.Integer):
89
+ pass
90
+
91
+ TAMPVersion.namedValues = namedval.NamedValues(
92
+ ('v1', 1),
93
+ ('v2', 2)
94
+ )
95
+
96
+
97
+ class TerseOrVerbose(univ.Enumerated):
98
+ pass
99
+
100
+ TerseOrVerbose.namedValues = namedval.NamedValues(
101
+ ('terse', 1),
102
+ ('verbose', 2)
103
+ )
104
+
105
+
106
+ class HardwareSerialEntry(univ.Choice):
107
+ pass
108
+
109
+ HardwareSerialEntry.componentType = namedtype.NamedTypes(
110
+ namedtype.NamedType('all', univ.Null()),
111
+ namedtype.NamedType('single', univ.OctetString()),
112
+ namedtype.NamedType('block', univ.Sequence(componentType=namedtype.NamedTypes(
113
+ namedtype.NamedType('low', univ.OctetString()),
114
+ namedtype.NamedType('high', univ.OctetString())
115
+ ))
116
+ )
117
+ )
118
+
119
+
120
+ class HardwareModules(univ.Sequence):
121
+ pass
122
+
123
+ HardwareModules.componentType = namedtype.NamedTypes(
124
+ namedtype.NamedType('hwType', univ.ObjectIdentifier()),
125
+ namedtype.NamedType('hwSerialEntries', univ.SequenceOf(
126
+ componentType=HardwareSerialEntry()).subtype(
127
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
128
+ )
129
+
130
+
131
+ class HardwareModuleIdentifierList(univ.SequenceOf):
132
+ pass
133
+
134
+ HardwareModuleIdentifierList.componentType = HardwareModules()
135
+ HardwareModuleIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
136
+
137
+
138
+ class Community(univ.ObjectIdentifier):
139
+ pass
140
+
141
+
142
+ class CommunityIdentifierList(univ.SequenceOf):
143
+ pass
144
+
145
+ CommunityIdentifierList.componentType = Community()
146
+ CommunityIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(0, MAX)
147
+
148
+
149
+ class TargetIdentifier(univ.Choice):
150
+ pass
151
+
152
+ TargetIdentifier.componentType = namedtype.NamedTypes(
153
+ namedtype.NamedType('hwModules', HardwareModuleIdentifierList().subtype(
154
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
155
+ namedtype.NamedType('communities', CommunityIdentifierList().subtype(
156
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
157
+ namedtype.NamedType('allModules', univ.Null().subtype(
158
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
159
+ namedtype.NamedType('uri', char.IA5String().subtype(
160
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
161
+ namedtype.NamedType('otherName', AnotherName().subtype(
162
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5)))
163
+ )
164
+
165
+
166
+ class SeqNumber(univ.Integer):
167
+ pass
168
+
169
+ SeqNumber.subtypeSpec = constraint.ValueRangeConstraint(0, 9223372036854775807)
170
+
171
+
172
+ class TAMPMsgRef(univ.Sequence):
173
+ pass
174
+
175
+ TAMPMsgRef.componentType = namedtype.NamedTypes(
176
+ namedtype.NamedType('target', TargetIdentifier()),
177
+ namedtype.NamedType('seqNum', SeqNumber())
178
+ )
179
+
180
+
181
+ class TAMPStatusQuery(univ.Sequence):
182
+ pass
183
+
184
+ TAMPStatusQuery.componentType = namedtype.NamedTypes(
185
+ namedtype.DefaultedNamedType('version', TAMPVersion().subtype(
186
+ implicitTag=tag.Tag(tag.tagClassContext,
187
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
188
+ namedtype.DefaultedNamedType('terse', TerseOrVerbose().subtype(
189
+ implicitTag=tag.Tag(tag.tagClassContext,
190
+ tag.tagFormatSimple, 1)).subtype(value='verbose')),
191
+ namedtype.NamedType('query', TAMPMsgRef())
192
+ )
193
+
194
+
195
+ tamp_status_query = rfc5652.ContentInfo()
196
+ tamp_status_query['contentType'] = id_ct_TAMP_statusQuery
197
+ tamp_status_query['content'] = TAMPStatusQuery()
198
+
199
+
200
+ # TAMP Status Response Message
201
+
202
+ id_ct_TAMP_statusResponse = id_tamp + (2,)
203
+
204
+
205
+ class KeyIdentifiers(univ.SequenceOf):
206
+ pass
207
+
208
+ KeyIdentifiers.componentType = KeyIdentifier()
209
+ KeyIdentifiers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
210
+
211
+
212
+ class TrustAnchorChoiceList(univ.SequenceOf):
213
+ pass
214
+
215
+ TrustAnchorChoiceList.componentType = TrustAnchorChoice()
216
+ TrustAnchorChoiceList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
217
+
218
+
219
+ class TAMPSequenceNumber(univ.Sequence):
220
+ pass
221
+
222
+ TAMPSequenceNumber.componentType = namedtype.NamedTypes(
223
+ namedtype.NamedType('keyId', KeyIdentifier()),
224
+ namedtype.NamedType('seqNumber', SeqNumber())
225
+ )
226
+
227
+
228
+ class TAMPSequenceNumbers(univ.SequenceOf):
229
+ pass
230
+
231
+ TAMPSequenceNumbers.componentType = TAMPSequenceNumber()
232
+ TAMPSequenceNumbers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
233
+
234
+
235
+ class TerseStatusResponse(univ.Sequence):
236
+ pass
237
+
238
+ TerseStatusResponse.componentType = namedtype.NamedTypes(
239
+ namedtype.NamedType('taKeyIds', KeyIdentifiers()),
240
+ namedtype.OptionalNamedType('communities', CommunityIdentifierList())
241
+ )
242
+
243
+
244
+ class VerboseStatusResponse(univ.Sequence):
245
+ pass
246
+
247
+ VerboseStatusResponse.componentType = namedtype.NamedTypes(
248
+ namedtype.NamedType('taInfo', TrustAnchorChoiceList()),
249
+ namedtype.OptionalNamedType('continPubKeyDecryptAlg',
250
+ AlgorithmIdentifier().subtype(implicitTag=tag.Tag(
251
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
252
+ namedtype.OptionalNamedType('communities',
253
+ CommunityIdentifierList().subtype(implicitTag=tag.Tag(
254
+ tag.tagClassContext, tag.tagFormatSimple, 1))),
255
+ namedtype.OptionalNamedType('tampSeqNumbers',
256
+ TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(
257
+ tag.tagClassContext, tag.tagFormatSimple, 2)))
258
+ )
259
+
260
+
261
+ class StatusResponse(univ.Choice):
262
+ pass
263
+
264
+ StatusResponse.componentType = namedtype.NamedTypes(
265
+ namedtype.NamedType('terseResponse', TerseStatusResponse().subtype(
266
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
267
+ namedtype.NamedType('verboseResponse', VerboseStatusResponse().subtype(
268
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
269
+ )
270
+
271
+
272
+ class TAMPStatusResponse(univ.Sequence):
273
+ pass
274
+
275
+ TAMPStatusResponse.componentType = namedtype.NamedTypes(
276
+ namedtype.DefaultedNamedType('version', TAMPVersion().subtype(
277
+ implicitTag=tag.Tag(tag.tagClassContext,
278
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
279
+ namedtype.NamedType('query', TAMPMsgRef()),
280
+ namedtype.NamedType('response', StatusResponse()),
281
+ namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1))
282
+ )
283
+
284
+
285
+ tamp_status_response = rfc5652.ContentInfo()
286
+ tamp_status_response['contentType'] = id_ct_TAMP_statusResponse
287
+ tamp_status_response['content'] = TAMPStatusResponse()
288
+
289
+
290
+ # Trust Anchor Update Message
291
+
292
+ id_ct_TAMP_update = id_tamp + (3,)
293
+
294
+
295
+ class TBSCertificateChangeInfo(univ.Sequence):
296
+ pass
297
+
298
+ TBSCertificateChangeInfo.componentType = namedtype.NamedTypes(
299
+ namedtype.OptionalNamedType('serialNumber', CertificateSerialNumber()),
300
+ namedtype.OptionalNamedType('signature', AlgorithmIdentifier().subtype(
301
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
302
+ namedtype.OptionalNamedType('issuer', Name().subtype(implicitTag=tag.Tag(
303
+ tag.tagClassContext, tag.tagFormatSimple, 1))),
304
+ namedtype.OptionalNamedType('validity', Validity().subtype(
305
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
306
+ namedtype.OptionalNamedType('subject', Name().subtype(implicitTag=tag.Tag(
307
+ tag.tagClassContext, tag.tagFormatSimple, 3))),
308
+ namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo().subtype(
309
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
310
+ namedtype.OptionalNamedType('exts', Extensions().subtype(explicitTag=tag.Tag(
311
+ tag.tagClassContext, tag.tagFormatSimple, 5)))
312
+ )
313
+
314
+
315
+ class TrustAnchorChangeInfo(univ.Sequence):
316
+ pass
317
+
318
+ TrustAnchorChangeInfo.componentType = namedtype.NamedTypes(
319
+ namedtype.NamedType('pubKey', SubjectPublicKeyInfo()),
320
+ namedtype.OptionalNamedType('keyId', KeyIdentifier()),
321
+ namedtype.OptionalNamedType('taTitle', TrustAnchorTitle()),
322
+ namedtype.OptionalNamedType('certPath', CertPathControls()),
323
+ namedtype.OptionalNamedType('exts', Extensions().subtype(
324
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
325
+ )
326
+
327
+
328
+ class TrustAnchorChangeInfoChoice(univ.Choice):
329
+ pass
330
+
331
+ TrustAnchorChangeInfoChoice.componentType = namedtype.NamedTypes(
332
+ namedtype.NamedType('tbsCertChange', TBSCertificateChangeInfo().subtype(
333
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
334
+ namedtype.NamedType('taChange', TrustAnchorChangeInfo().subtype(
335
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
336
+ )
337
+
338
+
339
+ class TrustAnchorUpdate(univ.Choice):
340
+ pass
341
+
342
+ TrustAnchorUpdate.componentType = namedtype.NamedTypes(
343
+ namedtype.NamedType('add', TrustAnchorChoice().subtype(
344
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
345
+ namedtype.NamedType('remove', SubjectPublicKeyInfo().subtype(
346
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
347
+ namedtype.NamedType('change', TrustAnchorChangeInfoChoice().subtype(
348
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
349
+ )
350
+
351
+
352
+ class TAMPUpdate(univ.Sequence):
353
+ pass
354
+
355
+ TAMPUpdate.componentType = namedtype.NamedTypes(
356
+ namedtype.DefaultedNamedType('version',
357
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
358
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
359
+ namedtype.DefaultedNamedType('terse',
360
+ TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,
361
+ tag.tagFormatSimple, 1)).subtype(value='verbose')),
362
+ namedtype.NamedType('msgRef', TAMPMsgRef()),
363
+ namedtype.NamedType('updates',
364
+ univ.SequenceOf(componentType=TrustAnchorUpdate()).subtype(
365
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
366
+ namedtype.OptionalNamedType('tampSeqNumbers',
367
+ TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(
368
+ tag.tagClassContext, tag.tagFormatSimple, 2)))
369
+ )
370
+
371
+
372
+ tamp_update = rfc5652.ContentInfo()
373
+ tamp_update['contentType'] = id_ct_TAMP_update
374
+ tamp_update['content'] = TAMPUpdate()
375
+
376
+
377
+ # Trust Anchor Update Confirm Message
378
+
379
+ id_ct_TAMP_updateConfirm = id_tamp + (4,)
380
+
381
+
382
+ class StatusCode(univ.Enumerated):
383
+ pass
384
+
385
+ StatusCode.namedValues = namedval.NamedValues(
386
+ ('success', 0),
387
+ ('decodeFailure', 1),
388
+ ('badContentInfo', 2),
389
+ ('badSignedData', 3),
390
+ ('badEncapContent', 4),
391
+ ('badCertificate', 5),
392
+ ('badSignerInfo', 6),
393
+ ('badSignedAttrs', 7),
394
+ ('badUnsignedAttrs', 8),
395
+ ('missingContent', 9),
396
+ ('noTrustAnchor', 10),
397
+ ('notAuthorized', 11),
398
+ ('badDigestAlgorithm', 12),
399
+ ('badSignatureAlgorithm', 13),
400
+ ('unsupportedKeySize', 14),
401
+ ('unsupportedParameters', 15),
402
+ ('signatureFailure', 16),
403
+ ('insufficientMemory', 17),
404
+ ('unsupportedTAMPMsgType', 18),
405
+ ('apexTAMPAnchor', 19),
406
+ ('improperTAAddition', 20),
407
+ ('seqNumFailure', 21),
408
+ ('contingencyPublicKeyDecrypt', 22),
409
+ ('incorrectTarget', 23),
410
+ ('communityUpdateFailed', 24),
411
+ ('trustAnchorNotFound', 25),
412
+ ('unsupportedTAAlgorithm', 26),
413
+ ('unsupportedTAKeySize', 27),
414
+ ('unsupportedContinPubKeyDecryptAlg', 28),
415
+ ('missingSignature', 29),
416
+ ('resourcesBusy', 30),
417
+ ('versionNumberMismatch', 31),
418
+ ('missingPolicySet', 32),
419
+ ('revokedCertificate', 33),
420
+ ('unsupportedTrustAnchorFormat', 34),
421
+ ('improperTAChange', 35),
422
+ ('malformed', 36),
423
+ ('cmsError', 37),
424
+ ('unsupportedTargetIdentifier', 38),
425
+ ('other', 127)
426
+ )
427
+
428
+
429
+ class StatusCodeList(univ.SequenceOf):
430
+ pass
431
+
432
+ StatusCodeList.componentType = StatusCode()
433
+ StatusCodeList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
434
+
435
+
436
+ class TerseUpdateConfirm(StatusCodeList):
437
+ pass
438
+
439
+
440
+ class VerboseUpdateConfirm(univ.Sequence):
441
+ pass
442
+
443
+ VerboseUpdateConfirm.componentType = namedtype.NamedTypes(
444
+ namedtype.NamedType('status', StatusCodeList()),
445
+ namedtype.NamedType('taInfo', TrustAnchorChoiceList()),
446
+ namedtype.OptionalNamedType('tampSeqNumbers', TAMPSequenceNumbers()),
447
+ namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1))
448
+ )
449
+
450
+
451
+ class UpdateConfirm(univ.Choice):
452
+ pass
453
+
454
+ UpdateConfirm.componentType = namedtype.NamedTypes(
455
+ namedtype.NamedType('terseConfirm', TerseUpdateConfirm().subtype(
456
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
457
+ namedtype.NamedType('verboseConfirm', VerboseUpdateConfirm().subtype(
458
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
459
+ )
460
+
461
+
462
+ class TAMPUpdateConfirm(univ.Sequence):
463
+ pass
464
+
465
+ TAMPUpdateConfirm.componentType = namedtype.NamedTypes(
466
+ namedtype.DefaultedNamedType('version', TAMPVersion().subtype(
467
+ implicitTag=tag.Tag(tag.tagClassContext,
468
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
469
+ namedtype.NamedType('update', TAMPMsgRef()),
470
+ namedtype.NamedType('confirm', UpdateConfirm())
471
+ )
472
+
473
+
474
+ tamp_update_confirm = rfc5652.ContentInfo()
475
+ tamp_update_confirm['contentType'] = id_ct_TAMP_updateConfirm
476
+ tamp_update_confirm['content'] = TAMPUpdateConfirm()
477
+
478
+
479
+ # Apex Trust Anchor Update Message
480
+
481
+ id_ct_TAMP_apexUpdate = id_tamp + (5,)
482
+
483
+
484
+ class TAMPApexUpdate(univ.Sequence):
485
+ pass
486
+
487
+ TAMPApexUpdate.componentType = namedtype.NamedTypes(
488
+ namedtype.DefaultedNamedType('version',
489
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
490
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
491
+ namedtype.DefaultedNamedType('terse',
492
+ TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,
493
+ tag.tagFormatSimple, 1)).subtype(value='verbose')),
494
+ namedtype.NamedType('msgRef', TAMPMsgRef()),
495
+ namedtype.NamedType('clearTrustAnchors', univ.Boolean()),
496
+ namedtype.NamedType('clearCommunities', univ.Boolean()),
497
+ namedtype.OptionalNamedType('seqNumber', SeqNumber()),
498
+ namedtype.NamedType('apexTA', TrustAnchorChoice())
499
+ )
500
+
501
+
502
+ tamp_apex_update = rfc5652.ContentInfo()
503
+ tamp_apex_update['contentType'] = id_ct_TAMP_apexUpdate
504
+ tamp_apex_update['content'] = TAMPApexUpdate()
505
+
506
+
507
+ # Apex Trust Anchor Update Confirm Message
508
+
509
+ id_ct_TAMP_apexUpdateConfirm = id_tamp + (6,)
510
+
511
+
512
+ class TerseApexUpdateConfirm(StatusCode):
513
+ pass
514
+
515
+
516
+ class VerboseApexUpdateConfirm(univ.Sequence):
517
+ pass
518
+
519
+ VerboseApexUpdateConfirm.componentType = namedtype.NamedTypes(
520
+ namedtype.NamedType('status', StatusCode()),
521
+ namedtype.NamedType('taInfo', TrustAnchorChoiceList()),
522
+ namedtype.OptionalNamedType('communities',
523
+ CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,
524
+ tag.tagFormatSimple, 0))),
525
+ namedtype.OptionalNamedType('tampSeqNumbers',
526
+ TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(tag.tagClassContext,
527
+ tag.tagFormatSimple, 1)))
528
+ )
529
+
530
+
531
+ class ApexUpdateConfirm(univ.Choice):
532
+ pass
533
+
534
+ ApexUpdateConfirm.componentType = namedtype.NamedTypes(
535
+ namedtype.NamedType('terseApexConfirm',
536
+ TerseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,
537
+ tag.tagFormatSimple, 0))),
538
+ namedtype.NamedType('verboseApexConfirm',
539
+ VerboseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,
540
+ tag.tagFormatConstructed, 1)))
541
+ )
542
+
543
+
544
+ class TAMPApexUpdateConfirm(univ.Sequence):
545
+ pass
546
+
547
+ TAMPApexUpdateConfirm.componentType = namedtype.NamedTypes(
548
+ namedtype.DefaultedNamedType('version',
549
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
550
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
551
+ namedtype.NamedType('apexReplace', TAMPMsgRef()),
552
+ namedtype.NamedType('apexConfirm', ApexUpdateConfirm())
553
+ )
554
+
555
+
556
+ tamp_apex_update_confirm = rfc5652.ContentInfo()
557
+ tamp_apex_update_confirm['contentType'] = id_ct_TAMP_apexUpdateConfirm
558
+ tamp_apex_update_confirm['content'] = TAMPApexUpdateConfirm()
559
+
560
+
561
+ # Community Update Message
562
+
563
+ id_ct_TAMP_communityUpdate = id_tamp + (7,)
564
+
565
+
566
+ class CommunityUpdates(univ.Sequence):
567
+ pass
568
+
569
+ CommunityUpdates.componentType = namedtype.NamedTypes(
570
+ namedtype.OptionalNamedType('remove',
571
+ CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,
572
+ tag.tagFormatSimple, 1))),
573
+ namedtype.OptionalNamedType('add',
574
+ CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,
575
+ tag.tagFormatSimple, 2)))
576
+ )
577
+
578
+
579
+ class TAMPCommunityUpdate(univ.Sequence):
580
+ pass
581
+
582
+ TAMPCommunityUpdate.componentType = namedtype.NamedTypes(
583
+ namedtype.DefaultedNamedType('version',
584
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
585
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
586
+ namedtype.DefaultedNamedType('terse',
587
+ TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,
588
+ tag.tagFormatSimple, 1)).subtype(value='verbose')),
589
+ namedtype.NamedType('msgRef', TAMPMsgRef()),
590
+ namedtype.NamedType('updates', CommunityUpdates())
591
+ )
592
+
593
+
594
+ tamp_community_update = rfc5652.ContentInfo()
595
+ tamp_community_update['contentType'] = id_ct_TAMP_communityUpdate
596
+ tamp_community_update['content'] = TAMPCommunityUpdate()
597
+
598
+
599
+ # Community Update Confirm Message
600
+
601
+ id_ct_TAMP_communityUpdateConfirm = id_tamp + (8,)
602
+
603
+
604
+ class TerseCommunityConfirm(StatusCode):
605
+ pass
606
+
607
+
608
+ class VerboseCommunityConfirm(univ.Sequence):
609
+ pass
610
+
611
+ VerboseCommunityConfirm.componentType = namedtype.NamedTypes(
612
+ namedtype.NamedType('status', StatusCode()),
613
+ namedtype.OptionalNamedType('communities', CommunityIdentifierList())
614
+ )
615
+
616
+
617
+ class CommunityConfirm(univ.Choice):
618
+ pass
619
+
620
+ CommunityConfirm.componentType = namedtype.NamedTypes(
621
+ namedtype.NamedType('terseCommConfirm',
622
+ TerseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,
623
+ tag.tagFormatSimple, 0))),
624
+ namedtype.NamedType('verboseCommConfirm',
625
+ VerboseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,
626
+ tag.tagFormatConstructed, 1)))
627
+ )
628
+
629
+
630
+ class TAMPCommunityUpdateConfirm(univ.Sequence):
631
+ pass
632
+
633
+ TAMPCommunityUpdateConfirm.componentType = namedtype.NamedTypes(
634
+ namedtype.DefaultedNamedType('version',
635
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
636
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
637
+ namedtype.NamedType('update', TAMPMsgRef()),
638
+ namedtype.NamedType('commConfirm', CommunityConfirm())
639
+ )
640
+
641
+
642
+ tamp_community_update_confirm = rfc5652.ContentInfo()
643
+ tamp_community_update_confirm['contentType'] = id_ct_TAMP_communityUpdateConfirm
644
+ tamp_community_update_confirm['content'] = TAMPCommunityUpdateConfirm()
645
+
646
+
647
+ # Sequence Number Adjust Message
648
+
649
+ id_ct_TAMP_seqNumAdjust = id_tamp + (10,)
650
+
651
+
652
+ class SequenceNumberAdjust(univ.Sequence):
653
+ pass
654
+
655
+ SequenceNumberAdjust.componentType = namedtype.NamedTypes(
656
+ namedtype.DefaultedNamedType('version',
657
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
658
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
659
+ namedtype.NamedType('msgRef', TAMPMsgRef())
660
+ )
661
+
662
+
663
+ tamp_sequence_number_adjust = rfc5652.ContentInfo()
664
+ tamp_sequence_number_adjust['contentType'] = id_ct_TAMP_seqNumAdjust
665
+ tamp_sequence_number_adjust['content'] = SequenceNumberAdjust()
666
+
667
+
668
+ # Sequence Number Adjust Confirm Message
669
+
670
+ id_ct_TAMP_seqNumAdjustConfirm = id_tamp + (11,)
671
+
672
+
673
+ class SequenceNumberAdjustConfirm(univ.Sequence):
674
+ pass
675
+
676
+ SequenceNumberAdjustConfirm.componentType = namedtype.NamedTypes(
677
+ namedtype.DefaultedNamedType('version',
678
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
679
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
680
+ namedtype.NamedType('adjust', TAMPMsgRef()),
681
+ namedtype.NamedType('status', StatusCode())
682
+ )
683
+
684
+
685
+ tamp_sequence_number_adjust_confirm = rfc5652.ContentInfo()
686
+ tamp_sequence_number_adjust_confirm['contentType'] = id_ct_TAMP_seqNumAdjustConfirm
687
+ tamp_sequence_number_adjust_confirm['content'] = SequenceNumberAdjustConfirm()
688
+
689
+
690
+ # TAMP Error Message
691
+
692
+ id_ct_TAMP_error = id_tamp + (9,)
693
+
694
+
695
+ class TAMPError(univ.Sequence):
696
+ pass
697
+
698
+ TAMPError.componentType = namedtype.NamedTypes(
699
+ namedtype.DefaultedNamedType('version',
700
+ TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,
701
+ tag.tagFormatSimple, 0)).subtype(value='v2')),
702
+ namedtype.NamedType('msgType', univ.ObjectIdentifier()),
703
+ namedtype.NamedType('status', StatusCode()),
704
+ namedtype.OptionalNamedType('msgRef', TAMPMsgRef())
705
+ )
706
+
707
+
708
+ tamp_error = rfc5652.ContentInfo()
709
+ tamp_error['contentType'] = id_ct_TAMP_error
710
+ tamp_error['content'] = TAMPError()
711
+
712
+
713
+ # Object Identifier Arc for Attributes
714
+
715
+ id_attributes = univ.ObjectIdentifier('2.16.840.1.101.2.1.5')
716
+
717
+
718
+ # contingency-public-key-decrypt-key unsigned attribute
719
+
720
+ id_aa_TAMP_contingencyPublicKeyDecryptKey = id_attributes + (63,)
721
+
722
+
723
+ class PlaintextSymmetricKey(univ.OctetString):
724
+ pass
725
+
726
+
727
+ contingency_public_key_decrypt_key = Attribute()
728
+ contingency_public_key_decrypt_key['type'] = id_aa_TAMP_contingencyPublicKeyDecryptKey
729
+ contingency_public_key_decrypt_key['values'][0] = PlaintextSymmetricKey()
730
+
731
+
732
+ # id-pe-wrappedApexContinKey extension
733
+
734
+ id_pe_wrappedApexContinKey = univ.ObjectIdentifier('1.3.6.1.5.5.7.1.20')
735
+
736
+
737
+ class ApexContingencyKey(univ.Sequence):
738
+ pass
739
+
740
+ ApexContingencyKey.componentType = namedtype.NamedTypes(
741
+ namedtype.NamedType('wrapAlgorithm', AlgorithmIdentifier()),
742
+ namedtype.NamedType('wrappedContinPubKey', univ.OctetString())
743
+ )
744
+
745
+
746
+ wrappedApexContinKey = Extension()
747
+ wrappedApexContinKey['extnID'] = id_pe_wrappedApexContinKey
748
+ wrappedApexContinKey['critical'] = 0
749
+ wrappedApexContinKey['extnValue'] = univ.OctetString()
750
+
751
+
752
+ # Update the CMS Content Types Map
753
+
754
+ _cmsContentTypesMapUpdate = {
755
+ id_ct_TAMP_statusQuery: TAMPStatusQuery(),
756
+ id_ct_TAMP_statusResponse: TAMPStatusResponse(),
757
+ id_ct_TAMP_update: TAMPUpdate(),
758
+ id_ct_TAMP_updateConfirm: TAMPUpdateConfirm(),
759
+ id_ct_TAMP_apexUpdate: TAMPApexUpdate(),
760
+ id_ct_TAMP_apexUpdateConfirm: TAMPApexUpdateConfirm(),
761
+ id_ct_TAMP_communityUpdate: TAMPCommunityUpdate(),
762
+ id_ct_TAMP_communityUpdateConfirm: TAMPCommunityUpdateConfirm(),
763
+ id_ct_TAMP_seqNumAdjust: SequenceNumberAdjust(),
764
+ id_ct_TAMP_seqNumAdjustConfirm: SequenceNumberAdjustConfirm(),
765
+ id_ct_TAMP_error: TAMPError(),
766
+ }
767
+
768
+ cmsContentTypesMap.update(_cmsContentTypesMapUpdate)
769
+
770
+
771
+ # Update the CMS Attributes Map
772
+
773
+ _cmsAttributesMapUpdate = {
774
+ id_aa_TAMP_contingencyPublicKeyDecryptKey: PlaintextSymmetricKey(),
775
+ }
776
+
777
+ cmsAttributesMap.update(_cmsAttributesMapUpdate)
778
+
779
+
780
+ # Update the Certificate Extensions Map
781
+
782
+ _certificateExtensionsMap = {
783
+ id_pe_wrappedApexContinKey: ApexContingencyKey(),
784
+ }
785
+
786
+ certificateExtensionsMap.update(_certificateExtensionsMap)