在从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)
OpenSSL 1.1.0中不再存在ASN1_seq_pack
。所以这是我的问题。如何将STACK_OF(X509)
转换为DER
?