|
|
@ -140,55 +140,25 @@ union { |
|
|
|
#define PKCS12_ERROR 0 |
|
|
|
#define PKCS12_OK 1 |
|
|
|
|
|
|
|
#define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type) |
|
|
|
#define M_PKCS12_cert_bag_type(bag) OBJ_obj2nid(bag->value.bag->type) |
|
|
|
#define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type |
|
|
|
|
|
|
|
#define M_PKCS12_x5092certbag(x509) \ |
|
|
|
PKCS12_pack_safebag((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag) |
|
|
|
|
|
|
|
#define M_PKCS12_x509crl2certbag(crl) \ |
|
|
|
PKCS12_pack_safebag((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag) |
|
|
|
|
|
|
|
#define M_PKCS12_certbag2x509(bg) \ |
|
|
|
(X509 *) ASN1_unpack_string((bg)->value.bag->value.octet, \ |
|
|
|
(char *(*)())d2i_X509) |
|
|
|
|
|
|
|
#define M_PKCS12_certbag2x509crl(bg) \ |
|
|
|
(X509CRL *) ASN1_unpack_string((bg)->value.bag->value.octet, \ |
|
|
|
(char *(*)())d2i_X509CRL) |
|
|
|
|
|
|
|
/*#define M_PKCS12_pkcs82rsa(p8) \ |
|
|
|
(RSA *) ASN1_unpack_string((p8)->pkey, (char *(*)())d2i_RSAPrivateKey)*/ |
|
|
|
/* Compatibility macros */ |
|
|
|
|
|
|
|
#define M_PKCS12_unpack_p7data(p7) \ |
|
|
|
ASN1_seq_unpack_PKCS12_SAFEBAG((p7)->d.data->data, p7->d.data->length, \ |
|
|
|
d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free) |
|
|
|
#define M_PKCS12_x5092certbag PKCS12_x5092certbag |
|
|
|
#define M_PKCS12_x509crl2certbag PKCS12_x509crl2certbag |
|
|
|
|
|
|
|
#define M_PKCS12_pack_authsafes(p12, safes) \ |
|
|
|
ASN1_seq_pack_PKCS7((safes), i2d_PKCS7,\ |
|
|
|
&(p12)->authsafes->d.data->data, &(p12)->authsafes->d.data->length) |
|
|
|
#define M_PKCS12_certbag2x509 PKCS12_certbag2x509 |
|
|
|
#define M_PKCS12_certbag2x509crl PKCS12_certbag2x509crl |
|
|
|
|
|
|
|
#define M_PKCS12_unpack_authsafes(p12) \ |
|
|
|
ASN1_seq_unpack_PKCS7((p12)->authsafes->d.data->data, \ |
|
|
|
(p12)->authsafes->d.data->length, d2i_PKCS7, PKCS7_free) |
|
|
|
#define M_PKCS12_unpack_p7data PKCS12_unpack_p7data |
|
|
|
#define M_PKCS12_pack_authsafes PKCS12_pack_authsafes |
|
|
|
#define M_PKCS12_unpack_authsafes PKCS12_unpack_authsafes |
|
|
|
#define M_PKCS12_unpack_p7encdata PKCS12_unpack_p7encdata |
|
|
|
|
|
|
|
#define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \ |
|
|
|
PKCS12_decrypt_d2i_PKCS12_SAFEBAG((p7)->d.encrypted->enc_data->algorithm,\ |
|
|
|
d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \ |
|
|
|
(pass), (passlen), \ |
|
|
|
(p7)->d.encrypted->enc_data->enc_data, 3) |
|
|
|
#define M_PKCS12_decrypt_skey PKCS12_decrypt_skey |
|
|
|
#define M_PKCS8_decrypt PKCS8_decrypt |
|
|
|
|
|
|
|
#define M_PKCS12_decrypt_skey(bag, pass, passlen) \ |
|
|
|
(PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i((bag)->value.shkeybag->algor, \ |
|
|
|
(char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (void (*)(void *))PKCS8_PRIV_KEY_INFO_free, \ |
|
|
|
(pass), (passlen), \ |
|
|
|
(bag)->value.shkeybag->digest, 2) |
|
|
|
|
|
|
|
#define M_PKCS8_decrypt(p8, pass, passlen) \ |
|
|
|
(PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i((p8)->algor, \ |
|
|
|
(char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (void (*)(void *))PKCS8_PRIV_KEY_INFO_free,\ |
|
|
|
(pass), (passlen), (p8)->digest, 2) |
|
|
|
#define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type) |
|
|
|
#define M_PKCS12_cert_bag_type(bag) OBJ_obj2nid(bag->value.bag->type) |
|
|
|
#define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type |
|
|
|
|
|
|
|
#define PKCS12_get_attr(bag, attr_nid) \ |
|
|
|
PKCS12_get_attr_gen(bag->attrib, attr_nid) |
|
|
@ -199,8 +169,17 @@ PKCS12_decrypt_d2i_PKCS12_SAFEBAG((p7)->d.encrypted->enc_data->algorithm,\ |
|
|
|
#define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0) |
|
|
|
|
|
|
|
|
|
|
|
PKCS12_SAFEBAG *PKCS12_pack_safebag(char *obj, int (*i2d)(), int nid1, int nid2); |
|
|
|
PKCS12_SAFEBAG *PKCS12_x5092certbag(X509 *x509); |
|
|
|
PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl); |
|
|
|
X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag); |
|
|
|
X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag); |
|
|
|
|
|
|
|
PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, int nid1, |
|
|
|
int nid2); |
|
|
|
PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8); |
|
|
|
PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(X509_SIG *p8, const char *pass, int passlen); |
|
|
|
PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(PKCS12_SAFEBAG *bag, const char *pass, |
|
|
|
int passlen); |
|
|
|
X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, |
|
|
|
const char *pass, int passlen, |
|
|
|
unsigned char *salt, int saltlen, int iter, |
|
|
@ -210,9 +189,15 @@ PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, |
|
|
|
int saltlen, int iter, |
|
|
|
PKCS8_PRIV_KEY_INFO *p8); |
|
|
|
PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); |
|
|
|
STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); |
|
|
|
PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, |
|
|
|
unsigned char *salt, int saltlen, int iter, |
|
|
|
STACK_OF(PKCS12_SAFEBAG) *bags); |
|
|
|
STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, int passlen); |
|
|
|
|
|
|
|
int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); |
|
|
|
STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12); |
|
|
|
|
|
|
|
int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); |
|
|
|
int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, |
|
|
|
int namelen); |
|
|
@ -224,12 +209,11 @@ char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); |
|
|
|
unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, |
|
|
|
int passlen, unsigned char *in, int inlen, |
|
|
|
unsigned char **data, int *datalen, int en_de); |
|
|
|
char *PKCS12_decrypt_d2i(X509_ALGOR *algor, char *(*d2i)(), |
|
|
|
void (*free_func)(void *), const char *pass, int passlen, |
|
|
|
ASN1_STRING *oct, int seq); |
|
|
|
ASN1_STRING *PKCS12_i2d_encrypt(X509_ALGOR *algor, int (*i2d)(), |
|
|
|
const char *pass, int passlen, char *obj, |
|
|
|
int seq); |
|
|
|
void * PKCS12_item_decrypt_d2i(X509_ALGOR *algor, const ASN1_ITEM *it, |
|
|
|
const char *pass, int passlen, ASN1_OCTET_STRING *oct, int zbuf); |
|
|
|
ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, const ASN1_ITEM *it, |
|
|
|
const char *pass, int passlen, |
|
|
|
void *obj, int zbuf); |
|
|
|
PKCS12 *PKCS12_init(int mode); |
|
|
|
int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, |
|
|
|
int saltlen, int id, int iter, int n, |
|
|
@ -254,6 +238,9 @@ DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) |
|
|
|
DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) |
|
|
|
DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) |
|
|
|
|
|
|
|
DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) |
|
|
|
DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) |
|
|
|
|
|
|
|
void ERR_load_PKCS12_strings(void); |
|
|
|
void PKCS12_PBE_add(void); |
|
|
|
int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, |
|
|
|