-- ASN module extracted from ITU-T X.894 (10/2018)

-- 14 Module CMSSigncryption CMSSigncryption {itu-t recommendation(0) x(24) cms-profile(894) module(0) signcryption(0) version1(1)} "/ITU-T/Recommendation/X/CMS-Profile/Module/Signcryption/Version1" DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS ALGORITHM,AlgorithmIdentifier{} FROM AlgorithmInformation-2009 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-algorithmInformation-02(58)} ATTRIBUTE FROM PKIX-CommonTypes-2009 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} Attribute{},Attributes,CONTENT-TYPE,EncryptedContentInfo,SignatureAlgorithmIdentifier, SignatureValue,SignedAttributes,SignedAttributesSet,SignerIdentifier, UnprotectedEncAttributes FROM CryptographicMessageSyntax-2010 { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } SigncryptionMechanism FROM Signcryption {iso(1) standard(0) signcryption(29150) asn1-module(0) signcryption-mechanisms(0)version(1)} signcrypted-attributes,signcrypted-components,signcrypted-content, signcrypted-envelope,xPath FROM CMSObjectIdentifiers {iso(1) identified-organization(3) tc68(133) country(16) x9(840)x9Standards(9) x9-73(73) module(0) oids(1) v2009(1)}; id-signcryptedData OBJECT IDENTIFIER ::= {itu-t recommendation(0) x(24) cms-profile(894) signcryption(0) data(0)} ct-SigncryptedData CONTENT-TYPE ::= { TYPE SigncryptedData IDENTIFIED BY id-signcryptedData} SigncryptedData ::= SEQUENCE { version CMSVersion, contentInformation ContentInformation, certificates Certificates OPTIONAL, crls CRLs OPTIONAL, signcrypters Signcrypters } CMSVersion ::= INTEGER {v0(0)} (0..MAX) Certificates ::= [XER:BASE64] OCTET STRING CRLs ::= [XER:BASE64] OCTET STRING ContentInformation ::= SEQUENCE { mode Mode, content Content OPTIONAL } Mode ::= MODE.&id({ProcessingModes}) ProcessingModes MODE ::= { signcryptedAttributes | signcryptedComponents | signcryptedContent | signcryptedEnveloped, ... -- Expect additional processing modes -- } Content ::= OCTET STRING (SIZE(1..MAX)) NamedKeyEncryptedData ::= SEQUENCE { version CMSVersion, keyName [0] OCTET STRING OPTIONAL, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT Attributes {{UnprotectedEncAttributes}} OPTIONAL } Signcrypters ::= SEQUENCE (SIZE(1..MAX)) OF Signcrypter Signcrypter ::= SEQUENCE { version CMSVersion, side SigncrypterIDs, signcryptedDataAlgorithm SigncryptedDataAlgorithmIdentifier, signcryptionValue SigncryptionValue, signatureInformation SignatureInformation OPTIONAL, unsigncryptedAttributes UnSigncryptedAttributes OPTIONAL } SigncrypterIDs ::= SEQUENCE { sender KeyPairIdentifier, recipient KeyPairIdentifier } KeyPairIdentifier ::= SignerIdentifier ToBeSigncrypted ::= SEQUENCE { content Content, attributes SigncryptedAttributes } SigncryptedAttributes ::= SEQUENCE (SIZE(1..MAX)) OF Attribute{{SigncryptionAttributes}} SigncryptionAttributes ATTRIBUTE ::= { SignedAttributesSet | -- CMS Signed Attributes -- signcryptedEnvelope, ... -- Expect user defined attributes -- } signcryptedEnvelope ATTRIBUTE ::= { TYPE SigncryptedKey IDENTIFIED BY signcrypted-envelope } SigncryptedKey ::= OCTET STRING SigncryptedDataAlgorithmIdentifier ::= AlgorithmIdentifier{ALGORITHM,{SigncryptAlgorithms}} SigncryptAlgorithms ALGORITHM ::= { SigncryptionMechanism, -- ISO/IEC 29150 Signcryption -- ... -- Expect additional algorithm objects -- } SigncryptionValue ::= OCTET STRING(SIZE(1..MAX)) SignatureInformation ::= SEQUENCE { signerIdentifier SignerIdentifier OPTIONAL, signatureAlgorithm SignatureAlgorithmIdentifier OPTIONAL, toBeSigned ToBeSigned, signatureValue SignatureValue } ToBeSigned ::= SEQUENCE { signcryptedPartsManifest SigncryptedPartsManifest, signedAttributes SignedAttributes } SigncryptedPartsManifest ::= Signcrypted{{Manifest}} Manifest SIGNCRYPTED ::= { xPathManifest, ... -- Expect additional manifest types -- } xPathManifest SIGNCRYPTED ::= { OID xPath PARMS XPathSet } XPathSet ::= SEQUENCE (SIZE(1..MAX)) OF XPath XPath ::= UTF8String(CONSTRAINED BY { -- XML Path Language 2.0 --}) UnSigncryptedAttributes ::= SEQUENCE (SIZE(1..MAX)) OF Attribute{{UnSigncryptionAttributes}} UnSigncryptionAttributes ATTRIBUTE ::= { ... -- Expect additional attributes -- } -- SigncryptedData processing modes -- signcryptedAttributes MODE ::= {ID signcrypted-attributes} signcryptedComponents MODE ::= {ID signcrypted-components} signcryptedContent MODE ::= {ID signcrypted-content} signcryptedEnveloped MODE ::= {ID signcrypted-envelope} -- Information object class and parameterized type definitions -- SIGNCRYPTED ::= CLASS { &id OBJECT IDENTIFIER UNIQUE, &Type OPTIONAL } WITH SYNTAX {OID &id [PARMS &Type]} Signcrypted{SIGNCRYPTED:IOSet} ::= SEQUENCE { name SIGNCRYPTED.&id({IOSet}), parts SIGNCRYPTED.&Type({IOSet}{@name}) OPTIONAL } MODE ::= CLASS { &Type OPTIONAL, &id OBJECT IDENTIFIER UNIQUE } WITH SYNTAX { [WITH SYNTAX &Type] ID &id} END