Unicode C
Unicode C
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 Unicode C Downloads
#include <C_CkCsrW.h>
#include <C_CkFileAccessW.h>
#include <C_CkStringTableW.h>
void ChilkatSample(void)
{
BOOL success;
HCkCsrW csr;
HCkFileAccessW fac;
const wchar_t *csrPem;
HCkStringTableW st;
int i;
int numSans;
success = FALSE;
// 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 = CkCsrW_Create();
// 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 = CkFileAccessW_Create();
csrPem = CkFileAccessW_readEntireTextFile(fac,L"qa_data/csr/myCsr.pem",L"utf-8");
success = CkCsrW_LoadCsrPem(csr,csrPem);
if (success != TRUE) {
wprintf(L"%s\n",CkCsrW_lastErrorText(csr));
CkCsrW_Dispose(csr);
CkFileAccessW_Dispose(fac);
return;
}
// Get the SANs
st = CkStringTableW_Create();
success = CkCsrW_GetSans(csr,st);
if (success != TRUE) {
wprintf(L"%s\n",CkCsrW_lastErrorText(csr));
CkCsrW_Dispose(csr);
CkFileAccessW_Dispose(fac);
CkStringTableW_Dispose(st);
return;
}
i = 0;
numSans = CkStringTableW_getCount(st);
while (i < numSans) {
wprintf(L"%s\n",CkStringTableW_stringAt(st,i));
i = i + 1;
}
CkCsrW_Dispose(csr);
CkFileAccessW_Dispose(fac);
CkStringTableW_Dispose(st);
}