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

-- 15 Module CMSCKMKeyManagement CMSCKMKeyManagement {itu-t recommendation(0) x(24) cms-profile(894) module(0) cKMKeyManagement(1) version1(1)} "/ITU-T/Recommendation/X/CMS-Profile/Module/CKMKeyManagement/Version1" DEFINITIONS ::= 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)} ContentEncryptionAlgorithmIdentifier,DigestAlgorithmIdentifier, EncryptedKey,UserKeyingMaterial 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)} id-ckm-key-agree-hash,id-ckm-key-agree-multiple-encrypt, id-ckm-symmetric,id-ckm-key-transport,id-ckm-recip-info FROM CMSObjectIdentifiers {iso(1) identified-organization(3) tc68(133) country(16) x9(840) x9Standards(9) x9-73(73) module(0) oids(1) v2009(1)} DomainParameters FROM ANSI-X9-42 {iso(1) member-body(2) us(840) ansi-x942(10046) module(5) 1} ECDomainParameters FROM ANSI-X9-62 {iso(1) member-body(2) us(840) 10045 modules(0) 2}; EXTENDED-KEY-MGMT-INFO ::= TYPE-IDENTIFIER ckmRecipientInfo EXTENDED-KEY-MGMT-INFO ::= { KeyConstructRecipientInfo IDENTIFIED BY id-ckm-recip-info } KeyConstructRecipientInfo ::= SEQUENCE { version Version, did KeyConstructionDomain OPTIONAL, ckmid [0] KeyConstructionRecipient, ukm UserKeyingMaterial OPTIONAL, keyConstructionAlgorithm KeyConstructionAlgorithmIdentifier, encryptedRandom EncryptedKey } Version ::= INTEGER(1..MAX) KeyConstructionDomain ::= SEQUENCE { domainName DomainName, domainMaintenanceLevel DomainMaintenanceLevel, domainParams DomainParams OPTIONAL -- From ANS X9.42 and ANS X.9.62 -- } DomainParams ::= CHOICE { dhParams [0] DomainParameters, ecParams [1] ECDomainParameters } DomainName ::= PrintableString (SIZE(1..MAX)) DomainMaintenanceLevel ::= INTEGER (1..MAX) KeyConstructionLabels ::= SEQUENCE SIZE(1..MAX) OF KeyConstructionLabel KeyConstructionLabel ::= INTEGER KeyConstructionRecipient ::= CHOICE { unencrypted [0] KeyConstructionLabels, encrypted [1] EncryptedRecipientID } EncryptedRecipientID ::= SEQUENCE { algorithm ContentEncryptionAlgorithmIdentifier OPTIONAL, keyID [0] OCTET STRING OPTIONAL, ciphertext OCTET STRING } KeyConstructionAlgorithmIdentifier ::= AlgorithmIdentifier {ALGORITHM,{KeyConstructionAlgorithms}} KeyConstructionAlgorithms ALGORITHM ::= { symmetricConstruction | keyTransportConstruction | keyAgreeMultipleEncryptionConstruction | keyAgreeHashConstruction, ... -- Expect additional objects -- } symmetricConstruction ALGORITHM ::= { IDENTIFIER id-ckm-symmetric PARAMS TYPE ConstructionAlgorithms ARE required} ConstructionAlgorithms ::= SEQUENCE { combiner CombinerAlgorithmIdentifier, keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier } CombinerAlgorithmIdentifier ::= AlgorithmIdentifier{ALGORITHM,{CombinerAlgorithms}} CombinerAlgorithms ALGORITHM ::= { ... -- Expect additional objects -- } keyTransportConstruction ALGORITHM ::= { IDENTIFIER id-ckm-key-transport PARAMS TYPE KeyEncryptionAlgorithmIdentifier ARE required } KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier {ALGORITHM,{KeyEncryptionAlgorithms}} KeyEncryptionAlgorithms ALGORITHM ::= { ... -- Expect additional objects -- } keyAgreeMultipleEncryptionConstruction ALGORITHM ::= { IDENTIFIER id-ckm-key-agree-multiple-encrypt PARAMS TYPE KeyEncryptionAlgorithmIdentifier ARE required } keyAgreeHashConstruction ALGORITHM ::= { IDENTIFIER id-ckm-key-agree-hash PARAMS TYPE DigestAlgorithmIdentifier ARE required } END