OpenSSL 0.9.8 から 1.1.0 への移植に取り組んでいるときに、不足している機能に遭遇しました。OpenSSL チームはコード ベースの整理に忙しくしており、整理の 1 つは ASN 処理マクロと関数を削除することでした。以前は、次のコードでSTACK_OF(X509)
certs から に変換できました。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.0ASN1_seq_pack
にはもう存在しません。だからここに私の質問があります。STACK_OF(X509)
からにどのように変換する必要がありDER
ますか?