【问题标题】:Extracting all values of a subject attribute in a certificate提取证书中主题属性的所有值
【发布时间】:2012-03-18 18:27:07
【问题描述】:

我目前正在使用CertGetNameString 来提取每个主题属性的值,如下所示:

CertGetNameString(pCertificate,
                  CERT_NAME_ATTR_TYPE,
                  0,
                  szOID_ORGANIZATIONAL_UNIT_NAME,
                  buf,
                  _countof(buf));

但是,我发现一些证书具有多个组织单位名称 (OU) 值,CertGetNameString 只能读取第一个。例如,这是 Adob​​e 证书的主题:

CN = Adobe Systems, Incorporated
OU = Acrobat Engineering
OU = Digital ID Class 3 - Microsoft Software Validation v2
O = Adobe Systems, Incorporated
L = San Jose
S = California
C = US

如何使用 CryptoAPI 读取 OU(和其他)属性的所有值?

【问题讨论】:

    标签: c++ windows winapi certificate cryptoapi


    【解决方案1】:

    好的,找到了解决方案。要使用的正确 API 是 CertNameToStr,如下所示:

        CertNameToStr(X509_ASN_ENCODING,
                      &pCertificate->pCertInfo->Subject,
                      CERT_X500_NAME_STR,
                      buf,
                      _countof(buf));
    

    它将返回一个字符串,例如:

    C=US, S=California, L=San Jose, O="Adobe Systems, Incorporated", OU=Digital ID Class 3 - Microsoft Software Validation v2, OU=Acrobat Engineering, CN="Adobe Systems, Incorporated"
    

    如果需要单独的属性值,则可以对其进行解析。

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2020-02-12
      • 2018-03-08
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      相关资源
      最近更新 更多