Если вы добавите к ответу @ dwalter следующий код, вы получите идентификатор ключа субъекта, предоставив общий код, поскольку получить SKID не просто.
//Gives the subject key id for the certificate.
string get_certificate_skid(const string& certificate_path)
{
X509* cert = X509_new();
BIO* bio_cert = BIO_new_file(certificate_path.c_str(), "rb");
PEM_read_bio_X509(bio_cert, &cert, NULL, NULL);
string certificate_skid("-");
int loc = X509_get_ext_by_NID(cert, NID_subject_key_identifier,-1);
X509_EXTENSION *ext = X509_get_ext(cert, loc);
if (ext) {
const unsigned char* octet_str_data = ext->value->data;
long xlen;
int tag, xclass;
int ret = ASN1_get_object(&octet_str_data, &xlen, &tag, &xclass, ext->value->length);
char* skid = hex_to_string(octet_str_data, xlen);
if(skid != nullptr)
{
certificate_skid.assign(skid);
free(skid);
}
}
BIO_free(bio_cert);
X509_free(cert);
return certificate_skid;
}