Blame view

kernel/linux-rt-4.4.41/crypto/asymmetric_keys/pkcs7.asn1 3.78 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
  PKCS7ContentInfo ::= SEQUENCE {
  	contentType	ContentType ({ pkcs7_check_content_type }),
  	content		[0] EXPLICIT SignedData OPTIONAL
  }
  
  ContentType ::= OBJECT IDENTIFIER ({ pkcs7_note_OID })
  
  SignedData ::= SEQUENCE {
  	version			INTEGER ({ pkcs7_note_signeddata_version }),
  	digestAlgorithms	DigestAlgorithmIdentifiers,
  	contentInfo		ContentInfo ({ pkcs7_note_content }),
  	certificates		CHOICE {
  		certSet		[0] IMPLICIT ExtendedCertificatesAndCertificates,
  		certSequence	[2] IMPLICIT Certificates
  	} OPTIONAL ({ pkcs7_note_certificate_list }),
  	crls CHOICE {
  		crlSet		[1] IMPLICIT CertificateRevocationLists,
  		crlSequence	[3] IMPLICIT CRLSequence
  	} OPTIONAL,
  	signerInfos		SignerInfos
  }
  
  ContentInfo ::= SEQUENCE {
  	contentType	ContentType ({ pkcs7_note_OID }),
  	content		[0] EXPLICIT Data OPTIONAL
  }
  
  Data ::= ANY ({ pkcs7_note_data })
  
  DigestAlgorithmIdentifiers ::= CHOICE {
  	daSet			SET OF DigestAlgorithmIdentifier,
  	daSequence		SEQUENCE OF DigestAlgorithmIdentifier
  }
  
  DigestAlgorithmIdentifier ::= SEQUENCE {
  	algorithm   OBJECT IDENTIFIER ({ pkcs7_note_OID }),
  	parameters  ANY OPTIONAL
  }
  
  --
  -- Certificates and certificate lists
  --
  ExtendedCertificatesAndCertificates ::= SET OF ExtendedCertificateOrCertificate
  
  ExtendedCertificateOrCertificate ::= CHOICE {
    certificate		Certificate,				-- X.509
    extendedCertificate	[0] IMPLICIT ExtendedCertificate	-- PKCS#6
  }
  
  ExtendedCertificate ::= Certificate -- cheating
  
  Certificates ::= SEQUENCE OF Certificate
  
  CertificateRevocationLists ::= SET OF CertificateList
  
  CertificateList ::= SEQUENCE OF Certificate -- This may be defined incorrectly
  
  CRLSequence ::= SEQUENCE OF CertificateList
  
  Certificate ::= ANY ({ pkcs7_extract_cert }) -- X.509
  
  --
  -- Signer information
  --
  SignerInfos ::= CHOICE {
  	siSet		SET OF SignerInfo,
  	siSequence	SEQUENCE OF SignerInfo
  }
  
  SignerInfo ::= SEQUENCE {
  	version			INTEGER ({ pkcs7_note_signerinfo_version }),
  	sid			SignerIdentifier, -- CMS variant, not PKCS#7
  	digestAlgorithm		DigestAlgorithmIdentifier ({ pkcs7_sig_note_digest_algo }),
  	authenticatedAttributes	CHOICE {
  		aaSet		[0] IMPLICIT SetOfAuthenticatedAttribute
  					({ pkcs7_sig_note_set_of_authattrs }),
  		aaSequence	[2] EXPLICIT SEQUENCE OF AuthenticatedAttribute
  			-- Explicit because easier to compute digest on
  			-- sequence of attributes and then reuse encoded
  			-- sequence in aaSequence.
  	} OPTIONAL,
  	digestEncryptionAlgorithm
  				DigestEncryptionAlgorithmIdentifier ({ pkcs7_sig_note_pkey_algo }),
  	encryptedDigest		EncryptedDigest,
  	unauthenticatedAttributes CHOICE {
  		uaSet		[1] IMPLICIT SET OF UnauthenticatedAttribute,
  		uaSequence	[3] IMPLICIT SEQUENCE OF UnauthenticatedAttribute
  	} OPTIONAL
  } ({ pkcs7_note_signed_info })
  
  SignerIdentifier ::= CHOICE {
  	-- RFC5652 sec 5.3
  	issuerAndSerialNumber IssuerAndSerialNumber,
          subjectKeyIdentifier [0] IMPLICIT SubjectKeyIdentifier
  }
  
  IssuerAndSerialNumber ::= SEQUENCE {
  	issuer			Name ({ pkcs7_sig_note_issuer }),
  	serialNumber		CertificateSerialNumber ({ pkcs7_sig_note_serial })
  }
  
  CertificateSerialNumber ::= INTEGER
  
  SubjectKeyIdentifier ::= OCTET STRING ({ pkcs7_sig_note_skid })
  
  SetOfAuthenticatedAttribute ::= SET OF AuthenticatedAttribute
  
  AuthenticatedAttribute ::= SEQUENCE {
  	type			OBJECT IDENTIFIER ({ pkcs7_note_OID }),
  	values			SET OF ANY ({ pkcs7_sig_note_authenticated_attr })
  }
  
  UnauthenticatedAttribute ::= SEQUENCE {
  	type			OBJECT IDENTIFIER,
  	values			SET OF ANY
  }
  
  DigestEncryptionAlgorithmIdentifier ::= SEQUENCE {
  	algorithm		OBJECT IDENTIFIER ({ pkcs7_note_OID }),
  	parameters		ANY OPTIONAL
  }
  
  EncryptedDigest ::= OCTET STRING ({ pkcs7_sig_note_signature })
  
  ---
  --- X.500 Name
  ---
  Name ::= SEQUENCE OF RelativeDistinguishedName
  
  RelativeDistinguishedName ::= SET OF AttributeValueAssertion
  
  AttributeValueAssertion ::= SEQUENCE {
  	attributeType		OBJECT IDENTIFIER ({ pkcs7_note_OID }),
  	attributeValue		ANY
  }