从证书中获取SubjectKeyIdentifier和AuthorityKeyIdentifier

问题描述 投票:0回答:1

我正在解析包含文档签名者证书的文件(电子护照的 SOD 文件)。

如何使用 openssl API(而非 CLI)获取证书的 SKI 或 AKI?

谢谢!

c openssl
1个回答
0
投票

这段代码中的

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.