Home | History | Annotate | Line # | Download | only in asn1
      1 -- From RFC 3369 --
      2 -- Id --
      3 
      4 CMS DEFINITIONS ::= BEGIN
      5 
      6 IMPORTS CertificateSerialNumber, AlgorithmIdentifier, Name,
      7 	Attribute, Certificate, SubjectKeyIdentifier FROM rfc2459
      8 	heim_any, heim_any_set FROM heim;
      9 
     10 id-pkcs7 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     11          us(840) rsadsi(113549) pkcs(1) pkcs7(7) }
     12 
     13 id-pkcs7-data OBJECT IDENTIFIER ::= 			{ id-pkcs7 1 }
     14 id-pkcs7-signedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 2 }
     15 id-pkcs7-envelopedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 3 }
     16 id-pkcs7-signedAndEnvelopedData OBJECT IDENTIFIER ::= 	{ id-pkcs7 4 }
     17 id-pkcs7-digestedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 5 }
     18 id-pkcs7-encryptedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 6 }
     19 
     20 CMSVersion ::= INTEGER {
     21 	   CMSVersion_v0(0),
     22 	   CMSVersion_v1(1),
     23 	   CMSVersion_v2(2),
     24 	   CMSVersion_v3(3),
     25 	   CMSVersion_v4(4)
     26 }
     27 
     28 DigestAlgorithmIdentifier ::= AlgorithmIdentifier
     29 DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
     30 SignatureAlgorithmIdentifier ::= AlgorithmIdentifier
     31 
     32 ContentType ::= OBJECT IDENTIFIER
     33 MessageDigest ::= OCTET STRING
     34 
     35 ContentInfo ::= SEQUENCE {
     36 	contentType ContentType,
     37 	content [0] EXPLICIT heim_any OPTIONAL --  DEFINED BY contentType
     38 }
     39 
     40 EncapsulatedContentInfo ::= SEQUENCE {
     41 	eContentType ContentType,
     42 	eContent [0] EXPLICIT OCTET STRING OPTIONAL
     43 }
     44 
     45 CertificateSet ::= SET OF heim_any
     46 
     47 CertificateList ::= Certificate
     48 
     49 CertificateRevocationLists ::= SET OF CertificateList
     50 
     51 IssuerAndSerialNumber ::= SEQUENCE {
     52 	issuer Name,
     53 	serialNumber CertificateSerialNumber
     54 }
     55 
     56 -- RecipientIdentifier is same as SignerIdentifier,
     57 -- lets glue them togheter and save some bytes and share code for them
     58 
     59 CMSIdentifier ::= CHOICE {
     60 	issuerAndSerialNumber IssuerAndSerialNumber,
     61 	subjectKeyIdentifier [0] SubjectKeyIdentifier
     62 }
     63 
     64 SignerIdentifier ::= CMSIdentifier
     65 RecipientIdentifier ::= CMSIdentifier
     66 
     67 --- CMSAttributes are the combined UnsignedAttributes and SignedAttributes
     68 --- to store space and share code
     69 
     70 CMSAttributes ::= SET OF Attribute		-- SIZE (1..MAX)
     71 
     72 SignatureValue ::= OCTET STRING
     73 
     74 SignerInfo ::= SEQUENCE {
     75 	version CMSVersion,
     76 	sid SignerIdentifier,
     77 	digestAlgorithm DigestAlgorithmIdentifier,
     78 	signedAttrs [0] IMPLICIT -- CMSAttributes --
     79 		SET OF Attribute OPTIONAL,
     80 	signatureAlgorithm SignatureAlgorithmIdentifier,
     81 	signature SignatureValue,
     82 	unsignedAttrs [1] IMPLICIT -- CMSAttributes --
     83 		SET OF Attribute OPTIONAL
     84 }
     85 
     86 SignerInfos ::= SET OF SignerInfo
     87 
     88 SignedData ::= SEQUENCE {
     89 	version CMSVersion,
     90 	digestAlgorithms DigestAlgorithmIdentifiers,
     91 	encapContentInfo EncapsulatedContentInfo,
     92 	certificates [0] IMPLICIT -- CertificateSet --
     93 		SET OF heim_any OPTIONAL,
     94 	crls [1] IMPLICIT -- CertificateRevocationLists --
     95 		heim_any OPTIONAL,
     96 	signerInfos SignerInfos
     97 }
     98 
     99 OriginatorInfo ::= SEQUENCE {
    100 	certs [0] IMPLICIT -- CertificateSet --
    101 		SET OF heim_any OPTIONAL,
    102 	crls [1] IMPLICIT --CertificateRevocationLists --
    103 		heim_any OPTIONAL
    104 }
    105 
    106 KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
    107 ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
    108 
    109 EncryptedKey ::= OCTET STRING
    110 
    111 KeyTransRecipientInfo ::= SEQUENCE {
    112 	version CMSVersion,  -- always set to 0 or 2
    113 	rid RecipientIdentifier,
    114 	keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
    115 	encryptedKey EncryptedKey
    116 }
    117 
    118 RecipientInfo ::= KeyTransRecipientInfo
    119 
    120 RecipientInfos ::= SET OF RecipientInfo
    121 
    122 EncryptedContent ::= OCTET STRING
    123 
    124 EncryptedContentInfo ::= SEQUENCE {
    125 	contentType ContentType,
    126 	contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
    127 	encryptedContent [0] IMPLICIT OCTET STRING OPTIONAL
    128 }
    129 
    130 UnprotectedAttributes ::= SET OF Attribute	-- SIZE (1..MAX)
    131 
    132 CMSEncryptedData ::= SEQUENCE {
    133 	version CMSVersion,
    134 	encryptedContentInfo EncryptedContentInfo,
    135         unprotectedAttrs [1] IMPLICIT -- UnprotectedAttributes --
    136 		heim_any OPTIONAL
    137 }
    138 
    139 EnvelopedData ::= SEQUENCE {
    140 	version CMSVersion,
    141 	originatorInfo [0] IMPLICIT -- OriginatorInfo -- heim_any OPTIONAL,
    142 	recipientInfos RecipientInfos,
    143 	encryptedContentInfo EncryptedContentInfo,
    144 	unprotectedAttrs [1] IMPLICIT -- UnprotectedAttributes --
    145 		heim_any OPTIONAL
    146 }
    147 
    148 -- Data ::= OCTET STRING
    149 
    150 CMSRC2CBCParameter ::= SEQUENCE {
    151 	rc2ParameterVersion	INTEGER (0..4294967295),
    152 	iv			OCTET STRING -- exactly 8 octets
    153 }
    154 
    155 CMSCBCParameter ::= OCTET STRING
    156 
    157 END
    158