OpenSSL链接:缺少extern符号BIGNUM_it

时间:2014-12-12 08:18:25

标签: c linker openssl

我想在多个设备上使用OpenSSL(1.0.1j)的一些功能。一个要求是最小化代码的大小。 OpenSSL代码静态链接到我的。我只使用RSA_public_decrypt,BIO和PEM-> RSA解码方法。为实现这一目标,我目前正在编译OpenSSL而不是标准的autotools方式。我已经删除了一些我从未使用过的代码。我无法解决的唯一符号是_BIGNUM_it。

asn1t.h中声明:

DECLARE_ASN1_ITEM(BIGNUM)

#define DECLARE_ASN1_ITEM(name) \
 extern const ASN1_ITEM name##_it;

它用于rsa_asn1.c

ASN1_SIMPLE(RSA, n, BIGNUM),
ASN1_SIMPLE(RSA, e, BIGNUM),

解析为:

#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)

#define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
    (flags), (tag), offsetof(stname, field),\
    #field, ASN1_ITEM_ref(type) }

#define ASN1_ITEM_ref(iptr) (&(iptr##_it))

我搜索了那种方式使用的其他符号。它们是使用IMPLEMENT_ASN1_TYPE()实现的。我使用BIGNUM搜索了所有OpenSSL代码,但没有找到任何东西。此外,我尝试在代码中使用IMPLEMENT_ASN1_TYPE(BIGNUM),这导致了数千个错误。

这是从外面提供的吗?我想念一个.c文件吗?如果是的话,哪个?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我在asn1/x_bignum.c找到了符号。