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

时间:2019-06-05 16:06:40

标签: delphi cryptoapi

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

  

C =美国,S =加利福尼亚,L =圣何塞,O =“ Adob​​e Systems,Incorporated”,OU =数字ID类别3-Microsoft软件验证v2,OU = Acrobat Engineering,CN =“ Adob​​e Systems,Incorporated”

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

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

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

但结果不令人满意:

  

C = US
  S =加利福尼亚
  L =圣何塞
  O =“ Adob​​e Systems
  公司成立”
  OU =数字ID类别3-Microsoft软件验证v2
  OU = Acrobat Engineering
  CN =“ Adob​​e Systems
  公司”

是否有任何API函数可以解析此主题字符串?

或者也许有一种与其他Delphi组件|类|函数一起解析的方法?

1 个答案:

答案 0 :(得分:3)

这是答案:

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

相关问题