# # 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 a map for use with opentypes. # # Copyright (c) 2019, Vigil Security, LLC # License: http://snmplabs.com/pyasn1/license.html # # Update to Enhanced Security Services for S/MIME # # ASN.1 source from: # https://www.rfc-editor.org/rfc/rfc5035.txt # from pyasn1.codec.der.encoder import encode as der_encode from pyasn1.type import namedtype from pyasn1.type import univ from pyasn1_modules import rfc2634 from pyasn1_modules import rfc4055 from pyasn1_modules import rfc5652 from pyasn1_modules import rfc5280 ContentType = rfc5652.ContentType IssuerAndSerialNumber = rfc5652.IssuerAndSerialNumber SubjectKeyIdentifier = rfc5652.SubjectKeyIdentifier AlgorithmIdentifier = rfc5280.AlgorithmIdentifier PolicyInformation = rfc5280.PolicyInformation GeneralNames = rfc5280.GeneralNames CertificateSerialNumber = rfc5280.CertificateSerialNumber # Signing Certificate Attribute V1 and V2 id_aa_signingCertificate = rfc2634.id_aa_signingCertificate id_aa_signingCertificateV2 = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.47') Hash = rfc2634.Hash IssuerSerial = rfc2634.IssuerSerial ESSCertID = rfc2634.ESSCertID SigningCertificate = rfc2634.SigningCertificate sha256AlgId = AlgorithmIdentifier() sha256AlgId['algorithm'] = rfc4055.id_sha256 # A non-schema object for sha256AlgId['parameters'] as absent sha256AlgId['parameters'] = der_encode(univ.OctetString('')) class ESSCertIDv2(univ.Sequence): pass ESSCertIDv2.componentType = namedtype.NamedTypes( namedtype.DefaultedNamedType('hashAlgorithm', sha256AlgId), namedtype.NamedType('certHash', Hash()), namedtype.OptionalNamedType('issuerSerial', IssuerSerial()) ) class SigningCertificateV2(univ.Sequence): pass SigningCertificateV2.componentType = namedtype.NamedTypes( namedtype.NamedType('certs', univ.SequenceOf( componentType=ESSCertIDv2())), namedtype.OptionalNamedType('policies', univ.SequenceOf( componentType=PolicyInformation())) ) # Mail List Expansion History Attribute id_aa_mlExpandHistory = rfc2634.id_aa_mlExpandHistory ub_ml_expansion_history = rfc2634.ub_ml_expansion_history EntityIdentifier = rfc2634.EntityIdentifier MLReceiptPolicy = rfc2634.MLReceiptPolicy MLData = rfc2634.MLData MLExpansionHistory = rfc2634.MLExpansionHistory # ESS Security Label Attribute id_aa_securityLabel = rfc2634.id_aa_securityLabel ub_privacy_mark_length = rfc2634.ub_privacy_mark_length ub_security_categories = rfc2634.ub_security_categories ub_integer_options = rfc2634.ub_integer_options ESSPrivacyMark = rfc2634.ESSPrivacyMark SecurityClassification = rfc2634.SecurityClassification SecurityPolicyIdentifier = rfc2634.SecurityPolicyIdentifier SecurityCategory = rfc2634.SecurityCategory SecurityCategories = rfc2634.SecurityCategories ESSSecurityLabel = rfc2634.ESSSecurityLabel # Equivalent Labels Attribute id_aa_equivalentLabels = rfc2634.id_aa_equivalentLabels EquivalentLabels = rfc2634.EquivalentLabels # Content Identifier Attribute id_aa_contentIdentifier = rfc2634.id_aa_contentIdentifier ContentIdentifier = rfc2634.ContentIdentifier # Content Reference Attribute id_aa_contentReference = rfc2634.id_aa_contentReference ContentReference = rfc2634.ContentReference # Message Signature Digest Attribute id_aa_msgSigDigest = rfc2634.id_aa_msgSigDigest MsgSigDigest = rfc2634.MsgSigDigest # Content Hints Attribute id_aa_contentHint = rfc2634.id_aa_contentHint ContentHints = rfc2634.ContentHints # Receipt Request Attribute AllOrFirstTier = rfc2634.AllOrFirstTier ReceiptsFrom = rfc2634.ReceiptsFrom id_aa_receiptRequest = rfc2634.id_aa_receiptRequest ub_receiptsTo = rfc2634.ub_receiptsTo ReceiptRequest = rfc2634.ReceiptRequest # Receipt Content Type ESSVersion = rfc2634.ESSVersion id_ct_receipt = rfc2634.id_ct_receipt Receipt = rfc2634.Receipt ub_receiptsTo = rfc2634.ub_receiptsTo ReceiptRequest = rfc2634.ReceiptRequest # Map of Attribute Type to the Attribute structure is added to the # ones that are in rfc5652.py _cmsAttributesMapUpdate = { id_aa_signingCertificateV2: SigningCertificateV2(), } 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_receipt: Receipt(), } rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate)