C
C
Get the Server Certificate, Certificate Chain, and Root CA Certificate
See more HTTP Examples
Demonstrates how to get the HTTP server certificate, its certificate chain, and the root CA certificate.Chilkat C Downloads
#include <C_CkHttp.h>
#include <C_CkCert.h>
#include <C_CkCertChain.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkCert sslCert;
HCkCertChain certChain;
HCkCert cert;
int i;
int numCerts;
HCkCert caCert;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// We're getting the SSL/TLS certificate, so make sure to connect to the SSL/TLS port (443).
sslCert = CkCert_Create();
success = CkHttp_GetServerCert(http,"apple.com",443,sslCert);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkCert_Dispose(sslCert);
return;
}
certChain = CkCertChain_Create();
success = CkCert_BuildCertChain(sslCert,certChain);
if (success == FALSE) {
printf("%s\n",CkCert_lastErrorText(sslCert));
CkHttp_Dispose(http);
CkCert_Dispose(sslCert);
CkCertChain_Dispose(certChain);
return;
}
cert = CkCert_Create();
i = 0;
numCerts = CkCertChain_getNumCerts(certChain);
while (i < numCerts) {
CkCertChain_CertAt(certChain,i,cert);
printf("SubjectDN %d: %s\n",i,CkCert_subjectDN(cert));
printf("IssuerDN %d: %s\n",i,CkCert_issuerDN(cert));
i = i + 1;
}
// If the certificate chain reaches the root CA cert, then the last cert in the chain
// is the root CA cert.
if (CkCertChain_getReachesRoot(certChain) == TRUE) {
caCert = CkCert_Create();
CkCertChain_CertAt(certChain,numCerts - 1,caCert);
printf("CA Root Cert: %s\n",CkCert_subjectDN(caCert));
}
CkHttp_Dispose(http);
CkCert_Dispose(sslCert);
CkCertChain_Dispose(certChain);
CkCert_Dispose(cert);
CkCert_Dispose(caCert);
}