我正在尝试使用OpenSSL库对pdf文档进行数字签名。现在,我想从pdf文档内容中获取摘要。我只找到了从ASN1_ITEM
创建摘要的方法。但是我拥有的是ASN1_OCTET_STRING
对象,可以根据需要将其转换为ASN1_TYPE
。我想应该有某种方法可以将ASN1_TYPE
或ASN1_OCTET_STRING
转换为ASN1_ITEM
。但是我不了解ASN1_TYPE
和ASN1_TYPE
之间的关系。
P.S。如果有人共享某种适当的OpenSSL文档,将不胜感激。我可以找到的大多数都是没有适当说明的源文件。
答案 0 :(得分:2)
由于您写了“我所拥有的ASN1_OCTET_STRING
对象”,因此在documentation of the ASN1_STRING
utilities的NOTES部分下找到的以下代码段似乎很有用:
OpenSSL中几乎所有ASN1类型都表示为
ASN1_STRING
结构体。其他类型,例如ASN1_OCTET_STRING
只是 类型定义为ASN1_STRING
,函数调用ASN1_STRING
等价物。
(您可以验证这种情况是否发生在ossl_typ.h
中,它实际上不是typedef
而是#define
)
同一文档页面提供了一个函数ASN1_STRING_to_UTF8()
,您可以使用该函数以unsigned char *
的形式获取数据及其长度。有了它之后,就可以calculate a digest to your liking。
这不是您的问题“ ASN1_TYPE
和ASN1_ITEM
之间的关系”的答案,但它似乎涵盖了您所描述的问题。如果不是这种情况,请澄清。