PureBasic
PureBasic
Subject Alternative Name
See more Certificates Examples
Demonstrates the usage of the SubjectAlternativeName property to get the certificate SAN (subject alternative name) as XML.Chilkat PureBasic Downloads
IncludeFile "CkXml.pb"
IncludeFile "CkCert.pb"
Procedure ChilkatExample()
success.i = 0
; Note: Not all certificates contain a Subject Alternative Name.
; If it does not, the SubjectAlternativeName property will contain the empty string.
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert,"qa_data/certs/testIcpBrasil.cer")
If success = 0
Debug CkCert::ckLastErrorText(cert)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
subjectAltNameXml.s = CkCert::ckSubjectAlternativeName(cert)
Debug subjectAltNameXml
; Here's a sample of the subjectAltNameXml:
; <?xml version="1.0" encoding="utf-8"?>
; <SubjectAltName>
; <name type="oid" oid="2.16.76.1.3.4">...</name>
; <name type="oid" oid="2.16.76.1.3.2">...</name>
; <name type="oid" oid="2.16.76.1.3.3">...</name>
; <name type="oid" oid="2.16.76.1.3.7">...</name>
; <rfc822Name>...</rfc822Name>
; </SubjectAltName>
; The XML can be parsed like this:
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckLoadXml(xml,subjectAltNameXml)
oid.s
name.s
i.i = 0
count_i.i = CkXml::ckNumChildrenHavingTag(xml,"name")
While i < count_i
CkXml::setCkI(xml, i)
oid = CkXml::ckChilkatPath(xml,"name[i]|(oid)")
name = CkXml::ckGetChildContent(xml,"name[i]")
i = i + 1
Wend
rfc822Name.s = CkXml::ckGetChildContent(xml,"rfc822Name")
CkCert::ckDispose(cert)
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure