这是代码的一部分:
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
即。这是SHA1的OID,要签名的数据的SHA1,填充,即必须用私钥签名的数据。为什么不进行签名?