2

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です。誰でもこれを機能させるのを手伝ってもらえますか?

4

1 に答える 1