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,303 @@
1
+ #
2
+ # This file is part of pyasn1-alt-modules software.
3
+ #
4
+ # Modified by Russ Housley to import from RFC 5280 and RFC 5652
5
+ #
6
+ # Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
7
+ # Copyright (c) 2021-2024, Vigil Security, LLC
8
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
9
+ #
10
+ # X.509 certificate Request Message Format (CRMF) syntax
11
+ #
12
+ # ASN.1 source from:
13
+ # http://tools.ietf.org/html/rfc2511
14
+ #
15
+ # Sample captures could be obtained with OpenSSL
16
+ #
17
+ from pyasn1.type import char
18
+ from pyasn1.type import constraint
19
+ from pyasn1.type import namedtype
20
+ from pyasn1.type import namedval
21
+ from pyasn1.type import tag
22
+ from pyasn1.type import univ
23
+
24
+ from pyasn1_alt_modules import rfc5652
25
+ from pyasn1_alt_modules import rfc5280
26
+
27
+ MAX = float('inf')
28
+
29
+
30
+ # Imports from RFC 5280
31
+
32
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
33
+
34
+ AttributeTypeAndValue = rfc5280.AttributeTypeAndValue
35
+
36
+ Extensions = rfc5280.Extensions
37
+
38
+ GeneralName = rfc5280.GeneralName
39
+
40
+ Name = rfc5280.Name
41
+
42
+ SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo
43
+
44
+ Time = rfc5280.Time
45
+
46
+ UniqueIdentifier = rfc5280.UniqueIdentifier
47
+
48
+ Version = rfc5280.Version
49
+
50
+
51
+ # Imports from RFC 5652
52
+
53
+ EnvelopedData = rfc5652.EnvelopedData
54
+
55
+
56
+ # Object Identifiers
57
+
58
+ id_pkix = univ.ObjectIdentifier('1.3.6.1.5.5.7')
59
+ id_pkip = univ.ObjectIdentifier('1.3.6.1.5.5.7.5')
60
+ id_regCtrl = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1')
61
+ id_regCtrl_regToken = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.1')
62
+ id_regCtrl_authenticator = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.2')
63
+ id_regCtrl_pkiPublicationInfo = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.3')
64
+ id_regCtrl_pkiArchiveOptions = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.4')
65
+ id_regCtrl_oldCertID = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.5')
66
+ id_regCtrl_protocolEncrKey = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.1.6')
67
+ id_regInfo = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2')
68
+ id_regInfo_utf8Pairs = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2.1')
69
+ id_regInfo_certReq = univ.ObjectIdentifier('1.3.6.1.5.5.7.5.2.2')
70
+
71
+
72
+ # This should be in PKIX Certificate Extensions module
73
+ #
74
+ # class GeneralName(univ.OctetString):
75
+ # pass
76
+ #
77
+ # end of PKIX Certificate Extensions module
78
+
79
+
80
+ class UTF8Pairs(char.UTF8String):
81
+ pass
82
+
83
+
84
+ class ProtocolEncrKey(SubjectPublicKeyInfo):
85
+ pass
86
+
87
+
88
+ class CertId(univ.Sequence):
89
+ componentType = namedtype.NamedTypes(
90
+ namedtype.NamedType('issuer', GeneralName()),
91
+ namedtype.NamedType('serialNumber', univ.Integer())
92
+ )
93
+
94
+
95
+ class OldCertId(CertId):
96
+ pass
97
+
98
+
99
+ class KeyGenParameters(univ.OctetString):
100
+ pass
101
+
102
+
103
+ class EncryptedValue(univ.Sequence):
104
+ componentType = namedtype.NamedTypes(
105
+ namedtype.OptionalNamedType('intendedAlg', AlgorithmIdentifier().subtype(
106
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
107
+ namedtype.OptionalNamedType('symmAlg', AlgorithmIdentifier().subtype(
108
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
109
+ namedtype.OptionalNamedType('encSymmKey', univ.BitString().subtype(
110
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
111
+ namedtype.OptionalNamedType('keyAlg', AlgorithmIdentifier().subtype(
112
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
113
+ namedtype.OptionalNamedType('valueHint', univ.OctetString().subtype(
114
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
115
+ namedtype.NamedType('encValue', univ.BitString())
116
+ )
117
+
118
+
119
+ class EncryptedKey(univ.Choice):
120
+ componentType = namedtype.NamedTypes(
121
+ namedtype.NamedType('encryptedValue', EncryptedValue()),
122
+ namedtype.NamedType('envelopedData', EnvelopedData().subtype(
123
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
124
+ )
125
+
126
+
127
+ class PKIArchiveOptions(univ.Choice):
128
+ componentType = namedtype.NamedTypes(
129
+ namedtype.NamedType('encryptedPrivKey', EncryptedKey().subtype(
130
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
131
+ namedtype.NamedType('keyGenParameters', KeyGenParameters().subtype(
132
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
133
+ namedtype.NamedType('archiveRemGenPrivKey',
134
+ univ.Boolean().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
135
+ )
136
+
137
+
138
+ class SinglePubInfo(univ.Sequence):
139
+ componentType = namedtype.NamedTypes(
140
+ namedtype.NamedType('pubMethod', univ.Integer(
141
+ namedValues=namedval.NamedValues(
142
+ ('dontCare', 0),
143
+ ('x500', 1),
144
+ ('web', 2),
145
+ ('ldap', 3)))),
146
+ namedtype.OptionalNamedType('pubLocation', GeneralName())
147
+ )
148
+
149
+
150
+ class PKIPublicationInfo(univ.Sequence):
151
+ componentType = namedtype.NamedTypes(
152
+ namedtype.NamedType('action',
153
+ univ.Integer(namedValues=namedval.NamedValues(
154
+ ('dontPublish', 0),
155
+ ('pleasePublish', 1)))),
156
+ namedtype.OptionalNamedType('pubInfos', univ.SequenceOf(componentType=SinglePubInfo()).subtype(
157
+ sizeSpec=constraint.ValueSizeConstraint(1, MAX)))
158
+ )
159
+
160
+
161
+ class Authenticator(char.UTF8String):
162
+ pass
163
+
164
+
165
+ class RegToken(char.UTF8String):
166
+ pass
167
+
168
+
169
+ class SubsequentMessage(univ.Integer):
170
+ namedValues = namedval.NamedValues(
171
+ ('encrCert', 0),
172
+ ('challengeResp', 1)
173
+ )
174
+
175
+
176
+ class POPOPrivKey(univ.Choice):
177
+ componentType = namedtype.NamedTypes(
178
+ namedtype.NamedType('thisMessage',
179
+ univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
180
+ namedtype.NamedType('subsequentMessage', SubsequentMessage().subtype(
181
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
182
+ namedtype.NamedType('dhMAC',
183
+ univ.BitString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
184
+ )
185
+
186
+
187
+ class PBMParameter(univ.Sequence):
188
+ componentType = namedtype.NamedTypes(
189
+ namedtype.NamedType('salt', univ.OctetString()),
190
+ namedtype.NamedType('owf', AlgorithmIdentifier()),
191
+ namedtype.NamedType('iterationCount', univ.Integer()),
192
+ namedtype.NamedType('mac', AlgorithmIdentifier())
193
+ )
194
+
195
+
196
+ class PKMACValue(univ.Sequence):
197
+ componentType = namedtype.NamedTypes(
198
+ namedtype.NamedType('algId', AlgorithmIdentifier()),
199
+ namedtype.NamedType('value', univ.BitString())
200
+ )
201
+
202
+
203
+ class POPOSigningKeyInput(univ.Sequence):
204
+ componentType = namedtype.NamedTypes(
205
+ namedtype.NamedType(
206
+ 'authInfo', univ.Choice(
207
+ componentType=namedtype.NamedTypes(
208
+ namedtype.NamedType('sender',
209
+ GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
210
+ ),
211
+ namedtype.NamedType('publicKeyMAC', PKMACValue())
212
+ )
213
+ )
214
+ ),
215
+ namedtype.NamedType('publicKey', SubjectPublicKeyInfo())
216
+ )
217
+
218
+
219
+ class POPOSigningKey(univ.Sequence):
220
+ componentType = namedtype.NamedTypes(
221
+ namedtype.OptionalNamedType('poposkInput', POPOSigningKeyInput().subtype(
222
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
223
+ namedtype.NamedType('algorithmIdentifier', AlgorithmIdentifier()),
224
+ namedtype.NamedType('signature', univ.BitString())
225
+ )
226
+
227
+
228
+ class ProofOfPossession(univ.Choice):
229
+ componentType = namedtype.NamedTypes(
230
+ namedtype.NamedType('raVerified',
231
+ univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
232
+ namedtype.NamedType('signature', POPOSigningKey().subtype(
233
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
234
+ namedtype.NamedType('keyEncipherment', POPOPrivKey().subtype(
235
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
236
+ namedtype.NamedType('keyAgreement', POPOPrivKey().subtype(
237
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
238
+ )
239
+
240
+
241
+ class Controls(univ.SequenceOf):
242
+ componentType = AttributeTypeAndValue()
243
+ sizeSpec = univ.SequenceOf.sizeSpec + constraint.ValueSizeConstraint(1, MAX)
244
+
245
+
246
+ class OptionalValidity(univ.Sequence):
247
+ componentType = namedtype.NamedTypes(
248
+ namedtype.OptionalNamedType('notBefore',
249
+ Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
250
+ namedtype.OptionalNamedType('notAfter',
251
+ Time().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
252
+ )
253
+
254
+
255
+ class CertTemplate(univ.Sequence):
256
+ componentType = namedtype.NamedTypes(
257
+ namedtype.OptionalNamedType('version', Version().subtype(
258
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
259
+ namedtype.OptionalNamedType('serialNumber', univ.Integer().subtype(
260
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
261
+ namedtype.OptionalNamedType('signingAlg', AlgorithmIdentifier().subtype(
262
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
263
+ namedtype.OptionalNamedType('issuer', Name().subtype(
264
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
265
+ namedtype.OptionalNamedType('validity', OptionalValidity().subtype(
266
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
267
+ namedtype.OptionalNamedType('subject', Name().subtype(
268
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
269
+ namedtype.OptionalNamedType('publicKey', SubjectPublicKeyInfo().subtype(
270
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
271
+ namedtype.OptionalNamedType('issuerUID', UniqueIdentifier().subtype(
272
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
273
+ namedtype.OptionalNamedType('subjectUID', UniqueIdentifier().subtype(
274
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8))),
275
+ namedtype.OptionalNamedType('extensions', Extensions().subtype(
276
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
277
+ )
278
+
279
+
280
+ class CertRequest(univ.Sequence):
281
+ componentType = namedtype.NamedTypes(
282
+ namedtype.NamedType('certReqId', univ.Integer()),
283
+ namedtype.NamedType('certTemplate', CertTemplate()),
284
+ namedtype.OptionalNamedType('controls', Controls())
285
+ )
286
+
287
+
288
+ class CertReq(CertRequest):
289
+ pass
290
+
291
+
292
+ class CertReqMsg(univ.Sequence):
293
+ componentType = namedtype.NamedTypes(
294
+ namedtype.NamedType('certReq', CertRequest()),
295
+ namedtype.OptionalNamedType('pop', ProofOfPossession()),
296
+ namedtype.OptionalNamedType('regInfo', univ.SequenceOf(componentType=AttributeTypeAndValue()).subtype(
297
+ sizeSpec=constraint.ValueSizeConstraint(1, MAX)))
298
+ )
299
+
300
+
301
+ class CertReqMessages(univ.SequenceOf):
302
+ componentType = CertReqMsg()
303
+ sizeSpec = univ.SequenceOf.sizeSpec + constraint.ValueSizeConstraint(1, MAX)
@@ -0,0 +1,34 @@
1
+ #
2
+ # This file is part of pyasn1-modules.
3
+ #
4
+ # Created by Russ Housley.
5
+ #
6
+ # Copyright (c) 2021-2024, Vigil Security, LLC
7
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
8
+ #
9
+ # Identifiers for the Key Exchange Algorithm (KEA)
10
+ #
11
+ # ASN.1 source from:
12
+ # https://www.rfc-editor.org/rfc/rfc2528.txt
13
+ # https://www.rfc-editor.org/rfc/rfc3279.txt
14
+ #
15
+
16
+ from pyasn1_alt_modules import rfc3279
17
+
18
+
19
+ # The KEA object identifier is defined in RFC 3279
20
+
21
+ id_keyExchangeAlgorithm = rfc3279.id_keyExchangeAlgorithm
22
+
23
+
24
+ # The KEA parameters structure is defined in RFC 3279
25
+
26
+ KEA_Parms_Id = rfc3279.KEA_Parms_Id
27
+
28
+
29
+ # The Algorithm Identifier map is updated by importing rfc3279.
30
+ # To save looking it up, the map is updated with this entry:
31
+ #
32
+ # _algorithmIdentifierMapUpdate = {
33
+ # id_keyExchangeAlgorithm: KEA_Parms_Id(),
34
+ # }
@@ -0,0 +1,226 @@
1
+ #
2
+ # This file is part of pyasn1-alt-modules software.
3
+ #
4
+ # Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
5
+ # Copyright (c) 2021-2024, Vigil Security, LLC
6
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
7
+ #
8
+ # OCSP request/response syntax
9
+ #
10
+ # Derived from a minimal OCSP library (RFC2560) code written by
11
+ # Bud P. Bruegger <bud@ancitel.it>
12
+ # Copyright: Ancitel, S.p.a, Rome, Italy
13
+ # License: BSD
14
+ #
15
+
16
+ #
17
+ # current limitations:
18
+ # * request and response works only for a single certificate
19
+ # * only some values are parsed out of the response
20
+ # * the request does't set a nonce nor signature
21
+ # * there is no signature validation of the response
22
+ # * dates are left as strings in GeneralizedTime format -- datetime.datetime
23
+ # would be nicer
24
+ #
25
+ from pyasn1.type import namedtype
26
+ from pyasn1.type import namedval
27
+ from pyasn1.type import tag
28
+ from pyasn1.type import univ
29
+ from pyasn1.type import useful
30
+
31
+ from pyasn1_alt_modules import rfc2459
32
+
33
+
34
+ # Start of OCSP module definitions
35
+
36
+ # This should be in directory Authentication Framework (X.509) module
37
+
38
+ class CRLReason(univ.Enumerated):
39
+ namedValues = namedval.NamedValues(
40
+ ('unspecified', 0),
41
+ ('keyCompromise', 1),
42
+ ('cACompromise', 2),
43
+ ('affiliationChanged', 3),
44
+ ('superseded', 4),
45
+ ('cessationOfOperation', 5),
46
+ ('certificateHold', 6),
47
+ ('removeFromCRL', 8),
48
+ ('privilegeWithdrawn', 9),
49
+ ('aACompromise', 10)
50
+ )
51
+
52
+
53
+ # end of directory Authentication Framework (X.509) module
54
+
55
+ # This should be in PKIX Certificate Extensions module
56
+
57
+ class GeneralName(univ.OctetString):
58
+ pass
59
+
60
+
61
+ # end of PKIX Certificate Extensions module
62
+
63
+ id_kp_OCSPSigning = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 3, 9))
64
+ id_pkix_ocsp = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1))
65
+ id_pkix_ocsp_basic = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 1))
66
+ id_pkix_ocsp_nonce = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 2))
67
+ id_pkix_ocsp_crl = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 3))
68
+ id_pkix_ocsp_response = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 4))
69
+ id_pkix_ocsp_nocheck = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 5))
70
+ id_pkix_ocsp_archive_cutoff = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 6))
71
+ id_pkix_ocsp_service_locator = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 48, 1, 7))
72
+
73
+
74
+ class AcceptableResponses(univ.SequenceOf):
75
+ componentType = univ.ObjectIdentifier()
76
+
77
+
78
+ class ArchiveCutoff(useful.GeneralizedTime):
79
+ pass
80
+
81
+
82
+ class UnknownInfo(univ.Null):
83
+ pass
84
+
85
+
86
+ class RevokedInfo(univ.Sequence):
87
+ componentType = namedtype.NamedTypes(
88
+ namedtype.NamedType('revocationTime', useful.GeneralizedTime()),
89
+ namedtype.OptionalNamedType('revocationReason', CRLReason().subtype(
90
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
91
+ )
92
+
93
+
94
+ class CertID(univ.Sequence):
95
+ componentType = namedtype.NamedTypes(
96
+ namedtype.NamedType('hashAlgorithm', rfc2459.AlgorithmIdentifier()),
97
+ namedtype.NamedType('issuerNameHash', univ.OctetString()),
98
+ namedtype.NamedType('issuerKeyHash', univ.OctetString()),
99
+ namedtype.NamedType('serialNumber', rfc2459.CertificateSerialNumber())
100
+ )
101
+
102
+
103
+ class CertStatus(univ.Choice):
104
+ componentType = namedtype.NamedTypes(
105
+ namedtype.NamedType('good',
106
+ univ.Null().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
107
+ namedtype.NamedType('revoked',
108
+ RevokedInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
109
+ namedtype.NamedType('unknown',
110
+ UnknownInfo().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
111
+ )
112
+
113
+
114
+ class SingleResponse(univ.Sequence):
115
+ componentType = namedtype.NamedTypes(
116
+ namedtype.NamedType('certID', CertID()),
117
+ namedtype.NamedType('certStatus', CertStatus()),
118
+ namedtype.NamedType('thisUpdate', useful.GeneralizedTime()),
119
+ namedtype.OptionalNamedType('nextUpdate', useful.GeneralizedTime().subtype(
120
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
121
+ namedtype.OptionalNamedType('singleExtensions', rfc2459.Extensions().subtype(
122
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
123
+ )
124
+
125
+
126
+ class KeyHash(univ.OctetString):
127
+ pass
128
+
129
+
130
+ class ResponderID(univ.Choice):
131
+ componentType = namedtype.NamedTypes(
132
+ namedtype.NamedType('byName',
133
+ rfc2459.Name().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
134
+ namedtype.NamedType('byKey',
135
+ KeyHash().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
136
+ )
137
+
138
+
139
+ class Version(univ.Integer):
140
+ namedValues = namedval.NamedValues(('v1', 0))
141
+
142
+
143
+ class ResponseData(univ.Sequence):
144
+ componentType = namedtype.NamedTypes(
145
+ namedtype.DefaultedNamedType('version', Version('v1').subtype(
146
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
147
+ namedtype.NamedType('responderID', ResponderID()),
148
+ namedtype.NamedType('producedAt', useful.GeneralizedTime()),
149
+ namedtype.NamedType('responses', univ.SequenceOf(componentType=SingleResponse())),
150
+ namedtype.OptionalNamedType('responseExtensions', rfc2459.Extensions().subtype(
151
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
152
+ )
153
+
154
+
155
+ class BasicOCSPResponse(univ.Sequence):
156
+ componentType = namedtype.NamedTypes(
157
+ namedtype.NamedType('tbsResponseData', ResponseData()),
158
+ namedtype.NamedType('signatureAlgorithm', rfc2459.AlgorithmIdentifier()),
159
+ namedtype.NamedType('signature', univ.BitString()),
160
+ namedtype.OptionalNamedType('certs', univ.SequenceOf(componentType=rfc2459.Certificate()).subtype(
161
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
162
+ )
163
+
164
+
165
+ class ResponseBytes(univ.Sequence):
166
+ componentType = namedtype.NamedTypes(
167
+ namedtype.NamedType('responseType', univ.ObjectIdentifier()),
168
+ namedtype.NamedType('response', univ.OctetString())
169
+ )
170
+
171
+
172
+ class OCSPResponseStatus(univ.Enumerated):
173
+ namedValues = namedval.NamedValues(
174
+ ('successful', 0),
175
+ ('malformedRequest', 1),
176
+ ('internalError', 2),
177
+ ('tryLater', 3),
178
+ ('undefinedStatus', 4), # should never occur
179
+ ('sigRequired', 5),
180
+ ('unauthorized', 6)
181
+ )
182
+
183
+
184
+ class OCSPResponse(univ.Sequence):
185
+ componentType = namedtype.NamedTypes(
186
+ namedtype.NamedType('responseStatus', OCSPResponseStatus()),
187
+ namedtype.OptionalNamedType('responseBytes', ResponseBytes().subtype(
188
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
189
+ )
190
+
191
+
192
+ class Request(univ.Sequence):
193
+ componentType = namedtype.NamedTypes(
194
+ namedtype.NamedType('reqCert', CertID()),
195
+ namedtype.OptionalNamedType('singleRequestExtensions', rfc2459.Extensions().subtype(
196
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
197
+ )
198
+
199
+
200
+ class Signature(univ.Sequence):
201
+ componentType = namedtype.NamedTypes(
202
+ namedtype.NamedType('signatureAlgorithm', rfc2459.AlgorithmIdentifier()),
203
+ namedtype.NamedType('signature', univ.BitString()),
204
+ namedtype.OptionalNamedType('certs', univ.SequenceOf(componentType=rfc2459.Certificate()).subtype(
205
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
206
+ )
207
+
208
+
209
+ class TBSRequest(univ.Sequence):
210
+ componentType = namedtype.NamedTypes(
211
+ namedtype.DefaultedNamedType('version', Version('v1').subtype(
212
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
213
+ namedtype.OptionalNamedType('requestorName', GeneralName().subtype(
214
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
215
+ namedtype.NamedType('requestList', univ.SequenceOf(componentType=Request())),
216
+ namedtype.OptionalNamedType('requestExtensions', rfc2459.Extensions().subtype(
217
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
218
+ )
219
+
220
+
221
+ class OCSPRequest(univ.Sequence):
222
+ componentType = namedtype.NamedTypes(
223
+ namedtype.NamedType('tbsRequest', TBSRequest()),
224
+ namedtype.OptionalNamedType('optionalSignature', Signature().subtype(
225
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
226
+ )
@@ -0,0 +1,37 @@
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
+ #
6
+ # Copyright (c) 2019-2024, Vigil Security, LLC
7
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
8
+ #
9
+ # Diffie-Hellman Key Agreement
10
+ #
11
+ # ASN.1 source from:
12
+ # https://www.rfc-editor.org/rfc/rfc2631.txt
13
+ # https://www.rfc-editor.org/errata/eid5897
14
+ #
15
+
16
+ from pyasn1.type import constraint
17
+ from pyasn1.type import namedtype
18
+ from pyasn1.type import tag
19
+ from pyasn1.type import univ
20
+
21
+
22
+ class KeySpecificInfo(univ.Sequence):
23
+ componentType = namedtype.NamedTypes(
24
+ namedtype.NamedType('algorithm', univ.ObjectIdentifier()),
25
+ namedtype.NamedType('counter', univ.OctetString().subtype(
26
+ subtypeSpec=constraint.ValueSizeConstraint(4, 4)))
27
+ )
28
+
29
+
30
+ class OtherInfo(univ.Sequence):
31
+ componentType = namedtype.NamedTypes(
32
+ namedtype.NamedType('keyInfo', KeySpecificInfo()),
33
+ namedtype.OptionalNamedType('partyAInfo', univ.OctetString().subtype(
34
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
35
+ namedtype.NamedType('suppPubInfo', univ.OctetString().subtype(
36
+ explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
37
+ )