![](/img/trans.png)
[英]Convert x509 certificate in PEM format to x509 structure format of Openssl
[英]how to programatically in C hash a X509 certificate in PEM format
我生成了DER
格式的X509
证书,该证书存储在名为cert.crt
的文件中。
我希望能够使用sha256
算法对其进行散列。
如何才能做到这一点 ?
我已经有一个函数可以让我对任何数据缓冲区进行散列,但我在文件中拥有证书。 是否有捷径可寻 ?
我正在寻找 C 实现。
看一下fopen
和fread
函数,它们会为您提供帮助。
也许http://linux.die.net/man/3/pem_read_x509或http://linux.die.net/man/3/d2i_x509_fp可以为您提供帮助。 尽管SSL手册页很简洁,但请说得不错。 万一文档失败,请在openssl实用程序源代码中查找示例。
编辑还查看其他SO答案,例如, 使用openssl以编程方式提取pem证书信息,并且DER格式的X509证书是否编码为ASN1?
计算 PEM 证书文件的指纹哈希:
FILE *fp = fopen(pem_file_path, "r");
if (fp)
{
X509 *x509 = PEM_read_X509(fp, NULL, NULL, NULL);
if (x509)
{
unsigned char md[EVP_MAX_MD_SIZE];
if (X509_digest(x509, EVP_sha256(), md, NULL) == 1)
{
// ok
}
X509_free(x509);
}
fclose(fp);
}
结果应与命令相同:
openssl x509 -in my.pem -noout -fingerprint -sha256
要更改哈希算法,只需将EVP_sha256()
更改为EVP_sha512()
、 EVP_sha1()
等...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.