EnvelopedData
メモリを使用している場合、署名付きCMS_ContentInfo*
オブジェクト内のへのアクセスに問題がありますBIO
。
次のコードを使用すると、すべて正常に動作します。
BIO* output = BIO_new_file("/absolute/path/test.txt", "r+");
if (CMS_verify(cms, stack, store, dcont, output, CMS_NOINTERN)) {
BIO_flush(output);
BIO_reset(output);
CMS_ContentInfo* cms2 = SMIME_read_CMS(output, nullptr);
}
cms2 は適切にインスタンス化されており、そのコンテンツを復号化できます。ただし、ファイルをディスクに書き込みたくないので、次のようにメモリ内でこれを機能させようとしています。
BIO* output = BIO_new(BIO_s_mem());
if (CMS_verify(cms, stack, store, dcont, output, CMS_NOINTERN)) {
BIO_flush(output);
BIO_seek(output, 0);
CMS_ContentInfo* cms2 = SMIME_read_CMS(output, nullptr);
}
なんらかの理由で、SMIME_read_CMS
関数が から読み取れないようBIO
です。誰でもこれを機能させるのを手伝ってもらえますか?