cms.asn1 revision 226031
155714Skris-- From RFC 3369 --
255714Skris-- $Id$ --
355714Skris
455714SkrisCMS DEFINITIONS ::= BEGIN
555714Skris
655714SkrisIMPORTS CertificateSerialNumber, AlgorithmIdentifier, Name,
755714Skris	Attribute, Certificate, SubjectKeyIdentifier FROM rfc2459
855714Skris	heim_any, heim_any_set FROM heim;
955714Skris
1055714Skrisid-pkcs7 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
1155714Skris         us(840) rsadsi(113549) pkcs(1) pkcs7(7) }
1255714Skris
1355714Skrisid-pkcs7-data OBJECT IDENTIFIER ::= 			{ id-pkcs7 1 }
1455714Skrisid-pkcs7-signedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 2 }
1555714Skrisid-pkcs7-envelopedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 3 }
1655714Skrisid-pkcs7-signedAndEnvelopedData OBJECT IDENTIFIER ::= 	{ id-pkcs7 4 }
1755714Skrisid-pkcs7-digestedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 5 }
1855714Skrisid-pkcs7-encryptedData OBJECT IDENTIFIER ::= 		{ id-pkcs7 6 }
1955714Skris
2055714SkrisCMSVersion ::= INTEGER {
2155714Skris	   CMSVersion_v0(0),
2255714Skris	   CMSVersion_v1(1),
2355714Skris	   CMSVersion_v2(2),
2455714Skris	   CMSVersion_v3(3),
2555714Skris	   CMSVersion_v4(4)
2655714Skris}
2755714Skris
2855714SkrisDigestAlgorithmIdentifier ::= AlgorithmIdentifier
2955714SkrisDigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
3055714SkrisSignatureAlgorithmIdentifier ::= AlgorithmIdentifier
3155714Skris
3255714SkrisContentType ::= OBJECT IDENTIFIER
3355714SkrisMessageDigest ::= OCTET STRING
3455714Skris
3555714SkrisContentInfo ::= SEQUENCE {
3655714Skris	contentType ContentType,
3755714Skris	content [0] EXPLICIT heim_any OPTIONAL --  DEFINED BY contentType
3855714Skris}
3955714Skris
4055714SkrisEncapsulatedContentInfo ::= SEQUENCE {
4155714Skris	eContentType ContentType,
4255714Skris	eContent [0] EXPLICIT OCTET STRING OPTIONAL
4355714Skris}
4455714Skris
4555714SkrisCertificateSet ::= SET OF heim_any
4655714Skris
4755714SkrisCertificateList ::= Certificate
4855714Skris
4955714SkrisCertificateRevocationLists ::= SET OF CertificateList
5055714Skris
5155714SkrisIssuerAndSerialNumber ::= SEQUENCE {
5255714Skris	issuer Name,
5355714Skris	serialNumber CertificateSerialNumber
5455714Skris}
5555714Skris
56-- RecipientIdentifier is same as SignerIdentifier,
57-- lets glue them togheter and save some bytes and share code for them
58
59CMSIdentifier ::= CHOICE {
60	issuerAndSerialNumber IssuerAndSerialNumber,
61	subjectKeyIdentifier [0] SubjectKeyIdentifier
62}
63
64SignerIdentifier ::= CMSIdentifier
65RecipientIdentifier ::= CMSIdentifier
66
67--- CMSAttributes are the combined UnsignedAttributes and SignedAttributes
68--- to store space and share code
69
70CMSAttributes ::= SET OF Attribute		-- SIZE (1..MAX)
71
72SignatureValue ::= OCTET STRING
73
74SignerInfo ::= 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
86SignerInfos ::= SET OF SignerInfo
87
88SignedData ::= 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
99OriginatorInfo ::= SEQUENCE {
100	certs [0] IMPLICIT -- CertificateSet --
101		SET OF heim_any OPTIONAL,
102	crls [1] IMPLICIT --CertificateRevocationLists --
103		heim_any OPTIONAL
104}
105
106KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
107ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
108
109EncryptedKey ::= OCTET STRING
110
111KeyTransRecipientInfo ::= SEQUENCE {
112	version CMSVersion,  -- always set to 0 or 2
113	rid RecipientIdentifier,
114	keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
115	encryptedKey EncryptedKey
116}
117
118RecipientInfo ::= KeyTransRecipientInfo
119
120RecipientInfos ::= SET OF RecipientInfo
121
122EncryptedContent ::= OCTET STRING
123
124EncryptedContentInfo ::= SEQUENCE {
125	contentType ContentType,
126	contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
127	encryptedContent [0] IMPLICIT OCTET STRING OPTIONAL
128}
129
130UnprotectedAttributes ::= SET OF Attribute	-- SIZE (1..MAX)
131
132CMSEncryptedData ::= SEQUENCE {
133	version CMSVersion,
134	encryptedContentInfo EncryptedContentInfo,
135        unprotectedAttrs [1] IMPLICIT -- UnprotectedAttributes --
136		heim_any OPTIONAL
137}
138
139EnvelopedData ::= 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
150CMSRC2CBCParameter ::= SEQUENCE {
151	rc2ParameterVersion	INTEGER (0..4294967295),
152	iv			OCTET STRING -- exactly 8 octets
153}
154
155CMSCBCParameter ::= OCTET STRING
156
157END
158