| 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 |