0

我生成了一个格式的X509证书DER,它存储在一个名为cert.crt.

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

如何才能做到这一点 ?

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

我正在寻找一个 C 实现。

4

3 回答 3

0

看看函数fopenfread它们会对你有所帮助。

于 2013-05-16T11:05:51.103 回答
0

也许http://linux.die.net/man/3/pem_read_x509http://linux.die.net/man/3/d2i_x509_fp可以帮助你。虽然 SSL 手册页很简洁,但说得好听。如果文档失败,请在 openssl 实用程序源代码中查找示例。

编辑还请查看其他 SO 答案,例如使用 openssl 以编程方式提取 pem 证书信息,以及X509 证书是否采用 DER 格式 ASN1 编码?

于 2013-05-16T11:16:51.653 回答
0

用于计算 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()

于 2021-10-28T11:03:20.537 回答