delphi - 如何解析证书主题字符串?

标签 delphi cryptoapi

使用CertNameToStr函数您可以获得证书的主题字符串:

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"

我的问题是,如何解析它以获得名称-值对数组?

我尝试使用 SplitString() 函数,并以 , 字符作为分隔符:

  StrArr := SplitString(edtSubjectStr.Text, ',');
  for I := Low(StrArr) to High(StrArr) do
    Memo1.Lines.Append(Trim(StrArr[i]));

但结果并不理想:

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"

有没有API函数可以解析这个主题字符串?

或者也许有一种方法可以用其他一些 Delphi 组件|类|函数来解析它?

最佳答案

答案如下:

只需使用 CERT_X500_NAME_STR 或 CERT_NAME_STR_CRLF_FLAG 作为 CertNameToStr() 函数的 dwStrType 属性的值,您就会得到一个 CRLF 分隔字符串!

关于delphi - 如何解析证书主题字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464228/

相关文章:

delphi - 关键部分能帮助解决这个问题吗?

delphi - 如何通过 CryptoAPI 将证书从 Windows 证书存储导出为 Base64 字符串

c++ - 使用 WinCrypt/CryptoAPI 验证基于 OpenPGP 的 RSA 签名

c# - 如何以编程方式更新本地机器上的颠覆密码?

使用加密 API 计算哈希值

delphi - 我什么时候应该使用 "try" block ,我应该使用哪种?

delphi - 即使我使用 try..except 也会出现异步套接字错误 10049

c# - 仅在Windows 2003 Server上指定了无效的算法

c++ - 从 Delphi "Access Violation"正确调用 DLL 中的 C++ 函数

delphi - 如何绘制图像的一部分?