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,564 @@
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
+ # LDAP message syntax
9
+ #
10
+ # ASN.1 source from:
11
+ # http://www.trl.ibm.com/projects/xml/xss4j/data/asn1/grammars/ldap.asn
12
+ #
13
+ # Sample captures from:
14
+ # http://wiki.wireshark.org/SampleCaptures/
15
+ #
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
+ maxInt = univ.Integer(2147483647)
23
+
24
+
25
+ class LDAPString(univ.OctetString):
26
+ pass
27
+
28
+
29
+ class LDAPOID(univ.OctetString):
30
+ pass
31
+
32
+
33
+ class LDAPDN(LDAPString):
34
+ pass
35
+
36
+
37
+ class RelativeLDAPDN(LDAPString):
38
+ pass
39
+
40
+
41
+ class AttributeType(LDAPString):
42
+ pass
43
+
44
+
45
+ class AttributeDescription(LDAPString):
46
+ pass
47
+
48
+
49
+ class AttributeDescriptionList(univ.SequenceOf):
50
+ componentType = AttributeDescription()
51
+
52
+
53
+ class AttributeValue(univ.OctetString):
54
+ pass
55
+
56
+
57
+ class AssertionValue(univ.OctetString):
58
+ pass
59
+
60
+
61
+ class AttributeValueAssertion(univ.Sequence):
62
+ componentType = namedtype.NamedTypes(
63
+ namedtype.NamedType('attributeDesc', AttributeDescription()),
64
+ namedtype.NamedType('assertionValue', AssertionValue())
65
+ )
66
+
67
+
68
+ class Attribute(univ.Sequence):
69
+ componentType = namedtype.NamedTypes(
70
+ namedtype.NamedType('type', AttributeDescription()),
71
+ namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
72
+ )
73
+
74
+
75
+ class MatchingRuleId(LDAPString):
76
+ pass
77
+
78
+
79
+ class Control(univ.Sequence):
80
+ componentType = namedtype.NamedTypes(
81
+ namedtype.NamedType('controlType', LDAPOID()),
82
+ namedtype.DefaultedNamedType('criticality', univ.Boolean('False')),
83
+ namedtype.OptionalNamedType('controlValue', univ.OctetString())
84
+ )
85
+
86
+
87
+ class Controls(univ.SequenceOf):
88
+ componentType = Control()
89
+
90
+
91
+ class LDAPURL(LDAPString):
92
+ pass
93
+
94
+
95
+ class Referral(univ.SequenceOf):
96
+ componentType = LDAPURL()
97
+
98
+
99
+ class SaslCredentials(univ.Sequence):
100
+ componentType = namedtype.NamedTypes(
101
+ namedtype.NamedType('mechanism', LDAPString()),
102
+ namedtype.OptionalNamedType('credentials', univ.OctetString())
103
+ )
104
+
105
+
106
+ class AuthenticationChoice(univ.Choice):
107
+ componentType = namedtype.NamedTypes(
108
+ namedtype.NamedType('simple', univ.OctetString().subtype(
109
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
110
+ namedtype.NamedType('reserved-1', univ.OctetString().subtype(
111
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
112
+ namedtype.NamedType('reserved-2', univ.OctetString().subtype(
113
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
114
+ namedtype.NamedType('sasl',
115
+ SaslCredentials().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
116
+ )
117
+
118
+
119
+ class BindRequest(univ.Sequence):
120
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
121
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 0)
122
+ )
123
+ componentType = namedtype.NamedTypes(
124
+ namedtype.NamedType('version', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 127))),
125
+ namedtype.NamedType('name', LDAPDN()),
126
+ namedtype.NamedType('authentication', AuthenticationChoice())
127
+ )
128
+
129
+
130
+ class PartialAttributeList(univ.SequenceOf):
131
+ componentType = univ.Sequence(
132
+ componentType=namedtype.NamedTypes(
133
+ namedtype.NamedType('type', AttributeDescription()),
134
+ namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
135
+ )
136
+ )
137
+
138
+
139
+ class SearchResultEntry(univ.Sequence):
140
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
141
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 4)
142
+ )
143
+ componentType = namedtype.NamedTypes(
144
+ namedtype.NamedType('objectName', LDAPDN()),
145
+ namedtype.NamedType('attributes', PartialAttributeList())
146
+ )
147
+
148
+
149
+ class MatchingRuleAssertion(univ.Sequence):
150
+ componentType = namedtype.NamedTypes(
151
+ namedtype.OptionalNamedType('matchingRule', MatchingRuleId().subtype(
152
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
153
+ namedtype.OptionalNamedType('type', AttributeDescription().subtype(
154
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
155
+ namedtype.NamedType('matchValue',
156
+ AssertionValue().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
157
+ namedtype.DefaultedNamedType('dnAttributes', univ.Boolean('False').subtype(
158
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
159
+ )
160
+
161
+
162
+ class SubstringFilter(univ.Sequence):
163
+ componentType = namedtype.NamedTypes(
164
+ namedtype.NamedType('type', AttributeDescription()),
165
+ namedtype.NamedType('substrings',
166
+ univ.SequenceOf(
167
+ componentType=univ.Choice(
168
+ componentType=namedtype.NamedTypes(
169
+ namedtype.NamedType(
170
+ 'initial', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))
171
+ ),
172
+ namedtype.NamedType(
173
+ 'any', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))
174
+ ),
175
+ namedtype.NamedType(
176
+ 'final', LDAPString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))
177
+ )
178
+ )
179
+ )
180
+ )
181
+ )
182
+ )
183
+
184
+
185
+ # Ugly hack to handle recursive Filter reference (up to 3-levels deep).
186
+
187
+ class Filter3(univ.Choice):
188
+ componentType = namedtype.NamedTypes(
189
+ namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
190
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
191
+ namedtype.NamedType('substrings', SubstringFilter().subtype(
192
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
193
+ namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
194
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
195
+ namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
196
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
197
+ namedtype.NamedType('present', AttributeDescription().subtype(
198
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
199
+ namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
200
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
201
+ namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
202
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
203
+ )
204
+
205
+
206
+ class Filter2(univ.Choice):
207
+ componentType = namedtype.NamedTypes(
208
+ namedtype.NamedType('and', univ.SetOf(componentType=Filter3()).subtype(
209
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
210
+ namedtype.NamedType('or', univ.SetOf(componentType=Filter3()).subtype(
211
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
212
+ namedtype.NamedType('not',
213
+ Filter3().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
214
+ namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
215
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
216
+ namedtype.NamedType('substrings', SubstringFilter().subtype(
217
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
218
+ namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
219
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
220
+ namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
221
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
222
+ namedtype.NamedType('present', AttributeDescription().subtype(
223
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
224
+ namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
225
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
226
+ namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
227
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
228
+ )
229
+
230
+
231
+ class Filter(univ.Choice):
232
+ componentType = namedtype.NamedTypes(
233
+ namedtype.NamedType('and', univ.SetOf(componentType=Filter2()).subtype(
234
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
235
+ namedtype.NamedType('or', univ.SetOf(componentType=Filter2()).subtype(
236
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
237
+ namedtype.NamedType('not',
238
+ Filter2().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
239
+ namedtype.NamedType('equalityMatch', AttributeValueAssertion().subtype(
240
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
241
+ namedtype.NamedType('substrings', SubstringFilter().subtype(
242
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
243
+ namedtype.NamedType('greaterOrEqual', AttributeValueAssertion().subtype(
244
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
245
+ namedtype.NamedType('lessOrEqual', AttributeValueAssertion().subtype(
246
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 6))),
247
+ namedtype.NamedType('present', AttributeDescription().subtype(
248
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
249
+ namedtype.NamedType('approxMatch', AttributeValueAssertion().subtype(
250
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 8))),
251
+ namedtype.NamedType('extensibleMatch', MatchingRuleAssertion().subtype(
252
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 9)))
253
+ )
254
+
255
+
256
+ # End of Filter hack
257
+
258
+ class SearchRequest(univ.Sequence):
259
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
260
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 3)
261
+ )
262
+ componentType = namedtype.NamedTypes(
263
+ namedtype.NamedType('baseObject', LDAPDN()),
264
+ namedtype.NamedType('scope', univ.Enumerated(
265
+ namedValues=namedval.NamedValues(('baseObject', 0), ('singleLevel', 1), ('wholeSubtree', 2)))),
266
+ namedtype.NamedType('derefAliases', univ.Enumerated(
267
+ namedValues=namedval.NamedValues(('neverDerefAliases', 0), ('derefInSearching', 1),
268
+ ('derefFindingBaseObj', 2), ('derefAlways', 3)))),
269
+ namedtype.NamedType('sizeLimit',
270
+ univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
271
+ namedtype.NamedType('timeLimit',
272
+ univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, maxInt))),
273
+ namedtype.NamedType('typesOnly', univ.Boolean()),
274
+ namedtype.NamedType('filter', Filter()),
275
+ namedtype.NamedType('attributes', AttributeDescriptionList())
276
+ )
277
+
278
+
279
+ class UnbindRequest(univ.Null):
280
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
281
+ tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 2)
282
+ )
283
+
284
+
285
+ class BindResponse(univ.Sequence):
286
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
287
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 1)
288
+ )
289
+ componentType = namedtype.NamedTypes(
290
+ namedtype.NamedType('resultCode', univ.Enumerated(
291
+ namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
292
+ ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
293
+ ('compareTrue', 6), ('authMethodNotSupported', 7),
294
+ ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
295
+ ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
296
+ ('confidentialityRequired', 13), ('saslBindInProgress', 14),
297
+ ('noSuchAttribute', 16), ('undefinedAttributeType', 17),
298
+ ('inappropriateMatching', 18), ('constraintViolation', 19),
299
+ ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
300
+ ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
301
+ ('reserved-35', 35), ('aliasDereferencingProblem', 36),
302
+ ('inappropriateAuthentication', 48), ('invalidCredentials', 49),
303
+ ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
304
+ ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
305
+ ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
306
+ ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
307
+ ('objectClassModsProhibited', 69), ('reserved-70', 70),
308
+ ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
309
+ ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
310
+ ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
311
+ ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
312
+ namedtype.NamedType('matchedDN', LDAPDN()),
313
+ namedtype.NamedType('errorMessage', LDAPString()),
314
+ namedtype.OptionalNamedType('referral', Referral().subtype(
315
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
316
+ namedtype.OptionalNamedType('serverSaslCreds', univ.OctetString().subtype(
317
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7)))
318
+ )
319
+
320
+
321
+ class LDAPResult(univ.Sequence):
322
+ componentType = namedtype.NamedTypes(
323
+ namedtype.NamedType('resultCode', univ.Enumerated(
324
+ namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
325
+ ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
326
+ ('compareTrue', 6), ('authMethodNotSupported', 7),
327
+ ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
328
+ ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
329
+ ('confidentialityRequired', 13), ('saslBindInProgress', 14),
330
+ ('noSuchAttribute', 16), ('undefinedAttributeType', 17),
331
+ ('inappropriateMatching', 18), ('constraintViolation', 19),
332
+ ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
333
+ ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
334
+ ('reserved-35', 35), ('aliasDereferencingProblem', 36),
335
+ ('inappropriateAuthentication', 48), ('invalidCredentials', 49),
336
+ ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
337
+ ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
338
+ ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
339
+ ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
340
+ ('objectClassModsProhibited', 69), ('reserved-70', 70),
341
+ ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
342
+ ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
343
+ ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
344
+ ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
345
+ namedtype.NamedType('matchedDN', LDAPDN()),
346
+ namedtype.NamedType('errorMessage', LDAPString()),
347
+ namedtype.OptionalNamedType('referral', Referral().subtype(
348
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
349
+ )
350
+
351
+
352
+ class SearchResultReference(univ.SequenceOf):
353
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
354
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 19)
355
+ )
356
+ componentType = LDAPURL()
357
+
358
+
359
+ class SearchResultDone(LDAPResult):
360
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
361
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 5)
362
+ )
363
+
364
+
365
+ class AttributeTypeAndValues(univ.Sequence):
366
+ componentType = namedtype.NamedTypes(
367
+ namedtype.NamedType('type', AttributeDescription()),
368
+ namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
369
+ )
370
+
371
+
372
+ class ModifyRequest(univ.Sequence):
373
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
374
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 6)
375
+ )
376
+ componentType = namedtype.NamedTypes(
377
+ namedtype.NamedType('object', LDAPDN()),
378
+ namedtype.NamedType('modification',
379
+ univ.SequenceOf(
380
+ componentType=univ.Sequence(
381
+ componentType=namedtype.NamedTypes(
382
+ namedtype.NamedType(
383
+ 'operation', univ.Enumerated(namedValues=namedval.NamedValues(('add', 0), ('delete', 1), ('replace', 2)))
384
+ ),
385
+ namedtype.NamedType('modification', AttributeTypeAndValues())))
386
+ )
387
+ )
388
+ )
389
+
390
+
391
+ class ModifyResponse(LDAPResult):
392
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
393
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 7)
394
+ )
395
+
396
+
397
+ class AttributeList(univ.SequenceOf):
398
+ componentType = univ.Sequence(
399
+ componentType=namedtype.NamedTypes(
400
+ namedtype.NamedType('type', AttributeDescription()),
401
+ namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
402
+ )
403
+ )
404
+
405
+
406
+ class AddRequest(univ.Sequence):
407
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
408
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 8)
409
+ )
410
+ componentType = namedtype.NamedTypes(
411
+ namedtype.NamedType('entry', LDAPDN()),
412
+ namedtype.NamedType('attributes', AttributeList())
413
+ )
414
+
415
+
416
+ class AddResponse(LDAPResult):
417
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
418
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 9)
419
+ )
420
+
421
+
422
+ class DelRequest(LDAPResult):
423
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
424
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 10)
425
+ )
426
+
427
+
428
+ class DelResponse(LDAPResult):
429
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
430
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 11)
431
+ )
432
+
433
+
434
+ class ModifyDNRequest(univ.Sequence):
435
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
436
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 12)
437
+ )
438
+ componentType = namedtype.NamedTypes(
439
+ namedtype.NamedType('entry', LDAPDN()),
440
+ namedtype.NamedType('newrdn', RelativeLDAPDN()),
441
+ namedtype.NamedType('deleteoldrdn', univ.Boolean()),
442
+ namedtype.OptionalNamedType('newSuperior',
443
+ LDAPDN().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
444
+
445
+ )
446
+
447
+
448
+ class ModifyDNResponse(LDAPResult):
449
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
450
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 13)
451
+ )
452
+
453
+
454
+ class CompareRequest(univ.Sequence):
455
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
456
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 14)
457
+ )
458
+ componentType = namedtype.NamedTypes(
459
+ namedtype.NamedType('entry', LDAPDN()),
460
+ namedtype.NamedType('ava', AttributeValueAssertion())
461
+ )
462
+
463
+
464
+ class CompareResponse(LDAPResult):
465
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
466
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 15)
467
+ )
468
+
469
+
470
+ class AbandonRequest(LDAPResult):
471
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
472
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 16)
473
+ )
474
+
475
+
476
+ class ExtendedRequest(univ.Sequence):
477
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
478
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 23)
479
+ )
480
+ componentType = namedtype.NamedTypes(
481
+ namedtype.NamedType('requestName',
482
+ LDAPOID().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
483
+ namedtype.OptionalNamedType('requestValue', univ.OctetString().subtype(
484
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
485
+ )
486
+
487
+
488
+ class ExtendedResponse(univ.Sequence):
489
+ tagSet = univ.Sequence.tagSet.tagImplicitly(
490
+ tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 24)
491
+ )
492
+ componentType = namedtype.NamedTypes(
493
+ namedtype.NamedType('resultCode', univ.Enumerated(
494
+ namedValues=namedval.NamedValues(('success', 0), ('operationsError', 1), ('protocolError', 2),
495
+ ('timeLimitExceeded', 3), ('sizeLimitExceeded', 4), ('compareFalse', 5),
496
+ ('compareTrue', 6), ('authMethodNotSupported', 7),
497
+ ('strongAuthRequired', 8), ('reserved-9', 9), ('referral', 10),
498
+ ('adminLimitExceeded', 11), ('unavailableCriticalExtension', 12),
499
+ ('confidentialityRequired', 13), ('saslBindInProgress', 14),
500
+ ('noSuchAttribute', 16), ('undefinedAttributeType', 17),
501
+ ('inappropriateMatching', 18), ('constraintViolation', 19),
502
+ ('attributeOrValueExists', 20), ('invalidAttributeSyntax', 21),
503
+ ('noSuchObject', 32), ('aliasProblem', 33), ('invalidDNSyntax', 34),
504
+ ('reserved-35', 35), ('aliasDereferencingProblem', 36),
505
+ ('inappropriateAuthentication', 48), ('invalidCredentials', 49),
506
+ ('insufficientAccessRights', 50), ('busy', 51), ('unavailable', 52),
507
+ ('unwillingToPerform', 53), ('loopDetect', 54), ('namingViolation', 64),
508
+ ('objectClassViolation', 65), ('notAllowedOnNonLeaf', 66),
509
+ ('notAllowedOnRDN', 67), ('entryAlreadyExists', 68),
510
+ ('objectClassModsProhibited', 69), ('reserved-70', 70),
511
+ ('affectsMultipleDSAs', 71), ('other', 80), ('reserved-81', 81),
512
+ ('reserved-82', 82), ('reserved-83', 83), ('reserved-84', 84),
513
+ ('reserved-85', 85), ('reserved-86', 86), ('reserved-87', 87),
514
+ ('reserved-88', 88), ('reserved-89', 89), ('reserved-90', 90)))),
515
+ namedtype.NamedType('matchedDN', LDAPDN()),
516
+ namedtype.NamedType('errorMessage', LDAPString()),
517
+ namedtype.OptionalNamedType('referral', Referral().subtype(
518
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
519
+
520
+ namedtype.OptionalNamedType('responseName', LDAPOID().subtype(
521
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 10))),
522
+ namedtype.OptionalNamedType('response', univ.OctetString().subtype(
523
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 11)))
524
+ )
525
+
526
+
527
+ class MessageID(univ.Integer):
528
+ subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
529
+ 0, maxInt
530
+ )
531
+
532
+
533
+ class LDAPMessage(univ.Sequence):
534
+ componentType = namedtype.NamedTypes(
535
+ namedtype.NamedType('messageID', MessageID()),
536
+ namedtype.NamedType(
537
+ 'protocolOp', univ.Choice(
538
+ componentType=namedtype.NamedTypes(
539
+ namedtype.NamedType('bindRequest', BindRequest()),
540
+ namedtype.NamedType('bindResponse', BindResponse()),
541
+ namedtype.NamedType('unbindRequest', UnbindRequest()),
542
+ namedtype.NamedType('searchRequest', SearchRequest()),
543
+ namedtype.NamedType('searchResEntry', SearchResultEntry()),
544
+ namedtype.NamedType('searchResDone', SearchResultDone()),
545
+ namedtype.NamedType('searchResRef', SearchResultReference()),
546
+ namedtype.NamedType('modifyRequest', ModifyRequest()),
547
+ namedtype.NamedType('modifyResponse', ModifyResponse()),
548
+ namedtype.NamedType('addRequest', AddRequest()),
549
+ namedtype.NamedType('addResponse', AddResponse()),
550
+ namedtype.NamedType('delRequest', DelRequest()),
551
+ namedtype.NamedType('delResponse', DelResponse()),
552
+ namedtype.NamedType('modDNRequest', ModifyDNRequest()),
553
+ namedtype.NamedType('modDNResponse', ModifyDNResponse()),
554
+ namedtype.NamedType('compareRequest', CompareRequest()),
555
+ namedtype.NamedType('compareResponse', CompareResponse()),
556
+ namedtype.NamedType('abandonRequest', AbandonRequest()),
557
+ namedtype.NamedType('extendedReq', ExtendedRequest()),
558
+ namedtype.NamedType('extendedResp', ExtendedResponse())
559
+ )
560
+ )
561
+ ),
562
+ namedtype.OptionalNamedType('controls', Controls().subtype(
563
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
564
+ )
@@ -0,0 +1,68 @@
1
+ #
2
+ # This file is part of pyasn1-alt-modules software.
3
+ #
4
+ # Modified by Russ Housley to import from RFC 5280 instead of RFC 2459.
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
+ # PKCS#10 syntax
11
+ #
12
+ # ASN.1 source from:
13
+ # http://tools.ietf.org/html/rfc2314
14
+ #
15
+ # Sample captures could be obtained with "openssl req" command
16
+ #
17
+ from pyasn1.type import namedtype
18
+ from pyasn1.type import tag
19
+ from pyasn1.type import univ
20
+
21
+ from pyasn1_alt_modules import rfc5280
22
+
23
+
24
+ # Imports from RFC 5280
25
+
26
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
27
+
28
+ Attribute = rfc5280.Attribute
29
+
30
+ Name = rfc5280.Name
31
+
32
+ SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo
33
+
34
+
35
+ # PKCS#10
36
+
37
+ class Attributes(univ.SetOf):
38
+ componentType = Attribute()
39
+
40
+
41
+ class Version(univ.Integer):
42
+ pass
43
+
44
+
45
+ class CertificationRequestInfo(univ.Sequence):
46
+ componentType = namedtype.NamedTypes(
47
+ namedtype.NamedType('version', Version()),
48
+ namedtype.NamedType('subject', Name()),
49
+ namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
50
+ namedtype.NamedType('attributes',
51
+ Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
52
+ )
53
+
54
+
55
+ class Signature(univ.BitString):
56
+ pass
57
+
58
+
59
+ class SignatureAlgorithmIdentifier(AlgorithmIdentifier):
60
+ pass
61
+
62
+
63
+ class CertificationRequest(univ.Sequence):
64
+ componentType = namedtype.NamedTypes(
65
+ namedtype.NamedType('certificationRequestInfo', CertificationRequestInfo()),
66
+ namedtype.NamedType('signatureAlgorithm', SignatureAlgorithmIdentifier()),
67
+ namedtype.NamedType('signature', Signature())
68
+ )