在从 OpenSSL 0.9.8 移植到 1.1.0 时,我遇到了一个缺失的函数。OpenSSL 团队一直在忙于清理他们的代码库,其中一项清理工作是删除了一些 ASN 处理宏和函数。我们过去可以使用以下代码从STACK_OF(X509)
证书转换为:DER
注意:为简洁起见,删除了错误处理
PyObject* get_der(STACK_OF(X509) *stack) {
unsigned char* enc
int len;
enc = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
return PyString_FromString(enc, len)
}
这不再链接,并且构建过程因未解析的外部符号而出错。
我检查了 0.9.8 代码库,发现那ASN1_seq_pack_X509
是一个宏。在跟踪深度嵌套的宏之后,我发现我上面的调用最终看起来像这样:
ASN1_seq_pack(X509, stack, i2d_X509, NULL, &len)
并且ASN1_seq_pack
不再存在于 OpenSSL 1.1.0 中。所以这是我的问题。应该如何从STACK_OF(X509)
to转换DER
?