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.
- pyasn1_alt_modules/__init__.py +2 -0
- pyasn1_alt_modules/opentypemap.py +19 -0
- pyasn1_alt_modules/pem.py +66 -0
- pyasn1_alt_modules/rfc1155.py +97 -0
- pyasn1_alt_modules/rfc1157.py +127 -0
- pyasn1_alt_modules/rfc1901.py +23 -0
- pyasn1_alt_modules/rfc1902.py +130 -0
- pyasn1_alt_modules/rfc1905.py +136 -0
- pyasn1_alt_modules/rfc2040.py +50 -0
- pyasn1_alt_modules/rfc2251.py +564 -0
- pyasn1_alt_modules/rfc2314.py +68 -0
- pyasn1_alt_modules/rfc2315.py +325 -0
- pyasn1_alt_modules/rfc2437.py +70 -0
- pyasn1_alt_modules/rfc2459.py +1340 -0
- pyasn1_alt_modules/rfc2511.py +303 -0
- pyasn1_alt_modules/rfc2528.py +34 -0
- pyasn1_alt_modules/rfc2560.py +226 -0
- pyasn1_alt_modules/rfc2631.py +37 -0
- pyasn1_alt_modules/rfc2634.py +342 -0
- pyasn1_alt_modules/rfc2743.py +60 -0
- pyasn1_alt_modules/rfc2876.py +61 -0
- pyasn1_alt_modules/rfc2898.py +72 -0
- pyasn1_alt_modules/rfc2985.py +593 -0
- pyasn1_alt_modules/rfc2986.py +76 -0
- pyasn1_alt_modules/rfc3058.py +48 -0
- pyasn1_alt_modules/rfc3114.py +80 -0
- pyasn1_alt_modules/rfc3125.py +469 -0
- pyasn1_alt_modules/rfc3161.py +142 -0
- pyasn1_alt_modules/rfc3217.py +42 -0
- pyasn1_alt_modules/rfc3274.py +62 -0
- pyasn1_alt_modules/rfc3279.py +264 -0
- pyasn1_alt_modules/rfc3280.py +1544 -0
- pyasn1_alt_modules/rfc3281.py +332 -0
- pyasn1_alt_modules/rfc3370.py +142 -0
- pyasn1_alt_modules/rfc3412.py +54 -0
- pyasn1_alt_modules/rfc3414.py +29 -0
- pyasn1_alt_modules/rfc3447.py +46 -0
- pyasn1_alt_modules/rfc3537.py +44 -0
- pyasn1_alt_modules/rfc3546.py +23 -0
- pyasn1_alt_modules/rfc3560.py +74 -0
- pyasn1_alt_modules/rfc3565.py +59 -0
- pyasn1_alt_modules/rfc3657.py +69 -0
- pyasn1_alt_modules/rfc3709.py +230 -0
- pyasn1_alt_modules/rfc3739.py +207 -0
- pyasn1_alt_modules/rfc3770.py +77 -0
- pyasn1_alt_modules/rfc3779.py +139 -0
- pyasn1_alt_modules/rfc3820.py +66 -0
- pyasn1_alt_modules/rfc3852.py +707 -0
- pyasn1_alt_modules/rfc3874.py +29 -0
- pyasn1_alt_modules/rfc4010.py +58 -0
- pyasn1_alt_modules/rfc4043.py +45 -0
- pyasn1_alt_modules/rfc4055.py +285 -0
- pyasn1_alt_modules/rfc4056.py +56 -0
- pyasn1_alt_modules/rfc4059.py +101 -0
- pyasn1_alt_modules/rfc4073.py +62 -0
- pyasn1_alt_modules/rfc4108.py +355 -0
- pyasn1_alt_modules/rfc4210.py +807 -0
- pyasn1_alt_modules/rfc4211.py +420 -0
- pyasn1_alt_modules/rfc4231.py +38 -0
- pyasn1_alt_modules/rfc4262.py +37 -0
- pyasn1_alt_modules/rfc4334.py +78 -0
- pyasn1_alt_modules/rfc4357.py +485 -0
- pyasn1_alt_modules/rfc4366.py +23 -0
- pyasn1_alt_modules/rfc4387.py +23 -0
- pyasn1_alt_modules/rfc4476.py +99 -0
- pyasn1_alt_modules/rfc4490.py +119 -0
- pyasn1_alt_modules/rfc4491.py +44 -0
- pyasn1_alt_modules/rfc4683.py +76 -0
- pyasn1_alt_modules/rfc4985.py +52 -0
- pyasn1_alt_modules/rfc4998.py +125 -0
- pyasn1_alt_modules/rfc5035.py +206 -0
- pyasn1_alt_modules/rfc5055.py +763 -0
- pyasn1_alt_modules/rfc5083.py +55 -0
- pyasn1_alt_modules/rfc5084.py +94 -0
- pyasn1_alt_modules/rfc5126.py +578 -0
- pyasn1_alt_modules/rfc5208.py +73 -0
- pyasn1_alt_modules/rfc5275.py +404 -0
- pyasn1_alt_modules/rfc5276.py +82 -0
- pyasn1_alt_modules/rfc5280.py +1666 -0
- pyasn1_alt_modules/rfc5480.py +190 -0
- pyasn1_alt_modules/rfc5544.py +127 -0
- pyasn1_alt_modules/rfc5636.py +117 -0
- pyasn1_alt_modules/rfc5639.py +49 -0
- pyasn1_alt_modules/rfc5649.py +33 -0
- pyasn1_alt_modules/rfc5652.py +763 -0
- pyasn1_alt_modules/rfc5697.py +64 -0
- pyasn1_alt_modules/rfc5698.py +159 -0
- pyasn1_alt_modules/rfc5751.py +127 -0
- pyasn1_alt_modules/rfc5752.py +52 -0
- pyasn1_alt_modules/rfc5753.py +163 -0
- pyasn1_alt_modules/rfc5755.py +400 -0
- pyasn1_alt_modules/rfc5913.py +46 -0
- pyasn1_alt_modules/rfc5914.py +119 -0
- pyasn1_alt_modules/rfc5915.py +32 -0
- pyasn1_alt_modules/rfc5916.py +39 -0
- pyasn1_alt_modules/rfc5917.py +59 -0
- pyasn1_alt_modules/rfc5924.py +19 -0
- pyasn1_alt_modules/rfc5934.py +786 -0
- pyasn1_alt_modules/rfc5940.py +62 -0
- pyasn1_alt_modules/rfc5958.py +100 -0
- pyasn1_alt_modules/rfc5990.py +238 -0
- pyasn1_alt_modules/rfc6010.py +92 -0
- pyasn1_alt_modules/rfc6019.py +46 -0
- pyasn1_alt_modules/rfc6031.py +469 -0
- pyasn1_alt_modules/rfc6032.py +71 -0
- pyasn1_alt_modules/rfc6066.py +25 -0
- pyasn1_alt_modules/rfc6120.py +46 -0
- pyasn1_alt_modules/rfc6170.py +17 -0
- pyasn1_alt_modules/rfc6187.py +22 -0
- pyasn1_alt_modules/rfc6210.py +45 -0
- pyasn1_alt_modules/rfc6211.py +75 -0
- pyasn1_alt_modules/rfc6402.py +643 -0
- pyasn1_alt_modules/rfc6482.py +77 -0
- pyasn1_alt_modules/rfc6484.py +17 -0
- pyasn1_alt_modules/rfc6486.py +70 -0
- pyasn1_alt_modules/rfc6487.py +22 -0
- pyasn1_alt_modules/rfc6492.py +41 -0
- pyasn1_alt_modules/rfc6493.py +24 -0
- pyasn1_alt_modules/rfc6494.py +23 -0
- pyasn1_alt_modules/rfc6664.py +151 -0
- pyasn1_alt_modules/rfc6955.py +112 -0
- pyasn1_alt_modules/rfc6960.py +234 -0
- pyasn1_alt_modules/rfc6962.py +52 -0
- pyasn1_alt_modules/rfc7030.py +70 -0
- pyasn1_alt_modules/rfc7191.py +267 -0
- pyasn1_alt_modules/rfc7229.py +29 -0
- pyasn1_alt_modules/rfc7292.py +359 -0
- pyasn1_alt_modules/rfc7296.py +32 -0
- pyasn1_alt_modules/rfc7508.py +92 -0
- pyasn1_alt_modules/rfc7585.py +53 -0
- pyasn1_alt_modules/rfc7633.py +40 -0
- pyasn1_alt_modules/rfc7693.py +66 -0
- pyasn1_alt_modules/rfc7773.py +54 -0
- pyasn1_alt_modules/rfc7836.py +65 -0
- pyasn1_alt_modules/rfc7894.py +100 -0
- pyasn1_alt_modules/rfc7906.py +739 -0
- pyasn1_alt_modules/rfc7914.py +55 -0
- pyasn1_alt_modules/rfc8017.py +159 -0
- pyasn1_alt_modules/rfc8018.py +269 -0
- pyasn1_alt_modules/rfc8103.py +36 -0
- pyasn1_alt_modules/rfc8209.py +20 -0
- pyasn1_alt_modules/rfc8226.py +151 -0
- pyasn1_alt_modules/rfc8358.py +54 -0
- pyasn1_alt_modules/rfc8360.py +46 -0
- pyasn1_alt_modules/rfc8398.py +55 -0
- pyasn1_alt_modules/rfc8410.py +43 -0
- pyasn1_alt_modules/rfc8418.py +36 -0
- pyasn1_alt_modules/rfc8419.py +70 -0
- pyasn1_alt_modules/rfc8479.py +48 -0
- pyasn1_alt_modules/rfc8494.py +80 -0
- pyasn1_alt_modules/rfc8520.py +66 -0
- pyasn1_alt_modules/rfc8619.py +45 -0
- pyasn1_alt_modules/rfc8649.py +42 -0
- pyasn1_alt_modules/rfc8692.py +79 -0
- pyasn1_alt_modules/rfc8696.py +108 -0
- pyasn1_alt_modules/rfc8702.py +109 -0
- pyasn1_alt_modules/rfc8708.py +43 -0
- pyasn1_alt_modules/rfc8737.py +36 -0
- pyasn1_alt_modules/rfc8769.py +21 -0
- pyasn1_alt_modules/rfc8894.py +52 -0
- pyasn1_alt_modules/rfc8951.py +42 -0
- pyasn1_alt_modules/rfc8954.py +238 -0
- pyasn1_alt_modules/rfc8994.py +52 -0
- pyasn1_alt_modules/rfc8995.py +39 -0
- pyasn1_alt_modules/rfc9044.py +80 -0
- pyasn1_alt_modules/rfc9092.py +35 -0
- pyasn1_alt_modules/rfc9118.py +82 -0
- pyasn1_alt_modules/rfc9174.py +55 -0
- pyasn1_alt_modules/rfc9189.py +74 -0
- pyasn1_alt_modules/rfc9215.py +228 -0
- pyasn1_alt_modules/rfc9286.py +78 -0
- pyasn1_alt_modules/rfc9289.py +22 -0
- pyasn1_alt_modules/rfc9310.py +46 -0
- pyasn1_alt_modules/rfc9323.py +129 -0
- pyasn1_alt_modules/rfc9336.py +20 -0
- pyasn1_alt_modules/rfc9337.py +74 -0
- pyasn1_alt_modules/rfc9345.py +36 -0
- pyasn1_alt_modules/rfc9385.py +22 -0
- pyasn1_alt_modules/rfc9399.py +59 -0
- pyasn1_alt_modules/rfc9480.py +731 -0
- pyasn1_alt_modules/rfc9481.py +224 -0
- pyasn1_alt_modules/rfc9509.py +24 -0
- pyasn1_alt_modules/rfc9548.py +23 -0
- pyasn1_alt_modules/rfc9579.py +89 -0
- pyasn1_alt_modules/rfc9582.py +107 -0
- pyasn1_alt_modules/rfc9598.py +52 -0
- pyasn1_alt_modules/rfc9608.py +35 -0
- pyasn1_alt_modules/rfc9629.py +100 -0
- pyasn1_alt_modules/rfc9654.py +241 -0
- pyasn1_alt_modules-0.4.5.dist-info/LICENSE.txt +25 -0
- pyasn1_alt_modules-0.4.5.dist-info/METADATA +34 -0
- pyasn1_alt_modules-0.4.5.dist-info/RECORD +195 -0
- pyasn1_alt_modules-0.4.5.dist-info/WHEEL +5 -0
- pyasn1_alt_modules-0.4.5.dist-info/top_level.txt +1 -0
- 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)
|