如何解析证书主题字符串?
How to parse certificate Subject string?
使用 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 or CERT_NAME_STR_CRLF_FLAG
作为 CertNameToStr()
函数的 dwStrType
属性 的值,您将得到一个 CRLF
分隔的字符串!
使用 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 or CERT_NAME_STR_CRLF_FLAG
作为 CertNameToStr()
函数的 dwStrType
属性 的值,您将得到一个 CRLF
分隔的字符串!