| # | |
| # This file is part of pyasn1-modules software. | |
| # | |
| # Created by Russ Housley with assistance from asn1ate v.0.6.0. | |
| # | |
| # Copyright (c) 2019, Vigil Security, LLC | |
| # License: http://snmplabs.com/pyasn1/license.html | |
| # | |
| # CMS Algorithm Identifier Protection Attribute | |
| # | |
| # ASN.1 source from: | |
| # https://www.rfc-editor.org/rfc/rfc6211.txt | |
| # | |
| from pyasn1.type import constraint | |
| from pyasn1.type import namedtype | |
| from pyasn1.type import tag | |
| from pyasn1.type import univ | |
| from pyasn1_modules import rfc5652 | |
| # Imports from RFC 5652 | |
| DigestAlgorithmIdentifier = rfc5652.DigestAlgorithmIdentifier | |
| MessageAuthenticationCodeAlgorithm = rfc5652.MessageAuthenticationCodeAlgorithm | |
| SignatureAlgorithmIdentifier = rfc5652.SignatureAlgorithmIdentifier | |
| # CMS Algorithm Protection attribute | |
| id_aa_cmsAlgorithmProtect = univ.ObjectIdentifier('1.2.840.113549.1.9.52') | |
| class CMSAlgorithmProtection(univ.Sequence): | |
| pass | |
| CMSAlgorithmProtection.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('digestAlgorithm', DigestAlgorithmIdentifier()), | |
| namedtype.OptionalNamedType('signatureAlgorithm', | |
| SignatureAlgorithmIdentifier().subtype( | |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))), | |
| namedtype.OptionalNamedType('macAlgorithm', | |
| MessageAuthenticationCodeAlgorithm().subtype( | |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))) | |
| ) | |
| CMSAlgorithmProtection.subtypeSpec = constraint.ConstraintsUnion( | |
| constraint.WithComponentsConstraint( | |
| ('signatureAlgorithm', constraint.ComponentPresentConstraint()), | |
| ('macAlgorithm', constraint.ComponentAbsentConstraint())), | |
| constraint.WithComponentsConstraint( | |
| ('signatureAlgorithm', constraint.ComponentAbsentConstraint()), | |
| ('macAlgorithm', constraint.ComponentPresentConstraint())) | |
| ) | |
| aa_cmsAlgorithmProtection = rfc5652.Attribute() | |
| aa_cmsAlgorithmProtection['attrType'] = id_aa_cmsAlgorithmProtect | |
| aa_cmsAlgorithmProtection['attrValues'][0] = CMSAlgorithmProtection() | |
| # Map of Attribute Type OIDs to Attributes are | |
| # added to the ones that are in rfc5652.py | |
| _cmsAttributesMapUpdate = { | |
| id_aa_cmsAlgorithmProtect: CMSAlgorithmProtection(), | |
| } | |
| rfc5652.cmsAttributesMap.update(_cmsAttributesMapUpdate) |