PureBasic
PureBasic
Load a CSR and Get the SANs (Subject Alternative Names)
See more CSR Examples
Demonstrates how to load a Certificate Signing Request (CSR) and get the Subject Alternative Names (if any).Note: This example requires Chilkat v9.5.0.91 or greater.
Chilkat PureBasic Downloads
IncludeFile "CkStringTable.pb"
IncludeFile "CkCsr.pb"
IncludeFile "CkFileAccess.pb"
Procedure ChilkatExample()
success.i = 0
; Note: Requires Chilkat v9.5.0.91 or greater.
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
csr.i = CkCsr::ckCreate()
If csr.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load a CSR PEM file. The file should contain content that looks like this:
;
; -----BEGIN CERTIFICATE REQUEST-----
; MIIDnzCCAocCAQAwgZ4xFDASBgNVBAMMC2V4YW1wbGUuY29tMRQwEgYDVQQHDAtM
; b3MgQW5nZWxlczETMBEGA1UECAwKQ2FsaWZvcm5pYTEUMBIGA1UECgwLRXhhbXBs
; ZSBJbmMxFDASBgNVBAsMC1NTTCBTdXBwb3J0MSIwIAYJKoZIhvcNAQkBFhNleGFt
; cGxlQGV4YW1wbGUuY29tMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQAD
; ggEPADCCAQoCggEBALhIT/q7y1xwpYaR0Coplktwn7RGaJpEBCgbJWxOVPTGL540
; erlhc6MrSEr6fo/HNtAbn6MNWm5F0MwjEU7H1Jxc7DYav+ps3hyhGaK9jalE99Sm
; yFOzKMLDPyWTPpxfT4QBO4rpWxMT2lgixDkZlaNqmC6pUGXArfH+H1F3C0gtH4ZU
; XN/Ipyk6r6ozWnJvIefdMe1JmeMD3RSoVcXd9bNWSpiD4uJnV+2pewkkNzhcGzBH
; MGi4ZjIbpPiYLlri/79fPb6u7wYkYLzCWRKzq6EaJkqY6OQgE33SC1GQKjC/fFRx
; wogub1s9cRjfL6vdqWbTJ5xhOkPeBO3UzHBHIksCAwEAAaCBujCBtwYJKoZIhvcN
; AQkOMYGpMIGmMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsG
; AQUFBwMBBggrBgEFBQcDAjBtBgNVHREEZjBkggtleGFtcGxlLmNvbYIPd3d3LmV4
; YW1wbGUuY29tgg9mdHAuZXhhbXBsZS5jb22CD3N2bi5leGFtcGxlLmNvbYIQc210
; cC5leGFtcGxlLmNvbYIQaW1hcC5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOC
; AQEAsIEDMlZViEVtuQWpfa6vUl5RfqQrop+hh9l4UmEOnERLEzyVO+9Kn7jNxyOR
; Gg7O9H4BYTfet6YwfpawbnQ1HBexduRZaUnET8RiYgKch0vWr/HbP7jvc23XUz2P
; NOAiet/tyTU6U5xJn0H4q1VFIbHjntpBSL+n+aiv8glIUepG8BwTu+vBe2/kVzKG
; ro2tudhbpEJYOwurlHCoubhCah9ryIkDeYEnycsrB6VnaxeGK0/5S2JBQo22/F9s
; T+q0Gee936ISvypLwNoIX+YFAjw2KnqucUM3RKHAAheJin5WNIQXdHHKGsImapun
; VqmPwLN6Kgm+kFVS0H5eyULSnA==
; -----END CERTIFICATE REQUEST-----
fac.i = CkFileAccess::ckCreate()
If fac.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
csrPem.s = CkFileAccess::ckReadEntireTextFile(fac,"qa_data/csr/myCsr.pem","utf-8")
success = CkCsr::ckLoadCsrPem(csr,csrPem)
If success <> 1
Debug CkCsr::ckLastErrorText(csr)
CkCsr::ckDispose(csr)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndIf
; Get the SANs
st.i = CkStringTable::ckCreate()
If st.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCsr::ckGetSans(csr,st)
If success <> 1
Debug CkCsr::ckLastErrorText(csr)
CkCsr::ckDispose(csr)
CkFileAccess::ckDispose(fac)
CkStringTable::ckDispose(st)
ProcedureReturn
EndIf
i.i = 0
numSans.i = CkStringTable::ckCount(st)
While i < numSans
Debug CkStringTable::ckStringAt(st,i)
i = i + 1
Wend
CkCsr::ckDispose(csr)
CkFileAccess::ckDispose(fac)
CkStringTable::ckDispose(st)
ProcedureReturn
EndProcedure