我有一些PKCS7数据,我可以用OpenSSL读取这些数据:
$ openssl asn1parse -i -inform der -in data.dat
0:d=0 hl=4 l=16208 cons: SEQUENCE
4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
.. more ..
我可以在代码中加载它:
// buf contains the raw data, len the length
BIO *bio = BIO_new_mem_buf(buf, len);
PKCS7 *pkcs7 = d2i_PKCS7_bio(bio, NULL);
if (!pkcs7) {
// die
}
printf("Success!");
这很好,我可以成功获取签名者信息等。但是我想从输入数据中获得解析的长度值。在我的例子中,这是16208,见于ASN1输出的第二行。
我注意到PKCS7结构有length
属性(请参阅include/openssl/pkcs7.h
),但打印时pkcs7->length
始终为零。
如何获得包含PKCS7签名数据的整个序列的长度?