aboutsummaryrefslogtreecommitdiff
path: root/pyasn1_modules/rfc4108.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyasn1_modules/rfc4108.py')
-rw-r--r--pyasn1_modules/rfc4108.py111
1 files changed, 67 insertions, 44 deletions
diff --git a/pyasn1_modules/rfc4108.py b/pyasn1_modules/rfc4108.py
index 243f1fb..c5cdfe9 100644
--- a/pyasn1_modules/rfc4108.py
+++ b/pyasn1_modules/rfc4108.py
@@ -2,6 +2,8 @@
# This file is part of pyasn1-modules software.
#
# Created by Russ Housley with assistance from asn1ate v.0.6.0.
+# Modified by Russ Housley to add items from the verified errata.
+# Modified by Russ Housley to add maps for use with opentypes.
#
# Copyright (c) 2019, Vigil Security, LLC
# License: http://snmplabs.com/pyasn1/license.html
@@ -10,15 +12,13 @@
#
# ASN.1 source from:
# https://www.rfc-editor.org/rfc/rfc4108.txt
+# https://www.rfc-editor.org/errata_search.php?rfc=4108
#
-from pyasn1.type import constraint
-from pyasn1.type import namedtype
-from pyasn1.type import namedval
-from pyasn1.type import tag
-from pyasn1.type import univ
+from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
+from pyasn1_modules import rfc5280
from pyasn1_modules import rfc5652
MAX = float('inf')
@@ -27,7 +27,6 @@ MAX = float('inf')
class HardwareSerialEntry(univ.Choice):
pass
-
HardwareSerialEntry.componentType = namedtype.NamedTypes(
namedtype.NamedType('all', univ.Null()),
namedtype.NamedType('single', univ.OctetString()),
@@ -35,14 +34,13 @@ HardwareSerialEntry.componentType = namedtype.NamedTypes(
namedtype.NamedType('low', univ.OctetString()),
namedtype.NamedType('high', univ.OctetString())
))
- )
+ )
)
class HardwareModules(univ.Sequence):
pass
-
HardwareModules.componentType = namedtype.NamedTypes(
namedtype.NamedType('hwType', univ.ObjectIdentifier()),
namedtype.NamedType('hwSerialEntries', univ.SequenceOf(componentType=HardwareSerialEntry()))
@@ -52,17 +50,16 @@ HardwareModules.componentType = namedtype.NamedTypes(
class CommunityIdentifier(univ.Choice):
pass
-
CommunityIdentifier.componentType = namedtype.NamedTypes(
namedtype.NamedType('communityOID', univ.ObjectIdentifier()),
namedtype.NamedType('hwModuleList', HardwareModules())
)
+
class PreferredPackageIdentifier(univ.Sequence):
pass
-
PreferredPackageIdentifier.componentType = namedtype.NamedTypes(
namedtype.NamedType('fwPkgID', univ.ObjectIdentifier()),
namedtype.NamedType('verNum', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX)))
@@ -72,7 +69,6 @@ PreferredPackageIdentifier.componentType = namedtype.NamedTypes(
class PreferredOrLegacyPackageIdentifier(univ.Choice):
pass
-
PreferredOrLegacyPackageIdentifier.componentType = namedtype.NamedTypes(
namedtype.NamedType('preferred', PreferredPackageIdentifier()),
namedtype.NamedType('legacy', univ.OctetString())
@@ -82,7 +78,6 @@ PreferredOrLegacyPackageIdentifier.componentType = namedtype.NamedTypes(
class CurrentFWConfig(univ.Sequence):
pass
-
CurrentFWConfig.componentType = namedtype.NamedTypes(
namedtype.OptionalNamedType('fwPkgType', univ.Integer()),
namedtype.NamedType('fwPkgName', PreferredOrLegacyPackageIdentifier())
@@ -92,10 +87,8 @@ CurrentFWConfig.componentType = namedtype.NamedTypes(
class PreferredOrLegacyStalePackageIdentifier(univ.Choice):
pass
-
PreferredOrLegacyStalePackageIdentifier.componentType = namedtype.NamedTypes(
- namedtype.NamedType('preferredStaleVerNum',
- univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),
+ namedtype.NamedType('preferredStaleVerNum', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),
namedtype.NamedType('legacyStaleVersion', univ.OctetString())
)
@@ -103,7 +96,6 @@ PreferredOrLegacyStalePackageIdentifier.componentType = namedtype.NamedTypes(
class FirmwarePackageLoadErrorCode(univ.Enumerated):
pass
-
FirmwarePackageLoadErrorCode.namedValues = namedval.NamedValues(
('decodeFailure', 1),
('badContentInfo', 2),
@@ -149,11 +141,10 @@ class VendorLoadErrorCode(univ.Integer):
pass
-# Wrapped Firmware Key Unsigned Attribute and Object Identifiers
+# Wrapped Firmware Key Unsigned Attribute and Object Identifier
id_aa_wrappedFirmwareKey = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.39')
-
class WrappedFirmwareKey(rfc5652.EnvelopedData):
pass
@@ -162,11 +153,9 @@ class WrappedFirmwareKey(rfc5652.EnvelopedData):
id_aa_firmwarePackageInfo = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.42')
-
class FirmwarePackageInfo(univ.Sequence):
pass
-
FirmwarePackageInfo.componentType = namedtype.NamedTypes(
namedtype.OptionalNamedType('fwPkgType', univ.Integer()),
namedtype.OptionalNamedType('dependencies', univ.SequenceOf(componentType=PreferredOrLegacyPackageIdentifier()))
@@ -174,44 +163,41 @@ FirmwarePackageInfo.componentType = namedtype.NamedTypes(
FirmwarePackageInfo.sizeSpec = univ.Sequence.sizeSpec + constraint.ValueSizeConstraint(1, 2)
+
# Community Identifiers Signed Attribute and Object Identifier
id_aa_communityIdentifiers = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.40')
-
class CommunityIdentifiers(univ.SequenceOf):
pass
-
CommunityIdentifiers.componentType = CommunityIdentifier()
+
# Implemented Compression Algorithms Signed Attribute and Object Identifier
id_aa_implCompressAlgs = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.43')
-
class ImplementedCompressAlgorithms(univ.SequenceOf):
pass
-
ImplementedCompressAlgorithms.componentType = univ.ObjectIdentifier()
+
# Implemented Cryptographic Algorithms Signed Attribute and Object Identifier
id_aa_implCryptoAlgs = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.38')
-
class ImplementedCryptoAlgorithms(univ.SequenceOf):
pass
-
ImplementedCryptoAlgorithms.componentType = univ.ObjectIdentifier()
+
# Decrypt Key Identifier Signed Attribute and Object Identifier
id_aa_decryptKeyID = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.37')
-
class DecryptKeyIdentifier(univ.OctetString):
pass
@@ -220,45 +206,53 @@ class DecryptKeyIdentifier(univ.OctetString):
id_aa_targetHardwareIDs = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.36')
-
class TargetHardwareIdentifiers(univ.SequenceOf):
pass
-
TargetHardwareIdentifiers.componentType = univ.ObjectIdentifier()
+
# Firmware Package Identifier Signed Attribute and Object Identifier
id_aa_firmwarePackageID = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.35')
-
class FirmwarePackageIdentifier(univ.Sequence):
pass
-
FirmwarePackageIdentifier.componentType = namedtype.NamedTypes(
namedtype.NamedType('name', PreferredOrLegacyPackageIdentifier()),
namedtype.OptionalNamedType('stale', PreferredOrLegacyStalePackageIdentifier())
)
+# Firmware Package Message Digest Signed Attribute and Object Identifier
+
+id_aa_fwPkgMessageDigest = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.41')
+
+class FirmwarePackageMessageDigest(univ.Sequence):
+ pass
+
+FirmwarePackageMessageDigest.componentType = namedtype.NamedTypes(
+ namedtype.NamedType('algorithm', rfc5280.AlgorithmIdentifier()),
+ namedtype.NamedType('msgDigest', univ.OctetString())
+)
+
+
# Firmware Package Load Error Report Content Type and Object Identifier
class FWErrorVersion(univ.Integer):
pass
-
FWErrorVersion.namedValues = namedval.NamedValues(
('v1', 1)
)
-id_ct_firmwareLoadError = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.18')
+id_ct_firmwareLoadError = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.18')
class FirmwarePackageLoadError(univ.Sequence):
pass
-
FirmwarePackageLoadError.componentType = namedtype.NamedTypes(
namedtype.DefaultedNamedType('version', FWErrorVersion().subtype(value='v1')),
namedtype.NamedType('hwType', univ.ObjectIdentifier()),
@@ -266,8 +260,7 @@ FirmwarePackageLoadError.componentType = namedtype.NamedTypes(
namedtype.NamedType('errorCode', FirmwarePackageLoadErrorCode()),
namedtype.OptionalNamedType('vendorErrorCode', VendorLoadErrorCode()),
namedtype.OptionalNamedType('fwPkgName', PreferredOrLegacyPackageIdentifier()),
- namedtype.OptionalNamedType('config', univ.SequenceOf(componentType=CurrentFWConfig()).subtype(
- implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
+ namedtype.OptionalNamedType('config', univ.SequenceOf(componentType=CurrentFWConfig()).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
)
@@ -276,33 +269,30 @@ FirmwarePackageLoadError.componentType = namedtype.NamedTypes(
class FWReceiptVersion(univ.Integer):
pass
-
FWReceiptVersion.namedValues = namedval.NamedValues(
('v1', 1)
)
-id_ct_firmwareLoadReceipt = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.17')
+id_ct_firmwareLoadReceipt = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.17')
class FirmwarePackageLoadReceipt(univ.Sequence):
pass
-
FirmwarePackageLoadReceipt.componentType = namedtype.NamedTypes(
namedtype.DefaultedNamedType('version', FWReceiptVersion().subtype(value='v1')),
namedtype.NamedType('hwType', univ.ObjectIdentifier()),
namedtype.NamedType('hwSerialNum', univ.OctetString()),
namedtype.NamedType('fwPkgName', PreferredOrLegacyPackageIdentifier()),
namedtype.OptionalNamedType('trustAnchorKeyID', univ.OctetString()),
- namedtype.OptionalNamedType('decryptKeyID', univ.OctetString().subtype(
- implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
+ namedtype.OptionalNamedType('decryptKeyID', univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
)
+
# Firmware Package Content Type and Object Identifier
id_ct_firmwarePackage = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.16')
-
class FirmwarePkgData(univ.OctetString):
pass
@@ -311,12 +301,45 @@ class FirmwarePkgData(univ.OctetString):
id_on_hardwareModuleName = univ.ObjectIdentifier('1.3.6.1.5.5.7.8.4')
-
class HardwareModuleName(univ.Sequence):
pass
-
HardwareModuleName.componentType = namedtype.NamedTypes(
namedtype.NamedType('hwType', univ.ObjectIdentifier()),
namedtype.NamedType('hwSerialNum', univ.OctetString())
)
+
+
+# Map of Attribute Type OIDs to Attributes
+# To be added to the ones that are in rfc5652.py
+
+cmsAttributesMapUpdate = {
+ id_aa_wrappedFirmwareKey: WrappedFirmwareKey(),
+ id_aa_firmwarePackageInfo: FirmwarePackageInfo(),
+ id_aa_communityIdentifiers: CommunityIdentifiers(),
+ id_aa_implCompressAlgs: ImplementedCompressAlgorithms(),
+ id_aa_implCryptoAlgs: ImplementedCryptoAlgorithms(),
+ id_aa_decryptKeyID: DecryptKeyIdentifier(),
+ id_aa_targetHardwareIDs: TargetHardwareIdentifiers(),
+ id_aa_firmwarePackageID: FirmwarePackageIdentifier(),
+ id_aa_fwPkgMessageDigest: FirmwarePackageMessageDigest(),
+}
+
+
+# Map of Content Type OIDs to Content Types
+# To be added to the ones that are in rfc5652.py
+
+cmsContentTypesMapUpdate = {
+ id_ct_firmwareLoadError: FirmwarePackageLoadError(),
+ id_ct_firmwareLoadReceipt: FirmwarePackageLoadReceipt(),
+ id_ct_firmwarePackage: FirmwarePkgData(),
+}
+
+
+# Map of Other Name OIDs to Other Name
+# To be added to the ones that are in rfc5280.py
+
+anotherNameMapUpdate = {
+ id_on_hardwareModuleName: HardwareModuleName(),
+}
+