0001 PKCS7ContentInfo ::= SEQUENCE {
0002 contentType ContentType ({ pkcs7_check_content_type }),
0003 content [0] EXPLICIT SignedData OPTIONAL
0004 }
0005
0006 ContentType ::= OBJECT IDENTIFIER ({ pkcs7_note_OID })
0007
0008 SignedData ::= SEQUENCE {
0009 version INTEGER ({ pkcs7_note_signeddata_version }),
0010 digestAlgorithms DigestAlgorithmIdentifiers,
0011 contentInfo ContentInfo ({ pkcs7_note_content }),
0012 certificates CHOICE {
0013 certSet [0] IMPLICIT ExtendedCertificatesAndCertificates,
0014 certSequence [2] IMPLICIT Certificates
0015 } OPTIONAL ({ pkcs7_note_certificate_list }),
0016 crls CHOICE {
0017 crlSet [1] IMPLICIT CertificateRevocationLists,
0018 crlSequence [3] IMPLICIT CRLSequence
0019 } OPTIONAL,
0020 signerInfos SignerInfos
0021 }
0022
0023 ContentInfo ::= SEQUENCE {
0024 contentType ContentType ({ pkcs7_note_OID }),
0025 content [0] EXPLICIT Data OPTIONAL
0026 }
0027
0028 Data ::= ANY ({ pkcs7_note_data })
0029
0030 DigestAlgorithmIdentifiers ::= CHOICE {
0031 daSet SET OF DigestAlgorithmIdentifier,
0032 daSequence SEQUENCE OF DigestAlgorithmIdentifier
0033 }
0034
0035 DigestAlgorithmIdentifier ::= SEQUENCE {
0036 algorithm OBJECT IDENTIFIER ({ pkcs7_note_OID }),
0037 parameters ANY OPTIONAL
0038 }
0039
0040 --
0041 -- Certificates and certificate lists
0042 --
0043 ExtendedCertificatesAndCertificates ::= SET OF ExtendedCertificateOrCertificate
0044
0045 ExtendedCertificateOrCertificate ::= CHOICE {
0046 certificate Certificate, -- X.509
0047 extendedCertificate [0] IMPLICIT ExtendedCertificate -- PKCS#6
0048 }
0049
0050 ExtendedCertificate ::= Certificate -- cheating
0051
0052 Certificates ::= SEQUENCE OF Certificate
0053
0054 CertificateRevocationLists ::= SET OF CertificateList
0055
0056 CertificateList ::= SEQUENCE OF Certificate -- This may be defined incorrectly
0057
0058 CRLSequence ::= SEQUENCE OF CertificateList
0059
0060 Certificate ::= ANY ({ pkcs7_extract_cert }) -- X.509
0061
0062 --
0063 -- Signer information
0064 --
0065 SignerInfos ::= CHOICE {
0066 siSet SET OF SignerInfo,
0067 siSequence SEQUENCE OF SignerInfo
0068 }
0069
0070 SignerInfo ::= SEQUENCE {
0071 version INTEGER ({ pkcs7_note_signerinfo_version }),
0072 sid SignerIdentifier, -- CMS variant, not PKCS#7
0073 digestAlgorithm DigestAlgorithmIdentifier ({ pkcs7_sig_note_digest_algo }),
0074 authenticatedAttributes CHOICE {
0075 aaSet [0] IMPLICIT SetOfAuthenticatedAttribute
0076 ({ pkcs7_sig_note_set_of_authattrs }),
0077 aaSequence [2] EXPLICIT SEQUENCE OF AuthenticatedAttribute
0078 -- Explicit because easier to compute digest on
0079 -- sequence of attributes and then reuse encoded
0080 -- sequence in aaSequence.
0081 } OPTIONAL,
0082 digestEncryptionAlgorithm
0083 DigestEncryptionAlgorithmIdentifier ({ pkcs7_sig_note_pkey_algo }),
0084 encryptedDigest EncryptedDigest,
0085 unauthenticatedAttributes CHOICE {
0086 uaSet [1] IMPLICIT SET OF UnauthenticatedAttribute,
0087 uaSequence [3] IMPLICIT SEQUENCE OF UnauthenticatedAttribute
0088 } OPTIONAL
0089 } ({ pkcs7_note_signed_info })
0090
0091 SignerIdentifier ::= CHOICE {
0092 -- RFC5652 sec 5.3
0093 issuerAndSerialNumber IssuerAndSerialNumber,
0094 subjectKeyIdentifier [0] IMPLICIT SubjectKeyIdentifier
0095 }
0096
0097 IssuerAndSerialNumber ::= SEQUENCE {
0098 issuer Name ({ pkcs7_sig_note_issuer }),
0099 serialNumber CertificateSerialNumber ({ pkcs7_sig_note_serial })
0100 }
0101
0102 CertificateSerialNumber ::= INTEGER
0103
0104 SubjectKeyIdentifier ::= OCTET STRING ({ pkcs7_sig_note_skid })
0105
0106 SetOfAuthenticatedAttribute ::= SET OF AuthenticatedAttribute
0107
0108 AuthenticatedAttribute ::= SEQUENCE {
0109 type OBJECT IDENTIFIER ({ pkcs7_note_OID }),
0110 values SET OF ANY ({ pkcs7_sig_note_authenticated_attr })
0111 }
0112
0113 UnauthenticatedAttribute ::= SEQUENCE {
0114 type OBJECT IDENTIFIER,
0115 values SET OF ANY
0116 }
0117
0118 DigestEncryptionAlgorithmIdentifier ::= SEQUENCE {
0119 algorithm OBJECT IDENTIFIER ({ pkcs7_note_OID }),
0120 parameters ANY OPTIONAL
0121 }
0122
0123 EncryptedDigest ::= OCTET STRING ({ pkcs7_sig_note_signature })
0124
0125 ---
0126 --- X.500 Name
0127 ---
0128 Name ::= SEQUENCE OF RelativeDistinguishedName
0129
0130 RelativeDistinguishedName ::= SET OF AttributeValueAssertion
0131
0132 AttributeValueAssertion ::= SEQUENCE {
0133 attributeType OBJECT IDENTIFIER ({ pkcs7_note_OID }),
0134 attributeValue ANY
0135 }