openssl lib を使用して ASN1_OBJECT を DER にエンコードしようとしています。https://www.openssl.org/docs/man1.1.0/crypto/i2d_X509.htmlに文書化されている関数 i2d_ASN1_OBJECT があります。また、機能するサンプルコードがあります(別のオブジェクトタイプの場合):
unsigned char *smder = NULL;
int smderlen, r;
smderlen = i2d_X509_ALGORS(algs, &smder);
if (smderlen <= 0)
return 0;
algs には X509_ALGOR の STACK が事前設定されています。ASN1_OBJECT の私のコード:
unsigned char *ctder = NULL;
int ctderlen, r;
ASN1_OBJECT* obj = OBJ_txt2obj("1.2.3.4", 1);
ctderlen = i2d_ASN1_OBJECT(obj, &ctder); // SEGFAULT here
if (ctderlen <= 0)
return 0;
私はそこでセグメンテーション違反を起こしています。
アップデート
これはバグであり、現在は修正されています (参照: https://github.com/openssl/openssl/issues/6914 )