diff options
Diffstat (limited to 'pyasn1_modules/rfc4108.py')
-rw-r--r-- | pyasn1_modules/rfc4108.py | 111 |
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(), +} + |