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,64 @@
1
+ # This file is part of pyasn1-alt-modules software.
2
+ #
3
+ # Created by Russ Housley.
4
+ # Modified by Russ Housley to import SCVP-related structures from RFC 5055,
5
+ # which did not exist at the time this module was first written. Also,
6
+ # include the opentypemap manager.
7
+ #
8
+ # Copyright (c) 2019-2024, Vigil Security, LLC
9
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
10
+ #
11
+ # Other Certificates Extension
12
+ #
13
+ # ASN.1 source from:
14
+ # https://www.rfc-editor.org/rfc/rfc5697.txt
15
+
16
+ from pyasn1.type import namedtype
17
+ from pyasn1.type import univ
18
+
19
+ from pyasn1_alt_modules import rfc5280
20
+ from pyasn1_alt_modules import rfc4055
21
+ from pyasn1_alt_modules import rfc5055
22
+ from pyasn1_alt_modules import opentypemap
23
+
24
+ certificateExtensionsMap = opentypemap.get('certificateExtensionsMap')
25
+
26
+
27
+ # Imports from RFC 5280
28
+
29
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
30
+
31
+ CertificateSerialNumber = rfc5280.CertificateSerialNumber
32
+
33
+ GeneralNames = rfc5280.GeneralNames
34
+
35
+
36
+ # Imports from RFC 4055
37
+
38
+ id_sha1 = rfc4055.id_sha1
39
+
40
+
41
+ # Imports from RFC 5055
42
+
43
+ SCVPIssuerSerial = rfc5055.SCVPIssuerSerial
44
+
45
+ sha1_alg_id = rfc5055.algid_SHA1
46
+
47
+ SCVPCertID = rfc5055.SCVPCertID
48
+
49
+
50
+ # Other Certificates Extension
51
+
52
+ id_pe_otherCerts = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 7, 1, 19,))
53
+
54
+ class OtherCertificates(univ.SequenceOf):
55
+ componentType = SCVPCertID()
56
+
57
+
58
+ # Update the Certificate Extension Map
59
+
60
+ _certificateExtensionsMapUpdate = {
61
+ id_pe_otherCerts: OtherCertificates(),
62
+ }
63
+
64
+ certificateExtensionsMap.update(_certificateExtensionsMapUpdate)
@@ -0,0 +1,159 @@
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
+ #
5
+ # Copyright (c) 2022-2024, Vigil Security, LLC
6
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
7
+ #
8
+ # Data Structure for the Security Suitability of Cryptographic Algorithms
9
+ #
10
+ # ASN.1 source from:
11
+ # https://www.rfc-editor.org/rfc/rfc5698.txt
12
+ # https://www.rfc-editor.org/errata/eid6948
13
+
14
+ from pyasn1.type import char
15
+ from pyasn1.type import namedtype
16
+ from pyasn1.type import namedval
17
+ from pyasn1.type import opentype
18
+ from pyasn1.type import tag
19
+ from pyasn1.type import univ
20
+ from pyasn1.type import useful
21
+
22
+ from pyasn1_alt_modules import rfc5652
23
+ from pyasn1_alt_modules import opentypemap
24
+
25
+ cmsContentTypesMap = opentypemap.get('cmsContentTypesMap')
26
+
27
+ dsscExtensionsMap = opentypemap.get('dsscExtensionsMap')
28
+
29
+
30
+ # Import from RFC 5652
31
+
32
+ ContentInfo = rfc5652.ContentInfo
33
+
34
+
35
+ # DSSC
36
+
37
+ class AlgID(univ.Sequence):
38
+ componentType = namedtype.NamedTypes(
39
+ namedtype.NamedType('name', char.UTF8String()),
40
+ namedtype.NamedType('oid', univ.SequenceOf(
41
+ componentType=univ.ObjectIdentifier()).subtype(implicitTag=tag.Tag(
42
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
43
+ namedtype.OptionalNamedType('uri', univ.SequenceOf(
44
+ componentType=char.IA5String()).subtype(implicitTag=tag.Tag(
45
+ tag.tagClassContext, tag.tagFormatSimple, 1)))
46
+ )
47
+
48
+
49
+ class Extension(univ.Sequence):
50
+ componentType = namedtype.NamedTypes(
51
+ namedtype.NamedType('extensionType', univ.ObjectIdentifier()),
52
+ namedtype.NamedType('extension', univ.Any(),
53
+ openType=opentype.OpenType('extensionType', dsscExtensionsMap)
54
+ )
55
+ )
56
+
57
+
58
+ class Parameter(univ.Sequence):
59
+ componentType = namedtype.NamedTypes(
60
+ namedtype.NamedType('name', char.UTF8String()),
61
+ namedtype.OptionalNamedType('min', univ.Integer().subtype(
62
+ implicitTag=tag.Tag(tag.tagClassContext,
63
+ tag.tagFormatSimple, 0))),
64
+ namedtype.OptionalNamedType('max', univ.Integer().subtype(
65
+ implicitTag=tag.Tag(tag.tagClassContext,
66
+ tag.tagFormatSimple, 1))),
67
+ namedtype.OptionalNamedType('other', Extension().subtype(
68
+ implicitTag=tag.Tag(tag.tagClassContext,
69
+ tag.tagFormatConstructed, 2)))
70
+ )
71
+
72
+
73
+ class Validity(univ.Sequence):
74
+ componentType = namedtype.NamedTypes(
75
+ namedtype.OptionalNamedType('start', useful.GeneralizedTime().subtype(
76
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
77
+ namedtype.OptionalNamedType('end', useful.GeneralizedTime().subtype(
78
+ implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
79
+ )
80
+
81
+
82
+ class Evaluation(univ.Sequence):
83
+ componentType = namedtype.NamedTypes(
84
+ namedtype.OptionalNamedType('parameters', univ.SequenceOf(
85
+ componentType=Parameter()).subtype(implicitTag=tag.Tag(
86
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
87
+ namedtype.NamedType('validity',
88
+ Validity().subtype(implicitTag=tag.Tag(
89
+ tag.tagClassContext, tag.tagFormatConstructed, 1))),
90
+ namedtype.OptionalNamedType('other',
91
+ Extension().subtype(implicitTag=tag.Tag(
92
+ tag.tagClassContext, tag.tagFormatConstructed, 2)))
93
+ )
94
+
95
+
96
+ class Algorithm(univ.Sequence):
97
+ componentType = namedtype.NamedTypes(
98
+ namedtype.NamedType('algorithmIdentifier', AlgID()),
99
+ namedtype.NamedType('evaluations',
100
+ univ.SequenceOf(componentType=Evaluation())),
101
+ namedtype.OptionalNamedType('information', univ.SequenceOf(
102
+ componentType=char.UTF8String()).subtype(implicitTag=tag.Tag(
103
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
104
+ namedtype.OptionalNamedType('other', Extension().subtype(
105
+ implicitTag=tag.Tag(tag.tagClassContext,
106
+ tag.tagFormatConstructed, 1)))
107
+ )
108
+
109
+
110
+ class PolicyName(univ.Sequence):
111
+ componentType = namedtype.NamedTypes(
112
+ namedtype.NamedType('name', char.UTF8String()),
113
+ namedtype.OptionalNamedType('oid', univ.ObjectIdentifier()),
114
+ namedtype.OptionalNamedType('uri', char.IA5String())
115
+ )
116
+
117
+
118
+ class Publisher(univ.Sequence):
119
+ componentType = namedtype.NamedTypes(
120
+ namedtype.NamedType('name', char.UTF8String()),
121
+ namedtype.OptionalNamedType('address',
122
+ char.UTF8String().subtype(implicitTag=tag.Tag(
123
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
124
+ namedtype.OptionalNamedType('uri',
125
+ char.IA5String().subtype(implicitTag=tag.Tag(
126
+ tag.tagClassContext, tag.tagFormatSimple, 1)))
127
+ )
128
+
129
+
130
+ class SecuritySuitabilityPolicy(ContentInfo):
131
+ pass
132
+
133
+
134
+ class TBSPolicy(univ.Sequence):
135
+ componentType = namedtype.NamedTypes(
136
+ namedtype.DefaultedNamedType('version', univ.Integer(
137
+ namedValues=namedval.NamedValues(('v1', 1))).subtype(value='v1')),
138
+ namedtype.DefaultedNamedType('language',
139
+ char.UTF8String().subtype(value='en')),
140
+ namedtype.NamedType('policyName', PolicyName()),
141
+ namedtype.NamedType('publisher', Publisher()),
142
+ namedtype.NamedType('policyIssueDate', useful.GeneralizedTime()),
143
+ namedtype.OptionalNamedType('nextUpdate', useful.GeneralizedTime()),
144
+ namedtype.OptionalNamedType('usage', char.UTF8String()),
145
+ namedtype.NamedType('algorithms',
146
+ univ.SequenceOf(componentType=Algorithm()))
147
+ )
148
+
149
+
150
+ id_ct_dssc = univ.ObjectIdentifier((1, 3, 6, 1, 5, 5, 11, 1, 6))
151
+
152
+
153
+ # Update the CMS Content Type Map
154
+
155
+ _cmsContentTypesMapUpdate = {
156
+ id_ct_dssc: TBSPolicy(),
157
+ }
158
+
159
+ cmsContentTypesMap.update(_cmsContentTypesMapUpdate)
@@ -0,0 +1,127 @@
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.
5
+ #
6
+ # Copyright (c) 2019-2024, Vigil Security, LLC
7
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
8
+ #
9
+ # S/MIME Version 3.2 Message Specification
10
+ #
11
+ # ASN.1 source from:
12
+ # https://www.rfc-editor.org/rfc/rfc5751.txt
13
+
14
+ from pyasn1.type import namedtype
15
+ from pyasn1.type import opentype
16
+ from pyasn1.type import tag
17
+ from pyasn1.type import univ
18
+
19
+ from pyasn1_alt_modules import rfc5652
20
+ from pyasn1_alt_modules import rfc8018
21
+ from pyasn1_alt_modules import opentypemap
22
+
23
+ smimeCapabilityMap = opentypemap.get('smimeCapabilityMap')
24
+
25
+ cmsAttributesMap = opentypemap.get('cmsAttributesMap')
26
+
27
+
28
+ def _OID(*components):
29
+ output = []
30
+ for x in tuple(components):
31
+ if isinstance(x, univ.ObjectIdentifier):
32
+ output.extend(list(x))
33
+ else:
34
+ output.append(int(x))
35
+ return univ.ObjectIdentifier(output)
36
+
37
+
38
+ # Imports from RFC 5652 and RFC 8018
39
+
40
+ IssuerAndSerialNumber = rfc5652.IssuerAndSerialNumber
41
+
42
+ RecipientKeyIdentifier = rfc5652.RecipientKeyIdentifier
43
+
44
+ SubjectKeyIdentifier = rfc5652.SubjectKeyIdentifier
45
+
46
+ rc2CBC = rfc8018.rc2CBC
47
+
48
+
49
+ # S/MIME Capabilities Attribute
50
+
51
+ smimeCapabilities = univ.ObjectIdentifier('1.2.840.113549.1.9.15')
52
+
53
+
54
+ class SMIMECapability(univ.Sequence):
55
+ pass
56
+
57
+ SMIMECapability.componentType = namedtype.NamedTypes(
58
+ namedtype.NamedType('capabilityID', univ.ObjectIdentifier()),
59
+ namedtype.OptionalNamedType('parameters', univ.Any(),
60
+ openType=opentype.OpenType('capabilityID', smimeCapabilityMap))
61
+ )
62
+
63
+
64
+ class SMIMECapabilities(univ.SequenceOf):
65
+ pass
66
+
67
+ SMIMECapabilities.componentType = SMIMECapability()
68
+
69
+
70
+ class SMIMECapabilitiesParametersForRC2CBC(univ.Integer):
71
+ # which carries the RC2 Key Length (number of bits)
72
+ pass
73
+
74
+
75
+ # S/MIME Encryption Key Preference Attribute
76
+
77
+ id_smime = univ.ObjectIdentifier('1.2.840.113549.1.9.16')
78
+
79
+ id_aa = _OID(id_smime, 2)
80
+
81
+ id_aa_encrypKeyPref = _OID(id_aa, 11)
82
+
83
+
84
+ class SMIMEEncryptionKeyPreference(univ.Choice):
85
+ pass
86
+
87
+ SMIMEEncryptionKeyPreference.componentType = namedtype.NamedTypes(
88
+ namedtype.NamedType('issuerAndSerialNumber',
89
+ IssuerAndSerialNumber().subtype(implicitTag=tag.Tag(
90
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
91
+ namedtype.NamedType('receipentKeyId',
92
+ # Yes, 'receipentKeyId' is spelled incorrectly, but kept
93
+ # this way for alignment with the ASN.1 module in the RFC.
94
+ RecipientKeyIdentifier().subtype(implicitTag=tag.Tag(
95
+ tag.tagClassContext, tag.tagFormatSimple, 1))),
96
+ namedtype.NamedType('subjectAltKeyIdentifier',
97
+ SubjectKeyIdentifier().subtype(implicitTag=tag.Tag(
98
+ tag.tagClassContext, tag.tagFormatSimple, 2)))
99
+ )
100
+
101
+
102
+ # The Prefer Binary Inside SMIMECapabilities attribute
103
+
104
+ id_cap = _OID(id_smime, 11)
105
+
106
+ id_cap_preferBinaryInside = _OID(id_cap, 1)
107
+
108
+
109
+ # CMS Attribute Map
110
+
111
+ _cmsAttributesMapUpdate = {
112
+ smimeCapabilities: SMIMECapabilities(),
113
+ id_aa_encrypKeyPref: SMIMEEncryptionKeyPreference(),
114
+ }
115
+
116
+ cmsAttributesMap.update(_cmsAttributesMapUpdate)
117
+
118
+
119
+ # SMIMECapabilities Attribute Map
120
+ #
121
+ # Do not include OIDs in the dictionary when the parameters are absent.
122
+
123
+ _smimeCapabilityMapUpdate = {
124
+ rc2CBC: SMIMECapabilitiesParametersForRC2CBC(),
125
+ }
126
+
127
+ smimeCapabilityMap.update(_smimeCapabilityMapUpdate)
@@ -0,0 +1,52 @@
1
+ #
2
+ # This file is part of pyasn1-alt-modules software.
3
+ #
4
+ # Created by Russ Housley with assistance from asn1ate v.0.6.0.
5
+ # Modified by Russ Housley to include the opentypemap manager.
6
+ #
7
+ # Copyright (c) 2019-2024, Vigil Security, LLC
8
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
9
+ #
10
+ # Multiple Signatures in Cryptographic Message Syntax (CMS)
11
+ #
12
+ # ASN.1 source from:
13
+ # https://www.rfc-editor.org/rfc/rfc5752.txt
14
+ # https://www.rfc-editor.org/errata/eid4444
15
+ #
16
+
17
+ from pyasn1.type import namedtype
18
+ from pyasn1.type import univ
19
+
20
+ from pyasn1_alt_modules import rfc5035
21
+ from pyasn1_alt_modules import rfc5652
22
+ from pyasn1_alt_modules import opentypemap
23
+
24
+ cmsAttributesMap = opentypemap.get('cmsAttributesMap')
25
+
26
+
27
+ class SignAttrsHash(univ.Sequence):
28
+ componentType = namedtype.NamedTypes(
29
+ namedtype.NamedType('algID', rfc5652.DigestAlgorithmIdentifier()),
30
+ namedtype.NamedType('hash', univ.OctetString())
31
+ )
32
+
33
+
34
+ class MultipleSignatures(univ.Sequence):
35
+ componentType = namedtype.NamedTypes(
36
+ namedtype.NamedType('bodyHashAlg', rfc5652.DigestAlgorithmIdentifier()),
37
+ namedtype.NamedType('signAlg', rfc5652.SignatureAlgorithmIdentifier()),
38
+ namedtype.NamedType('signAttrsHash', SignAttrsHash()),
39
+ namedtype.OptionalNamedType('cert', rfc5035.ESSCertIDv2())
40
+ )
41
+
42
+
43
+ id_aa_multipleSignatures = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.51')
44
+
45
+
46
+ # Update the CMS Attribute Types Map
47
+
48
+ _cmsAttributesMapUpdate = {
49
+ id_aa_multipleSignatures: MultipleSignatures(),
50
+ }
51
+
52
+ cmsAttributesMap.update(_cmsAttributesMapUpdate)
@@ -0,0 +1,163 @@
1
+ #
2
+ # This file is part of pyasn1-alt-modules software.
3
+ #
4
+ # Created by Russ Housley with assistance from asn1ate v.0.6.0.
5
+ # Modified by Russ Housley to include the opentypemap manager.
6
+ #
7
+ # Copyright (c) 2019-2024, Vigil Security, LLC
8
+ # License: http://vigilsec.com/pyasn1-alt-modules-license.txt
9
+ #
10
+ # Elliptic Curve Cryptography (ECC) Algorithms in the CMS
11
+ #
12
+ # ASN.1 source from:
13
+ # https://www.rfc-editor.org/rfc/rfc5753.txt
14
+ #
15
+
16
+ from pyasn1.type import namedtype
17
+ from pyasn1.type import tag
18
+ from pyasn1.type import univ
19
+
20
+ from pyasn1_alt_modules import rfc5280
21
+ from pyasn1_alt_modules import rfc5480
22
+ from pyasn1_alt_modules import rfc5652
23
+ from pyasn1_alt_modules import rfc8018
24
+ from pyasn1_alt_modules import opentypemap
25
+
26
+ algorithmIdentifierMap = opentypemap.get('algorithmIdentifierMap')
27
+
28
+ smimeCapabilityMap = opentypemap.get('smimeCapabilityMap')
29
+
30
+
31
+ # Imports from RFC 5280
32
+
33
+ AlgorithmIdentifier = rfc5280.AlgorithmIdentifier
34
+
35
+
36
+ # Imports from RFC 5652
37
+
38
+ OriginatorPublicKey = rfc5652.OriginatorPublicKey
39
+
40
+ UserKeyingMaterial = rfc5652.UserKeyingMaterial
41
+
42
+
43
+ # Imports from RFC 5480
44
+
45
+ ECDSA_Sig_Value = rfc5480.ECDSA_Sig_Value
46
+
47
+ ECParameters = rfc5480.ECParameters
48
+
49
+ ECPoint = rfc5480.ECPoint
50
+
51
+ id_ecPublicKey = rfc5480.id_ecPublicKey
52
+
53
+
54
+ # Imports from RFC 8018
55
+
56
+ id_hmacWithSHA224 = rfc8018.id_hmacWithSHA224
57
+
58
+ id_hmacWithSHA256 = rfc8018.id_hmacWithSHA256
59
+
60
+ id_hmacWithSHA384 = rfc8018.id_hmacWithSHA384
61
+
62
+ id_hmacWithSHA512 = rfc8018.id_hmacWithSHA512
63
+
64
+
65
+ # Object Identifier arcs
66
+
67
+ x9_63_scheme = univ.ObjectIdentifier('1.3.133.16.840.63.0')
68
+
69
+ secg_scheme = univ.ObjectIdentifier('1.3.132.1')
70
+
71
+
72
+ # Object Identifiers for the algorithms
73
+
74
+ dhSinglePass_cofactorDH_sha1kdf_scheme = x9_63_scheme + (3, )
75
+
76
+ dhSinglePass_cofactorDH_sha224kdf_scheme = secg_scheme + (14, 0, )
77
+
78
+ dhSinglePass_cofactorDH_sha256kdf_scheme = secg_scheme + (14, 1, )
79
+
80
+ dhSinglePass_cofactorDH_sha384kdf_scheme = secg_scheme + (14, 2, )
81
+
82
+ dhSinglePass_cofactorDH_sha512kdf_scheme = secg_scheme + (14, 3, )
83
+
84
+ dhSinglePass_stdDH_sha1kdf_scheme = x9_63_scheme + (2, )
85
+
86
+ dhSinglePass_stdDH_sha224kdf_scheme = secg_scheme + (11, 0, )
87
+
88
+ dhSinglePass_stdDH_sha256kdf_scheme = secg_scheme + (11, 1, )
89
+
90
+ dhSinglePass_stdDH_sha384kdf_scheme = secg_scheme + (11, 2, )
91
+
92
+ dhSinglePass_stdDH_sha512kdf_scheme = secg_scheme + (11, 3, )
93
+
94
+ mqvSinglePass_sha1kdf_scheme = x9_63_scheme + (16, )
95
+
96
+ mqvSinglePass_sha224kdf_scheme = secg_scheme + (15, 0, )
97
+
98
+ mqvSinglePass_sha256kdf_scheme = secg_scheme + (15, 1, )
99
+
100
+ mqvSinglePass_sha384kdf_scheme = secg_scheme + (15, 2, )
101
+
102
+ mqvSinglePass_sha512kdf_scheme = secg_scheme + (15, 3, )
103
+
104
+
105
+ # Structures for parameters and key derivation
106
+
107
+ class IV(univ.OctetString):
108
+ # Exactly 8 octets
109
+ pass
110
+
111
+
112
+ class CBCParameter(IV):
113
+ pass
114
+
115
+
116
+ class KeyWrapAlgorithm(AlgorithmIdentifier):
117
+ pass
118
+
119
+
120
+ class ECC_CMS_SharedInfo(univ.Sequence):
121
+ componentType = namedtype.NamedTypes(
122
+ namedtype.NamedType('keyInfo', KeyWrapAlgorithm()),
123
+ namedtype.OptionalNamedType('entityUInfo',
124
+ univ.OctetString().subtype(explicitTag=tag.Tag(
125
+ tag.tagClassContext, tag.tagFormatSimple, 0))),
126
+ namedtype.NamedType('suppPubInfo',
127
+ univ.OctetString().subtype(explicitTag=tag.Tag(
128
+ tag.tagClassContext, tag.tagFormatSimple, 2)))
129
+ )
130
+
131
+
132
+ class MQVuserKeyingMaterial(univ.Sequence):
133
+ componentType = namedtype.NamedTypes(
134
+ namedtype.NamedType('ephemeralPublicKey', OriginatorPublicKey()),
135
+ namedtype.OptionalNamedType('addedukm',
136
+ UserKeyingMaterial().subtype(explicitTag=tag.Tag(
137
+ tag.tagClassContext, tag.tagFormatSimple, 0)))
138
+ )
139
+
140
+
141
+ # Update the Algorithm Identifiers Map and S/MIME Capability Map
142
+
143
+ _algorithmIdentifierMapUpdate = {
144
+ dhSinglePass_stdDH_sha1kdf_scheme: KeyWrapAlgorithm(),
145
+ dhSinglePass_stdDH_sha224kdf_scheme: KeyWrapAlgorithm(),
146
+ dhSinglePass_stdDH_sha256kdf_scheme: KeyWrapAlgorithm(),
147
+ dhSinglePass_stdDH_sha384kdf_scheme: KeyWrapAlgorithm(),
148
+ dhSinglePass_stdDH_sha512kdf_scheme: KeyWrapAlgorithm(),
149
+ dhSinglePass_cofactorDH_sha1kdf_scheme: KeyWrapAlgorithm(),
150
+ dhSinglePass_cofactorDH_sha224kdf_scheme: KeyWrapAlgorithm(),
151
+ dhSinglePass_cofactorDH_sha256kdf_scheme: KeyWrapAlgorithm(),
152
+ dhSinglePass_cofactorDH_sha384kdf_scheme: KeyWrapAlgorithm(),
153
+ dhSinglePass_cofactorDH_sha512kdf_scheme: KeyWrapAlgorithm(),
154
+ mqvSinglePass_sha1kdf_scheme: KeyWrapAlgorithm(),
155
+ mqvSinglePass_sha224kdf_scheme: KeyWrapAlgorithm(),
156
+ mqvSinglePass_sha256kdf_scheme: KeyWrapAlgorithm(),
157
+ mqvSinglePass_sha384kdf_scheme: KeyWrapAlgorithm(),
158
+ mqvSinglePass_sha512kdf_scheme: KeyWrapAlgorithm(),
159
+ }
160
+
161
+ algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate)
162
+
163
+ smimeCapabilityMap.update(_algorithmIdentifierMapUpdate)