openssl中PKCS12_free函数的位置及实现方式

在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====

你可能感兴趣的:(openssl)