OLD | NEW |
| (Empty) |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
4 | |
5 #ifndef _P12T_H_ | |
6 #define _P12T_H_ | |
7 | |
8 #include "secoid.h" | |
9 #include "key.h" | |
10 #include "pkcs11.h" | |
11 #include "secpkcs7.h" | |
12 #include "secdig.h" /* for SGNDigestInfo */ | |
13 #include "pkcs12t.h" | |
14 | |
15 #define SEC_PKCS12_VERSION 3 | |
16 | |
17 /* structure declarations */ | |
18 typedef struct sec_PKCS12PFXItemStr sec_PKCS12PFXItem; | |
19 typedef struct sec_PKCS12MacDataStr sec_PKCS12MacData; | |
20 typedef struct sec_PKCS12AuthenticatedSafeStr sec_PKCS12AuthenticatedSafe; | |
21 typedef struct sec_PKCS12SafeContentsStr sec_PKCS12SafeContents; | |
22 typedef struct sec_PKCS12SafeBagStr sec_PKCS12SafeBag; | |
23 typedef struct sec_PKCS12PKCS8ShroudedKeyBagStr sec_PKCS12PKCS8ShroudedKeyBag; | |
24 typedef struct sec_PKCS12CertBagStr sec_PKCS12CertBag; | |
25 typedef struct sec_PKCS12CRLBagStr sec_PKCS12CRLBag; | |
26 typedef struct sec_PKCS12SecretBag sec_PKCS12SecretBag; | |
27 typedef struct sec_PKCS12AttributeStr sec_PKCS12Attribute; | |
28 | |
29 struct sec_PKCS12CertBagStr { | |
30 /* what type of cert is stored? */ | |
31 SECItem bagID; | |
32 | |
33 /* certificate information */ | |
34 union { | |
35 SECItem x509Cert; | |
36 SECItem SDSICert; | |
37 } value; | |
38 }; | |
39 | |
40 struct sec_PKCS12CRLBagStr { | |
41 /* what type of cert is stored? */ | |
42 SECItem bagID; | |
43 | |
44 /* certificate information */ | |
45 union { | |
46 SECItem x509CRL; | |
47 } value; | |
48 }; | |
49 | |
50 struct sec_PKCS12SecretBag { | |
51 /* what type of secret? */ | |
52 SECItem secretType; | |
53 | |
54 /* secret information. ssshhhh be vewy vewy quiet. */ | |
55 SECItem secretContent; | |
56 }; | |
57 | |
58 struct sec_PKCS12AttributeStr { | |
59 SECItem attrType; | |
60 SECItem **attrValue; | |
61 }; | |
62 | |
63 struct sec_PKCS12SafeBagStr { | |
64 | |
65 /* What type of bag are we using? */ | |
66 SECItem safeBagType; | |
67 | |
68 /* Dependent upon the type of bag being used. */ | |
69 union { | |
70 SECKEYPrivateKeyInfo *pkcs8KeyBag; | |
71 SECKEYEncryptedPrivateKeyInfo *pkcs8ShroudedKeyBag; | |
72 sec_PKCS12CertBag *certBag; | |
73 sec_PKCS12CRLBag *crlBag; | |
74 sec_PKCS12SecretBag *secretBag; | |
75 sec_PKCS12SafeContents *safeContents; | |
76 } safeBagContent; | |
77 | |
78 sec_PKCS12Attribute **attribs; | |
79 | |
80 /* used locally */ | |
81 SECOidData *bagTypeTag; | |
82 PLArenaPool *arena; | |
83 unsigned int nAttribs; | |
84 | |
85 /* used for validation/importing */ | |
86 PRBool problem, noInstall, validated, hasKey, unused, installed; | |
87 int error; | |
88 | |
89 PRBool swapUnicodeBytes; | |
90 PK11SlotInfo *slot; | |
91 SECItem *pwitem; | |
92 PRBool oldBagType; | |
93 SECPKCS12TargetTokenCAs tokenCAs; | |
94 }; | |
95 | |
96 struct sec_PKCS12SafeContentsStr { | |
97 sec_PKCS12SafeBag **safeBags; | |
98 SECItem **encodedSafeBags; | |
99 | |
100 /* used locally */ | |
101 PLArenaPool *arena; | |
102 unsigned int bagCount; | |
103 }; | |
104 | |
105 struct sec_PKCS12MacDataStr { | |
106 SGNDigestInfo safeMac; | |
107 SECItem macSalt; | |
108 SECItem iter; | |
109 }; | |
110 | |
111 struct sec_PKCS12PFXItemStr { | |
112 | |
113 SECItem version; | |
114 | |
115 /* Content type will either be Data (password integrity mode) | |
116 * or signedData (public-key integrity mode) | |
117 */ | |
118 SEC_PKCS7ContentInfo *authSafe; | |
119 SECItem encodedAuthSafe; | |
120 | |
121 /* Only present in password integrity mode */ | |
122 sec_PKCS12MacData macData; | |
123 SECItem encodedMacData; | |
124 }; | |
125 | |
126 struct sec_PKCS12AuthenticatedSafeStr { | |
127 /* Content type will either be encryptedData (password privacy mode) | |
128 * or envelopedData (public-key privacy mode) | |
129 */ | |
130 SEC_PKCS7ContentInfo **safes; | |
131 SECItem **encodedSafes; | |
132 | |
133 /* used locally */ | |
134 unsigned int safeCount; | |
135 SECItem dummySafe; | |
136 }; | |
137 | |
138 extern const SEC_ASN1Template sec_PKCS12PFXItemTemplate[]; | |
139 extern const SEC_ASN1Template sec_PKCS12MacDataTemplate[]; | |
140 extern const SEC_ASN1Template sec_PKCS12AuthenticatedSafeTemplate[]; | |
141 extern const SEC_ASN1Template sec_PKCS12SafeContentsTemplate[]; | |
142 extern const SEC_ASN1Template sec_PKCS12SafeContentsDecodeTemplate[]; | |
143 extern const SEC_ASN1Template sec_PKCS12NestedSafeContentsDecodeTemplate[]; | |
144 extern const SEC_ASN1Template sec_PKCS12CertBagTemplate[]; | |
145 extern const SEC_ASN1Template sec_PKCS12CRLBagTemplate[]; | |
146 extern const SEC_ASN1Template sec_PKCS12SecretBagTemplate[]; | |
147 extern const SEC_ASN1Template sec_PKCS12PointerToCertBagTemplate[]; | |
148 extern const SEC_ASN1Template sec_PKCS12PointerToCRLBagTemplate[]; | |
149 extern const SEC_ASN1Template sec_PKCS12PointerToSecretBagTemplate[]; | |
150 extern const SEC_ASN1Template sec_PKCS12PointerToSafeContentsTemplate[]; | |
151 extern const SEC_ASN1Template sec_PKCS12AttributeTemplate[]; | |
152 extern const SEC_ASN1Template sec_PKCS12PointerToContentInfoTemplate[]; | |
153 extern const SEC_ASN1Template sec_PKCS12SafeBagTemplate[]; | |
154 | |
155 #endif | |
OLD | NEW |