Openssl PKCS7_符号未签名

Openssl PKCS7_符号未签名,openssl,sign,pkcs#7,Openssl,Sign,Pkcs#7,下面是代码的一部分: 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; 运行时没有错误,但我不理解为什么输出数据不包含符

下面是代码的一部分:

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结构,但它已为歌唱数据而不是符号本身做好准备。这是位于输出PKCS7结构末尾的数据示例:

04400001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003021300906052B0E03021A0500041440BD001563085FC35165329EA1FF5C5ECBDBBEEF

i、 e.这是SHA1的OID,要签名的数据的SHA1,填充,即必须使用私钥签名的数据。为什么不执行签名?

运行PKCS7\u验证此数据并检查其内容。这将根据PKCS#7标准为您提供签名数据。如果您需要显式签名,请使用RSA_签名或DSA_签名。也许您可以显示一个最小的测试用例?就文档而言,看起来你做的事情是正确的;我能想到的唯一解释是
e=1
(希望不是这样!)。