在openssl源代码中搜索不到PKCS12_free函数的定义,那么这个函数在哪里定义的?
通过GDB运行调试程序发现PKCS12_free定义在p12_asn.c中。
167 if (!PKCS12_parse(p12, passwd, pkey, cert, &ca)) {
(gdb)
170 PKCS12_free(p12);
(gdb) s
PKCS12_free (a=0x625830) at p12_asn.c:73
73 IMPLEMENT_ASN1_FUNCTIONS(PKCS12)
(gdb)
p12_asn.c中的函数为:IMPLEMENT_ASN1_FUNCTIONS(PKCS12),此为一个宏实现。
跟踪源代码,发现实现PKCS12_free的宏为:
void fname##_free(stname *a) \
{ \
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
}
那么,PKCS12_free的函数原型为:
void PKCS12_free(PKCS12 * a);
====END====