ここにコードの一部があります:
flags = 0;
flags |= PKCS7_BINARY;
flags |= PKCS7_NOATTR;
pkcs7 = PKCS7_sign( cert, pkey, NULL, bio_data, flags );
if ( !pkcs7 )
return;
iErr = i2d_PKCS7_bio( bio_out_der, pkcs7 );
if ( iErr != 1 )
return;
実行時にエラーはありませんが、出力データに符号が含まれていない理由がわかりません。出力データは正しいPKCS7のsignedData構造ですが、sign自体ではなくsingingデータを用意しています。これは、出力 PKCS7 構造体の最後にあるデータの例です。
04400001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003021300906052B0E03021A0500041440BD001563085FC35165329EA1FF5C5ECBDBBEEF
つまり、これは SHA1 の OID、署名するデータの SHA1、パディング、つまり秘密鍵で署名する必要があるデータです。署名が実行されないのはなぜですか?