在OpenSSL库include文件中找不到i2c_ASN1_整数函数
我在MacOS上编译OpenSSL 1.1.0h,遇到了一个问题,在任何包含文件中都没有定义函数在OpenSSL库include文件中找不到i2c_ASN1_整数函数,c,macos,openssl,C,Macos,Openssl,我在MacOS上编译OpenSSL 1.1.0h,遇到了一个问题,在任何包含文件中都没有定义函数int i2c\u ASN1\u INTEGER(ASN1\u INTEGER*a,unsigned char**pp)。通过查看OpenSSL源代码,我看到该函数是在asn1_locl.h和a_int.c文件中定义的,但它没有在编译库公共接口中公开 基本上,我在玩一些苹果应用内购买收据验证示例,它们都假设这个函数是在asn1.h中定义的。i2c_ASN1_INTEGER用于/*将ASN1整型内容八位
int i2c\u ASN1\u INTEGER(ASN1\u INTEGER*a,unsigned char**pp)
。通过查看OpenSSL源代码,我看到该函数是在asn1_locl.h和a_int.c文件中定义的,但它没有在编译库公共接口中公开
基本上,我在玩一些苹果应用内购买收据验证示例,它们都假设这个函数是在asn1.h中定义的。i2c_ASN1_INTEGER用于/*将ASN1整型内容八位字节转换为ASN1_整型结构*/
我正在使用以下命令编译库:
./Configure darwin64-x86_64-cc
make depend
make
当我使用这个过程构建OpenSSL 1.0.2o时,正如预期的那样,函数在asn1.h中定义
通过查看OpenSSL源代码,我看到该函数是在asn1_locl.h和a_int.c文件中定义的,但它没有在编译库公共接口中公开
直接从公共界面中删除重要功能有:
本页讨论OpenSSL 1.1版的API更改。这个
API更改的总体目标是使许多数据结构不透明
提交申请。数据隐藏提供了许多好处:
- 可以在不破坏二进制兼容性的情况下更改字段
- 应用程序更加健壮,并且可以更加保证正确性
- 例如,它有助于确定需要哪些(新的)访问器和设置器
我甚至可以说,对于OpenSSL v1.1.0来说,这不是一个好的假设。对于Apple收据解析,因为我们不使用大整数(如BIGNUM),这里有一个小函数可以将整数解析为长整数
long long longLongFromASN1Content(const uint8_t *ptr, int length) {
assert(length <= sizeof(long long));
long long v = 0;
for (int i = 0; i< length; i++) {
if (i > 0) v <<= 8;
v |= ptr[i];
}
return v;
longfromasn1content(const uint8\u t*ptr,int-length){
assert(length 0)v它是在1.1.0中定义的:。这是一个内部头文件-因此您是正确的。它已从公共API中删除。您是否找到解决此问题的方法?