我正在解析包含文档签名者证书的文件(电子护照的 SOD 文件)。
如何使用 openssl API(而非 CLI)获取证书的 SKI 或 AKI?
谢谢!
这段代码中的
DupBytes
要替换成你的代码;参数是const struct x509_st *cert
int lastpos;
ASN1_OCTET_STRING *skid;
AUTHORITY_KEYID *akid;
lastpos= -1;
skid= X509_get_ext_d2i (cert, NID_subject_key_identifier, NULL, &lastpos);
if (skid) {
const void *p = ASN1_STRING_get0_data(skid);
int len = ASN1_STRING_length(skid);
if (p && len>0) {
DupBytes (mf, &into->bSKI, len, p);
}
ASN1_OCTET_STRING_free (skid);
skid= NULL;
}
lastpos= -1;
akid= X509_get_ext_d2i (cert, NID_authority_key_identifier, NULL, &lastpos);
if (akid) {
if (akid->keyid) {
const void *p = ASN1_STRING_get0_data(akid->keyid);
int len = ASN1_STRING_length(akid->keyid);
if (p && len>0) {
DupBytes (mf, &into->bAKI, len, p);
}
}
AUTHORITY_KEYID_free (akid);
akid= NULL;
}