我有两个X509
个对象
X509 *cert1;
X509 *cert2;
如何确定这两个证书是相同还是不同?哪个属性对于两个相同的证书是相同的?
答案 0 :(得分:1)
X509_cmp(const X509 *a, const X509 *b)
非常适合逐字节比较两个证书的SHA_1哈希值。所以@AlexBezuglyi是100%正确的。但实际上我打算(但无法在此问题中表达)验证服务器证书是否由根证书(可信CA签名证书)签名。
X509_verify
int X509_verify
的签名是
int X509_verify(X509 * x509, EVP_PKEY * pkey);
假设您在root
中拥有根证书,在cert
X509 * root;
X509 * cert;
//Get local certificate into root
//Get server certificate into cert
//Get the public key.
EVP_PKEY * pubkey = X509_get_pubkey(root);
//verify. result less than or 0 means not verified or some error.
int result = X509_verify(cert, pubkey);
//free the public key.
EVP_PKEY_free(pubkey);