diff options
Diffstat (limited to 'src/lib/libcrypto/pkcs12/pkcs12.h')
-rw-r--r-- | src/lib/libcrypto/pkcs12/pkcs12.h | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/src/lib/libcrypto/pkcs12/pkcs12.h b/src/lib/libcrypto/pkcs12/pkcs12.h index dad356c00f..502fceff95 100644 --- a/src/lib/libcrypto/pkcs12/pkcs12.h +++ b/src/lib/libcrypto/pkcs12/pkcs12.h | |||
@@ -59,13 +59,13 @@ | |||
59 | #ifndef HEADER_PKCS12_H | 59 | #ifndef HEADER_PKCS12_H |
60 | #define HEADER_PKCS12_H | 60 | #define HEADER_PKCS12_H |
61 | 61 | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/x509.h> | ||
64 | |||
62 | #ifdef __cplusplus | 65 | #ifdef __cplusplus |
63 | extern "C" { | 66 | extern "C" { |
64 | #endif | 67 | #endif |
65 | 68 | ||
66 | #include <openssl/bio.h> | ||
67 | #include <openssl/x509.h> | ||
68 | |||
69 | #define PKCS12_KEY_ID 1 | 69 | #define PKCS12_KEY_ID 1 |
70 | #define PKCS12_IV_ID 2 | 70 | #define PKCS12_IV_ID 2 |
71 | #define PKCS12_MAC_ID 3 | 71 | #define PKCS12_MAC_ID 3 |
@@ -108,19 +108,25 @@ PKCS12_MAC_DATA *mac; | |||
108 | PKCS7 *authsafes; | 108 | PKCS7 *authsafes; |
109 | } PKCS12; | 109 | } PKCS12; |
110 | 110 | ||
111 | PREDECLARE_STACK_OF(PKCS12_SAFEBAG) | ||
112 | |||
111 | typedef struct { | 113 | typedef struct { |
112 | ASN1_OBJECT *type; | 114 | ASN1_OBJECT *type; |
113 | union { | 115 | union { |
114 | struct pkcs12_bag_st *bag; /* secret, crl and certbag */ | 116 | struct pkcs12_bag_st *bag; /* secret, crl and certbag */ |
115 | struct pkcs8_priv_key_info_st *keybag; /* keybag */ | 117 | struct pkcs8_priv_key_info_st *keybag; /* keybag */ |
116 | X509_SIG *shkeybag; /* shrouded key bag */ | 118 | X509_SIG *shkeybag; /* shrouded key bag */ |
117 | STACK /* PKCS12_SAFEBAG */ *safes; | 119 | STACK_OF(PKCS12_SAFEBAG) *safes; |
118 | ASN1_TYPE *other; | 120 | ASN1_TYPE *other; |
119 | }value; | 121 | }value; |
120 | STACK_OF(X509_ATTRIBUTE) *attrib; | 122 | STACK_OF(X509_ATTRIBUTE) *attrib; |
121 | ASN1_TYPE *rest; | 123 | ASN1_TYPE *rest; |
122 | } PKCS12_SAFEBAG; | 124 | } PKCS12_SAFEBAG; |
123 | 125 | ||
126 | DECLARE_STACK_OF(PKCS12_SAFEBAG) | ||
127 | DECLARE_ASN1_SET_OF(PKCS12_SAFEBAG) | ||
128 | DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG) | ||
129 | |||
124 | typedef struct pkcs12_bag_st { | 130 | typedef struct pkcs12_bag_st { |
125 | ASN1_OBJECT *type; | 131 | ASN1_OBJECT *type; |
126 | union { | 132 | union { |
@@ -140,50 +146,49 @@ union { | |||
140 | #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type | 146 | #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type |
141 | 147 | ||
142 | #define M_PKCS12_x5092certbag(x509) \ | 148 | #define M_PKCS12_x5092certbag(x509) \ |
143 | PKCS12_pack_safebag ((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag) | 149 | PKCS12_pack_safebag((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag) |
144 | 150 | ||
145 | #define M_PKCS12_x509crl2certbag(crl) \ | 151 | #define M_PKCS12_x509crl2certbag(crl) \ |
146 | PKCS12_pack_safebag ((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag) | 152 | PKCS12_pack_safebag((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag) |
147 | 153 | ||
148 | #define M_PKCS12_certbag2x509(bg) \ | 154 | #define M_PKCS12_certbag2x509(bg) \ |
149 | (X509 *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | 155 | (X509 *) ASN1_unpack_string((bg)->value.bag->value.octet, \ |
150 | (char *(*)())d2i_X509) | 156 | (char *(*)())d2i_X509) |
151 | 157 | ||
152 | #define M_PKCS12_certbag2x509crl(bg) \ | 158 | #define M_PKCS12_certbag2x509crl(bg) \ |
153 | (X509CRL *) ASN1_unpack_string ((bg)->value.bag->value.octet, \ | 159 | (X509CRL *) ASN1_unpack_string((bg)->value.bag->value.octet, \ |
154 | (char *(*)())d2i_X509CRL) | 160 | (char *(*)())d2i_X509CRL) |
155 | 161 | ||
156 | /*#define M_PKCS12_pkcs82rsa(p8) \ | 162 | /*#define M_PKCS12_pkcs82rsa(p8) \ |
157 | (RSA *) ASN1_unpack_string ((p8)->pkey, (char *(*)())d2i_RSAPrivateKey)*/ | 163 | (RSA *) ASN1_unpack_string((p8)->pkey, (char *(*)())d2i_RSAPrivateKey)*/ |
158 | 164 | ||
159 | #define M_PKCS12_unpack_p7data(p7) \ | 165 | #define M_PKCS12_unpack_p7data(p7) \ |
160 | ASN1_seq_unpack ((p7)->d.data->data, p7->d.data->length, \ | 166 | ASN1_seq_unpack_PKCS12_SAFEBAG((p7)->d.data->data, p7->d.data->length, \ |
161 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free) | 167 | d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free) |
162 | 168 | ||
163 | #define M_PKCS12_pack_authsafes(p12, safes) \ | 169 | #define M_PKCS12_pack_authsafes(p12, safes) \ |
164 | ASN1_seq_pack((safes), (int (*)())i2d_PKCS7,\ | 170 | ASN1_seq_pack_PKCS7((safes), i2d_PKCS7,\ |
165 | &(p12)->authsafes->d.data->data, &(p12)->authsafes->d.data->length) | 171 | &(p12)->authsafes->d.data->data, &(p12)->authsafes->d.data->length) |
166 | 172 | ||
167 | #define M_PKCS12_unpack_authsafes(p12) \ | 173 | #define M_PKCS12_unpack_authsafes(p12) \ |
168 | ASN1_seq_unpack((p12)->authsafes->d.data->data, \ | 174 | ASN1_seq_unpack_PKCS7((p12)->authsafes->d.data->data, \ |
169 | (p12)->authsafes->d.data->length, (char *(*)())d2i_PKCS7, \ | 175 | (p12)->authsafes->d.data->length, d2i_PKCS7, PKCS7_free) |
170 | PKCS7_free) | ||
171 | 176 | ||
172 | #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \ | 177 | #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \ |
173 | (STACK *) PKCS12_decrypt_d2i ((p7)->d.encrypted->enc_data->algorithm,\ | 178 | PKCS12_decrypt_d2i_PKCS12_SAFEBAG((p7)->d.encrypted->enc_data->algorithm,\ |
174 | (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \ | 179 | d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \ |
175 | (pass), (passlen), \ | 180 | (pass), (passlen), \ |
176 | (p7)->d.encrypted->enc_data->enc_data, 3) | 181 | (p7)->d.encrypted->enc_data->enc_data, 3) |
177 | 182 | ||
178 | #define M_PKCS12_decrypt_skey(bag, pass, passlen) \ | 183 | #define M_PKCS12_decrypt_skey(bag, pass, passlen) \ |
179 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((bag)->value.shkeybag->algor, \ | 184 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i((bag)->value.shkeybag->algor, \ |
180 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free, \ | 185 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (void (*)(void *))PKCS8_PRIV_KEY_INFO_free, \ |
181 | (pass), (passlen), \ | 186 | (pass), (passlen), \ |
182 | (bag)->value.shkeybag->digest, 2) | 187 | (bag)->value.shkeybag->digest, 2) |
183 | 188 | ||
184 | #define M_PKCS8_decrypt(p8, pass, passlen) \ | 189 | #define M_PKCS8_decrypt(p8, pass, passlen) \ |
185 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((p8)->algor, \ | 190 | (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i((p8)->algor, \ |
186 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free,\ | 191 | (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (void (*)(void *))PKCS8_PRIV_KEY_INFO_free,\ |
187 | (pass), (passlen), (p8)->digest, 2) | 192 | (pass), (passlen), (p8)->digest, 2) |
188 | 193 | ||
189 | #define PKCS12_get_attr(bag, attr_nid) \ | 194 | #define PKCS12_get_attr(bag, attr_nid) \ |
@@ -205,10 +210,10 @@ PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, | |||
205 | int passlen, unsigned char *salt, | 210 | int passlen, unsigned char *salt, |
206 | int saltlen, int iter, | 211 | int saltlen, int iter, |
207 | PKCS8_PRIV_KEY_INFO *p8); | 212 | PKCS8_PRIV_KEY_INFO *p8); |
208 | PKCS7 *PKCS12_pack_p7data(STACK *sk); | 213 | PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); |
209 | PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, | 214 | PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, |
210 | unsigned char *salt, int saltlen, int iter, | 215 | unsigned char *salt, int saltlen, int iter, |
211 | STACK *bags); | 216 | STACK_OF(PKCS12_SAFEBAG) *bags); |
212 | int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); | 217 | int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); |
213 | int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, | 218 | int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, |
214 | int namelen); | 219 | int namelen); |
@@ -221,7 +226,7 @@ unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, | |||
221 | int passlen, unsigned char *in, int inlen, | 226 | int passlen, unsigned char *in, int inlen, |
222 | unsigned char **data, int *datalen, int en_de); | 227 | unsigned char **data, int *datalen, int en_de); |
223 | char *PKCS12_decrypt_d2i(X509_ALGOR *algor, char *(*d2i)(), | 228 | char *PKCS12_decrypt_d2i(X509_ALGOR *algor, char *(*d2i)(), |
224 | void (*free_func)(), const char *pass, int passlen, | 229 | void (*free_func)(void *), const char *pass, int passlen, |
225 | ASN1_STRING *oct, int seq); | 230 | ASN1_STRING *oct, int seq); |
226 | ASN1_STRING *PKCS12_i2d_encrypt(X509_ALGOR *algor, int (*i2d)(), | 231 | ASN1_STRING *PKCS12_i2d_encrypt(X509_ALGOR *algor, int (*i2d)(), |
227 | const char *pass, int passlen, char *obj, | 232 | const char *pass, int passlen, char *obj, |