123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- #
- # 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
- #
- # CMS Firmware Wrapper
- #
- # 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 univ, char, namedtype, namedval, tag, constraint, useful
- from pyasn1_modules import rfc5280
- from pyasn1_modules import rfc5652
- MAX = float('inf')
- class HardwareSerialEntry(univ.Choice):
- pass
- HardwareSerialEntry.componentType = namedtype.NamedTypes(
- namedtype.NamedType('all', univ.Null()),
- namedtype.NamedType('single', univ.OctetString()),
- namedtype.NamedType('block', univ.Sequence(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()))
- )
- 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)))
- )
- class PreferredOrLegacyPackageIdentifier(univ.Choice):
- pass
- PreferredOrLegacyPackageIdentifier.componentType = namedtype.NamedTypes(
- namedtype.NamedType('preferred', PreferredPackageIdentifier()),
- namedtype.NamedType('legacy', univ.OctetString())
- )
- class CurrentFWConfig(univ.Sequence):
- pass
- CurrentFWConfig.componentType = namedtype.NamedTypes(
- namedtype.OptionalNamedType('fwPkgType', univ.Integer()),
- namedtype.NamedType('fwPkgName', PreferredOrLegacyPackageIdentifier())
- )
- class PreferredOrLegacyStalePackageIdentifier(univ.Choice):
- pass
- PreferredOrLegacyStalePackageIdentifier.componentType = namedtype.NamedTypes(
- namedtype.NamedType('preferredStaleVerNum', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),
- namedtype.NamedType('legacyStaleVersion', univ.OctetString())
- )
- class FirmwarePackageLoadErrorCode(univ.Enumerated):
- pass
- FirmwarePackageLoadErrorCode.namedValues = namedval.NamedValues(
- ('decodeFailure', 1),
- ('badContentInfo', 2),
- ('badSignedData', 3),
- ('badEncapContent', 4),
- ('badCertificate', 5),
- ('badSignerInfo', 6),
- ('badSignedAttrs', 7),
- ('badUnsignedAttrs', 8),
- ('missingContent', 9),
- ('noTrustAnchor', 10),
- ('notAuthorized', 11),
- ('badDigestAlgorithm', 12),
- ('badSignatureAlgorithm', 13),
- ('unsupportedKeySize', 14),
- ('signatureFailure', 15),
- ('contentTypeMismatch', 16),
- ('badEncryptedData', 17),
- ('unprotectedAttrsPresent', 18),
- ('badEncryptContent', 19),
- ('badEncryptAlgorithm', 20),
- ('missingCiphertext', 21),
- ('noDecryptKey', 22),
- ('decryptFailure', 23),
- ('badCompressAlgorithm', 24),
- ('missingCompressedContent', 25),
- ('decompressFailure', 26),
- ('wrongHardware', 27),
- ('stalePackage', 28),
- ('notInCommunity', 29),
- ('unsupportedPackageType', 30),
- ('missingDependency', 31),
- ('wrongDependencyVersion', 32),
- ('insufficientMemory', 33),
- ('badFirmware', 34),
- ('unsupportedParameters', 35),
- ('breaksDependency', 36),
- ('otherError', 99)
- )
- class VendorLoadErrorCode(univ.Integer):
- pass
- # 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
- # Firmware Package Information Signed Attribute and Object Identifier
- 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()))
- )
- 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
- # Target Hardware Identifier Signed Attribute and Object Identifier
- 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')
- class FirmwarePackageLoadError(univ.Sequence):
- pass
- FirmwarePackageLoadError.componentType = namedtype.NamedTypes(
- namedtype.DefaultedNamedType('version', FWErrorVersion().subtype(value='v1')),
- namedtype.NamedType('hwType', univ.ObjectIdentifier()),
- namedtype.NamedType('hwSerialNum', univ.OctetString()),
- 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)))
- )
- # Firmware Package Load Receipt Content Type and Object Identifier
- 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')
- 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)))
- )
- # 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
- # Other Name syntax for Hardware Module Name
- 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 is 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(),
- }
- rfc5652.cmsAttributesMap.update(_cmsAttributesMapUpdate)
- # Map of Content Type OIDs to Content Types is added to the
- # ones that are in rfc5652.py
- _cmsContentTypesMapUpdate = {
- id_ct_firmwareLoadError: FirmwarePackageLoadError(),
- id_ct_firmwareLoadReceipt: FirmwarePackageLoadReceipt(),
- id_ct_firmwarePackage: FirmwarePkgData(),
- }
- rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate)
- # Map of Other Name OIDs to Other Name is added to the
- # ones that are in rfc5280.py
- _anotherNameMapUpdate = {
- id_on_hardwareModuleName: HardwareModuleName(),
- }
- rfc5280.anotherNameMap.update(_anotherNameMapUpdate)
|