1*0Sstevel@tonic-gate /* pkcs12.h */ 2*0Sstevel@tonic-gate /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL 3*0Sstevel@tonic-gate * project 1999. 4*0Sstevel@tonic-gate */ 5*0Sstevel@tonic-gate /* ==================================================================== 6*0Sstevel@tonic-gate * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 7*0Sstevel@tonic-gate * 8*0Sstevel@tonic-gate * Redistribution and use in source and binary forms, with or without 9*0Sstevel@tonic-gate * modification, are permitted provided that the following conditions 10*0Sstevel@tonic-gate * are met: 11*0Sstevel@tonic-gate * 12*0Sstevel@tonic-gate * 1. Redistributions of source code must retain the above copyright 13*0Sstevel@tonic-gate * notice, this list of conditions and the following disclaimer. 14*0Sstevel@tonic-gate * 15*0Sstevel@tonic-gate * 2. Redistributions in binary form must reproduce the above copyright 16*0Sstevel@tonic-gate * notice, this list of conditions and the following disclaimer in 17*0Sstevel@tonic-gate * the documentation and/or other materials provided with the 18*0Sstevel@tonic-gate * distribution. 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * 3. All advertising materials mentioning features or use of this 21*0Sstevel@tonic-gate * software must display the following acknowledgment: 22*0Sstevel@tonic-gate * "This product includes software developed by the OpenSSL Project 23*0Sstevel@tonic-gate * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 24*0Sstevel@tonic-gate * 25*0Sstevel@tonic-gate * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26*0Sstevel@tonic-gate * endorse or promote products derived from this software without 27*0Sstevel@tonic-gate * prior written permission. For written permission, please contact 28*0Sstevel@tonic-gate * licensing@OpenSSL.org. 29*0Sstevel@tonic-gate * 30*0Sstevel@tonic-gate * 5. Products derived from this software may not be called "OpenSSL" 31*0Sstevel@tonic-gate * nor may "OpenSSL" appear in their names without prior written 32*0Sstevel@tonic-gate * permission of the OpenSSL Project. 33*0Sstevel@tonic-gate * 34*0Sstevel@tonic-gate * 6. Redistributions of any form whatsoever must retain the following 35*0Sstevel@tonic-gate * acknowledgment: 36*0Sstevel@tonic-gate * "This product includes software developed by the OpenSSL Project 37*0Sstevel@tonic-gate * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 38*0Sstevel@tonic-gate * 39*0Sstevel@tonic-gate * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40*0Sstevel@tonic-gate * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41*0Sstevel@tonic-gate * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42*0Sstevel@tonic-gate * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43*0Sstevel@tonic-gate * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44*0Sstevel@tonic-gate * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45*0Sstevel@tonic-gate * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46*0Sstevel@tonic-gate * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47*0Sstevel@tonic-gate * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48*0Sstevel@tonic-gate * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49*0Sstevel@tonic-gate * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50*0Sstevel@tonic-gate * OF THE POSSIBILITY OF SUCH DAMAGE. 51*0Sstevel@tonic-gate * ==================================================================== 52*0Sstevel@tonic-gate * 53*0Sstevel@tonic-gate * This product includes cryptographic software written by Eric Young 54*0Sstevel@tonic-gate * (eay@cryptsoft.com). This product includes software written by Tim 55*0Sstevel@tonic-gate * Hudson (tjh@cryptsoft.com). 56*0Sstevel@tonic-gate * 57*0Sstevel@tonic-gate */ 58*0Sstevel@tonic-gate 59*0Sstevel@tonic-gate #ifndef HEADER_PKCS12_H 60*0Sstevel@tonic-gate #define HEADER_PKCS12_H 61*0Sstevel@tonic-gate 62*0Sstevel@tonic-gate #include <openssl/bio.h> 63*0Sstevel@tonic-gate #include <openssl/x509.h> 64*0Sstevel@tonic-gate 65*0Sstevel@tonic-gate #ifdef __cplusplus 66*0Sstevel@tonic-gate extern "C" { 67*0Sstevel@tonic-gate #endif 68*0Sstevel@tonic-gate 69*0Sstevel@tonic-gate #define PKCS12_KEY_ID 1 70*0Sstevel@tonic-gate #define PKCS12_IV_ID 2 71*0Sstevel@tonic-gate #define PKCS12_MAC_ID 3 72*0Sstevel@tonic-gate 73*0Sstevel@tonic-gate /* Default iteration count */ 74*0Sstevel@tonic-gate #ifndef PKCS12_DEFAULT_ITER 75*0Sstevel@tonic-gate #define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER 76*0Sstevel@tonic-gate #endif 77*0Sstevel@tonic-gate 78*0Sstevel@tonic-gate #define PKCS12_MAC_KEY_LENGTH 20 79*0Sstevel@tonic-gate 80*0Sstevel@tonic-gate #define PKCS12_SALT_LEN 8 81*0Sstevel@tonic-gate 82*0Sstevel@tonic-gate /* Uncomment out next line for unicode password and names, otherwise ASCII */ 83*0Sstevel@tonic-gate 84*0Sstevel@tonic-gate /*#define PBE_UNICODE*/ 85*0Sstevel@tonic-gate 86*0Sstevel@tonic-gate #ifdef PBE_UNICODE 87*0Sstevel@tonic-gate #define PKCS12_key_gen PKCS12_key_gen_uni 88*0Sstevel@tonic-gate #define PKCS12_add_friendlyname PKCS12_add_friendlyname_uni 89*0Sstevel@tonic-gate #else 90*0Sstevel@tonic-gate #define PKCS12_key_gen PKCS12_key_gen_asc 91*0Sstevel@tonic-gate #define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc 92*0Sstevel@tonic-gate #endif 93*0Sstevel@tonic-gate 94*0Sstevel@tonic-gate /* MS key usage constants */ 95*0Sstevel@tonic-gate 96*0Sstevel@tonic-gate #define KEY_EX 0x10 97*0Sstevel@tonic-gate #define KEY_SIG 0x80 98*0Sstevel@tonic-gate 99*0Sstevel@tonic-gate typedef struct { 100*0Sstevel@tonic-gate X509_SIG *dinfo; 101*0Sstevel@tonic-gate ASN1_OCTET_STRING *salt; 102*0Sstevel@tonic-gate ASN1_INTEGER *iter; /* defaults to 1 */ 103*0Sstevel@tonic-gate } PKCS12_MAC_DATA; 104*0Sstevel@tonic-gate 105*0Sstevel@tonic-gate typedef struct { 106*0Sstevel@tonic-gate ASN1_INTEGER *version; 107*0Sstevel@tonic-gate PKCS12_MAC_DATA *mac; 108*0Sstevel@tonic-gate PKCS7 *authsafes; 109*0Sstevel@tonic-gate } PKCS12; 110*0Sstevel@tonic-gate 111*0Sstevel@tonic-gate PREDECLARE_STACK_OF(PKCS12_SAFEBAG) 112*0Sstevel@tonic-gate 113*0Sstevel@tonic-gate typedef struct { 114*0Sstevel@tonic-gate ASN1_OBJECT *type; 115*0Sstevel@tonic-gate union { 116*0Sstevel@tonic-gate struct pkcs12_bag_st *bag; /* secret, crl and certbag */ 117*0Sstevel@tonic-gate struct pkcs8_priv_key_info_st *keybag; /* keybag */ 118*0Sstevel@tonic-gate X509_SIG *shkeybag; /* shrouded key bag */ 119*0Sstevel@tonic-gate STACK_OF(PKCS12_SAFEBAG) *safes; 120*0Sstevel@tonic-gate ASN1_TYPE *other; 121*0Sstevel@tonic-gate }value; 122*0Sstevel@tonic-gate STACK_OF(X509_ATTRIBUTE) *attrib; 123*0Sstevel@tonic-gate } PKCS12_SAFEBAG; 124*0Sstevel@tonic-gate 125*0Sstevel@tonic-gate DECLARE_STACK_OF(PKCS12_SAFEBAG) 126*0Sstevel@tonic-gate DECLARE_ASN1_SET_OF(PKCS12_SAFEBAG) 127*0Sstevel@tonic-gate DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG) 128*0Sstevel@tonic-gate 129*0Sstevel@tonic-gate typedef struct pkcs12_bag_st { 130*0Sstevel@tonic-gate ASN1_OBJECT *type; 131*0Sstevel@tonic-gate union { 132*0Sstevel@tonic-gate ASN1_OCTET_STRING *x509cert; 133*0Sstevel@tonic-gate ASN1_OCTET_STRING *x509crl; 134*0Sstevel@tonic-gate ASN1_OCTET_STRING *octet; 135*0Sstevel@tonic-gate ASN1_IA5STRING *sdsicert; 136*0Sstevel@tonic-gate ASN1_TYPE *other; /* Secret or other bag */ 137*0Sstevel@tonic-gate }value; 138*0Sstevel@tonic-gate } PKCS12_BAGS; 139*0Sstevel@tonic-gate 140*0Sstevel@tonic-gate #define PKCS12_ERROR 0 141*0Sstevel@tonic-gate #define PKCS12_OK 1 142*0Sstevel@tonic-gate 143*0Sstevel@tonic-gate /* Compatibility macros */ 144*0Sstevel@tonic-gate 145*0Sstevel@tonic-gate #define M_PKCS12_x5092certbag PKCS12_x5092certbag 146*0Sstevel@tonic-gate #define M_PKCS12_x509crl2certbag PKCS12_x509crl2certbag 147*0Sstevel@tonic-gate 148*0Sstevel@tonic-gate #define M_PKCS12_certbag2x509 PKCS12_certbag2x509 149*0Sstevel@tonic-gate #define M_PKCS12_certbag2x509crl PKCS12_certbag2x509crl 150*0Sstevel@tonic-gate 151*0Sstevel@tonic-gate #define M_PKCS12_unpack_p7data PKCS12_unpack_p7data 152*0Sstevel@tonic-gate #define M_PKCS12_pack_authsafes PKCS12_pack_authsafes 153*0Sstevel@tonic-gate #define M_PKCS12_unpack_authsafes PKCS12_unpack_authsafes 154*0Sstevel@tonic-gate #define M_PKCS12_unpack_p7encdata PKCS12_unpack_p7encdata 155*0Sstevel@tonic-gate 156*0Sstevel@tonic-gate #define M_PKCS12_decrypt_skey PKCS12_decrypt_skey 157*0Sstevel@tonic-gate #define M_PKCS8_decrypt PKCS8_decrypt 158*0Sstevel@tonic-gate 159*0Sstevel@tonic-gate #define M_PKCS12_bag_type(bg) OBJ_obj2nid((bg)->type) 160*0Sstevel@tonic-gate #define M_PKCS12_cert_bag_type(bg) OBJ_obj2nid((bg)->value.bag->type) 161*0Sstevel@tonic-gate #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type 162*0Sstevel@tonic-gate 163*0Sstevel@tonic-gate #define PKCS12_get_attr(bag, attr_nid) \ 164*0Sstevel@tonic-gate PKCS12_get_attr_gen(bag->attrib, attr_nid) 165*0Sstevel@tonic-gate 166*0Sstevel@tonic-gate #define PKCS8_get_attr(p8, attr_nid) \ 167*0Sstevel@tonic-gate PKCS12_get_attr_gen(p8->attributes, attr_nid) 168*0Sstevel@tonic-gate 169*0Sstevel@tonic-gate #define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0) 170*0Sstevel@tonic-gate 171*0Sstevel@tonic-gate 172*0Sstevel@tonic-gate PKCS12_SAFEBAG *PKCS12_x5092certbag(X509 *x509); 173*0Sstevel@tonic-gate PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl); 174*0Sstevel@tonic-gate X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag); 175*0Sstevel@tonic-gate X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag); 176*0Sstevel@tonic-gate 177*0Sstevel@tonic-gate PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, int nid1, 178*0Sstevel@tonic-gate int nid2); 179*0Sstevel@tonic-gate PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8); 180*0Sstevel@tonic-gate PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(X509_SIG *p8, const char *pass, int passlen); 181*0Sstevel@tonic-gate PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(PKCS12_SAFEBAG *bag, const char *pass, 182*0Sstevel@tonic-gate int passlen); 183*0Sstevel@tonic-gate X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, 184*0Sstevel@tonic-gate const char *pass, int passlen, 185*0Sstevel@tonic-gate unsigned char *salt, int saltlen, int iter, 186*0Sstevel@tonic-gate PKCS8_PRIV_KEY_INFO *p8); 187*0Sstevel@tonic-gate PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, 188*0Sstevel@tonic-gate int passlen, unsigned char *salt, 189*0Sstevel@tonic-gate int saltlen, int iter, 190*0Sstevel@tonic-gate PKCS8_PRIV_KEY_INFO *p8); 191*0Sstevel@tonic-gate PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); 192*0Sstevel@tonic-gate STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); 193*0Sstevel@tonic-gate PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, 194*0Sstevel@tonic-gate unsigned char *salt, int saltlen, int iter, 195*0Sstevel@tonic-gate STACK_OF(PKCS12_SAFEBAG) *bags); 196*0Sstevel@tonic-gate STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, int passlen); 197*0Sstevel@tonic-gate 198*0Sstevel@tonic-gate int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); 199*0Sstevel@tonic-gate STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12); 200*0Sstevel@tonic-gate 201*0Sstevel@tonic-gate int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen); 202*0Sstevel@tonic-gate int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, 203*0Sstevel@tonic-gate int namelen); 204*0Sstevel@tonic-gate int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, 205*0Sstevel@tonic-gate int namelen); 206*0Sstevel@tonic-gate int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, const unsigned char *name, 207*0Sstevel@tonic-gate int namelen); 208*0Sstevel@tonic-gate int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); 209*0Sstevel@tonic-gate ASN1_TYPE *PKCS12_get_attr_gen(STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid); 210*0Sstevel@tonic-gate char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); 211*0Sstevel@tonic-gate unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, 212*0Sstevel@tonic-gate int passlen, unsigned char *in, int inlen, 213*0Sstevel@tonic-gate unsigned char **data, int *datalen, int en_de); 214*0Sstevel@tonic-gate void * PKCS12_item_decrypt_d2i(X509_ALGOR *algor, const ASN1_ITEM *it, 215*0Sstevel@tonic-gate const char *pass, int passlen, ASN1_OCTET_STRING *oct, int zbuf); 216*0Sstevel@tonic-gate ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, const ASN1_ITEM *it, 217*0Sstevel@tonic-gate const char *pass, int passlen, 218*0Sstevel@tonic-gate void *obj, int zbuf); 219*0Sstevel@tonic-gate PKCS12 *PKCS12_init(int mode); 220*0Sstevel@tonic-gate int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, 221*0Sstevel@tonic-gate int saltlen, int id, int iter, int n, 222*0Sstevel@tonic-gate unsigned char *out, const EVP_MD *md_type); 223*0Sstevel@tonic-gate int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int id, int iter, int n, unsigned char *out, const EVP_MD *md_type); 224*0Sstevel@tonic-gate int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 225*0Sstevel@tonic-gate ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md_type, 226*0Sstevel@tonic-gate int en_de); 227*0Sstevel@tonic-gate int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, 228*0Sstevel@tonic-gate unsigned char *mac, unsigned int *maclen); 229*0Sstevel@tonic-gate int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); 230*0Sstevel@tonic-gate int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, 231*0Sstevel@tonic-gate unsigned char *salt, int saltlen, int iter, 232*0Sstevel@tonic-gate const EVP_MD *md_type); 233*0Sstevel@tonic-gate int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, 234*0Sstevel@tonic-gate int saltlen, const EVP_MD *md_type); 235*0Sstevel@tonic-gate unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen); 236*0Sstevel@tonic-gate char *uni2asc(unsigned char *uni, int unilen); 237*0Sstevel@tonic-gate 238*0Sstevel@tonic-gate DECLARE_ASN1_FUNCTIONS(PKCS12) 239*0Sstevel@tonic-gate DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) 240*0Sstevel@tonic-gate DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) 241*0Sstevel@tonic-gate DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) 242*0Sstevel@tonic-gate 243*0Sstevel@tonic-gate DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) 244*0Sstevel@tonic-gate DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) 245*0Sstevel@tonic-gate 246*0Sstevel@tonic-gate void PKCS12_PBE_add(void); 247*0Sstevel@tonic-gate int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, 248*0Sstevel@tonic-gate STACK_OF(X509) **ca); 249*0Sstevel@tonic-gate PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, 250*0Sstevel@tonic-gate STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, 251*0Sstevel@tonic-gate int mac_iter, int keytype); 252*0Sstevel@tonic-gate int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); 253*0Sstevel@tonic-gate int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); 254*0Sstevel@tonic-gate PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); 255*0Sstevel@tonic-gate PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); 256*0Sstevel@tonic-gate int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass); 257*0Sstevel@tonic-gate 258*0Sstevel@tonic-gate /* BEGIN ERROR CODES */ 259*0Sstevel@tonic-gate /* The following lines are auto generated by the script mkerr.pl. Any changes 260*0Sstevel@tonic-gate * made after this point may be overwritten when the script is next run. 261*0Sstevel@tonic-gate */ 262*0Sstevel@tonic-gate void ERR_load_PKCS12_strings(void); 263*0Sstevel@tonic-gate 264*0Sstevel@tonic-gate /* Error codes for the PKCS12 functions. */ 265*0Sstevel@tonic-gate 266*0Sstevel@tonic-gate /* Function codes. */ 267*0Sstevel@tonic-gate #define PKCS12_F_PARSE_BAGS 103 268*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME 100 269*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC 127 270*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI 102 271*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_ADD_LOCALKEYID 104 272*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_CREATE 105 273*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_DECRYPT_D2I 106 274*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_GEN_MAC 107 275*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_I2D_ENCRYPT 108 276*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_INIT 109 277*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_KEY_GEN_ASC 110 278*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_KEY_GEN_UNI 111 279*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_MAKE_KEYBAG 112 280*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_MAKE_SHKEYBAG 113 281*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_NEWPASS 128 282*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PACK_P7DATA 114 283*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 284*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PACK_SAFEBAG 117 285*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PARSE 118 286*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PBE_CRYPT 119 287*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 288*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_SETUP_MAC 122 289*0Sstevel@tonic-gate #define PKCS12_F_PKCS12_SET_MAC 123 290*0Sstevel@tonic-gate #define PKCS12_F_PKCS8_ADD_KEYUSAGE 124 291*0Sstevel@tonic-gate #define PKCS12_F_PKCS8_ENCRYPT 125 292*0Sstevel@tonic-gate #define PKCS12_F_VERIFY_MAC 126 293*0Sstevel@tonic-gate 294*0Sstevel@tonic-gate /* Reason codes. */ 295*0Sstevel@tonic-gate #define PKCS12_R_CANT_PACK_STRUCTURE 100 296*0Sstevel@tonic-gate #define PKCS12_R_DECODE_ERROR 101 297*0Sstevel@tonic-gate #define PKCS12_R_ENCODE_ERROR 102 298*0Sstevel@tonic-gate #define PKCS12_R_ENCRYPT_ERROR 103 299*0Sstevel@tonic-gate #define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 300*0Sstevel@tonic-gate #define PKCS12_R_INVALID_NULL_ARGUMENT 104 301*0Sstevel@tonic-gate #define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 302*0Sstevel@tonic-gate #define PKCS12_R_IV_GEN_ERROR 106 303*0Sstevel@tonic-gate #define PKCS12_R_KEY_GEN_ERROR 107 304*0Sstevel@tonic-gate #define PKCS12_R_MAC_ABSENT 108 305*0Sstevel@tonic-gate #define PKCS12_R_MAC_GENERATION_ERROR 109 306*0Sstevel@tonic-gate #define PKCS12_R_MAC_SETUP_ERROR 110 307*0Sstevel@tonic-gate #define PKCS12_R_MAC_STRING_SET_ERROR 111 308*0Sstevel@tonic-gate #define PKCS12_R_MAC_VERIFY_ERROR 112 309*0Sstevel@tonic-gate #define PKCS12_R_MAC_VERIFY_FAILURE 113 310*0Sstevel@tonic-gate #define PKCS12_R_PARSE_ERROR 114 311*0Sstevel@tonic-gate #define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 312*0Sstevel@tonic-gate #define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 313*0Sstevel@tonic-gate #define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 314*0Sstevel@tonic-gate #define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 315*0Sstevel@tonic-gate #define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 316*0Sstevel@tonic-gate 317*0Sstevel@tonic-gate #ifdef __cplusplus 318*0Sstevel@tonic-gate } 319*0Sstevel@tonic-gate #endif 320*0Sstevel@tonic-gate #endif 321