1) int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, unsigned char *mac, unsigned int *maclen)
生成MAC值,pass为用户口令,passlen为口令长度,mac和maclen用于存放MAC值。当p12中pkcs7为数据类型时,本函数有效。
2) int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen)
验证pkcs12的MAC,pass为用户口令,passlen为口令长度。PKCS12的MAC值存放在p12-> mac-> dinfo->digest中。本函数根据pass和passlen调用PKCS12_gen_mac生成一个MAC值,与p12中已有的值进行比较。
3) PKCS12_create
成PKCS12数据结构。
4) PKCS12_parse
解析PKCS12,得到私钥和证书等信息。
5) PKCS12_key_gen_asc/PKCS12_key_gen_uni
生成pkcs12密钥,输入口令为ASCII码/UNICODE。
6)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)
PKCS12加解密,algor为对称算法,pass为口令,passlen为口令长度,in为输入数据,inlen为输入数据长度,data和datalen用于存放结果,en_de用于指明时加密还是解密。
7) PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk)
打包PKCS12_SAFEBAG堆栈,生成PKCS7数据结构并返回。
8) PKCS12_unpack_p7data
上面函数的逆过程。
9) PKCS12_pack_p7encdata
将PKCS12_SAFEBAG堆栈根据pbe算法、口令和salt加密,生成pkcs7并返回。
10)PKCS12_unpack_p7encdata
上述过程的逆过程。
11) int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass)
替换pkcs12的口令。
12)PKCS12_setup_mac
设置pkcs12的MAC数据结构。
13)PKCS12_set_mac
设置pkcs12的MAC信息。
14)PKCS12_pack_authsafes
将pkcs7堆栈信息打包到pkcs12中。
15)PKCS12_unpack_authsafes
上面函数的逆过程,从pkcs12中解出pkcs7堆栈,并返回。
16)PKCS12 *PKCS12_init(int mode)
生成一个pkcs12数据结构,mode的值必须为NID_pkcs7_data,即pkcs12中的pkcs7类型必须是data类型。
17)PKCS12_PBE_add
加载各种pbe算法。
18)PKCS12_PBE_keyivgen
根据口令生成对称密钥,并做加解密初始化。
19)PKCS12_item_pack_safebag
将输入的数据打包为PKCS12_SAFEBAG并返回。
20)PKCS12_x5092certbag
将证书打包为PKCS12_SAFEBAG并返回。
21)PKCS12_certbag2x509
上述过程的逆过程。
22)PKCS12_x509crl2certbag
将crl打包为PKCS12_SAFEBAG并返回。
23)PKCS12_certbag2x509crl
上述过程的逆过程。
24)PKCS12_item_i2d_encrypt
将数据结构DER编码,然后加密,数据存放在ASN1_OCTET_STRING中并返回。
24)PKCS12_item_decrypt_d2i
上面函数的逆过程,解密输入数据,然后DER解码出数据结构,并返回。
25)int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag,
const unsigned char *name, int namelen)
给PKCS12_SAFEBAG添加一个属性,属性类型为NID_friendlyName,name为unicode编码。
26)int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name,
int namelen)
给PKCS12_SAFEBAG添加一个属性,属性类型为NID_friendlyName,name为ASCII码。
27) PKCS12_get_friendlyname
上面函数的逆过程,返回一个ASCII码值。
28)PKCS12_add_CSPName_asc
给PKCS12_SAFEBAG添加一个NID_ms_csp_name属性,输入参数为ASCII码。
29)PKCS12_add_localkeyid
给PKCS12_SAFEBAG添加一个NID_localKeyID属性。
30)PKCS12_MAKE_SHKEYBAG
将pkcs8密钥转化为PKCS12_SAFEBAG。
30)PKCS8_PRIV_KEY_INFO *
PKCS12_decrypt_skey(PKCS12_SAFEBAG *bag, const char *pass, int passlen)
上面函数的逆过程,从bag中提取pkcs8密钥信息。