繁体   English   中英

如何在 C 中以编程方式散列 PEM 格式的 X509 证书

[英]how to programatically in C hash a X509 certificate in PEM format

我生成了DER格式的X509证书,该证书存储在名为cert.crt的文件中。

我希望能够使用sha256算法对其进行散列。

如何才能做到这一点 ?

我已经有一个函数可以让我对任何数据缓冲区进行散列,但我在文件中拥有证书。 是否有捷径可寻 ?

我正在寻找 C 实现。

看一下fopenfread函数,它们会为您提供帮助。

也许http://linux.die.net/man/3/pem_read_x509http://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM