Unicode C
Unicode C
Find a Certificate by it's SHA-1 Thumbprint
See more Cert Store Examples
Finds a certificate by it's SHA-1 hex thumbprint.Note: This example requires Chilkat v10.1.2 or later.
Chilkat Unicode C Downloads
#include <C_CkCertStoreW.h>
#include <C_CkJsonObjectW.h>
#include <C_CkCertW.h>
void ChilkatSample(void)
{
BOOL success;
HCkCertStoreW certStore;
const wchar_t *thumbprint;
BOOL bReadOnly;
HCkJsonObjectW json;
HCkCertW cert;
HCkCertStoreW certStorePem;
success = FALSE;
certStore = CkCertStoreW_Create();
thumbprint = L"12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2";
// This opens the Current User certificate store on Windows,
// On MacOS and iOS it opens the default Keychain.
bReadOnly = TRUE;
success = CkCertStoreW_OpenCurrentUserStore(certStore,bReadOnly);
if (success == FALSE) {
wprintf(L"%s\n",CkCertStoreW_lastErrorText(certStore));
CkCertStoreW_Dispose(certStore);
return;
}
// Find the certificate having a specific SHA1 thumbprint.
json = CkJsonObjectW_Create();
CkJsonObjectW_UpdateString(json,L"thumbprint",thumbprint);
cert = CkCertW_Create();
success = CkCertStoreW_FindCert(certStore,json,cert);
if (success == FALSE) {
wprintf(L"Failed to find the certificate.\n");
CkCertStoreW_Dispose(certStore);
CkJsonObjectW_Dispose(json);
CkCertW_Dispose(cert);
return;
}
wprintf(L"Found: %s\n",CkCertW_subjectCN(cert));
// -------------------------------------------------------------------------------------
// Alternatively, one could load a certificate store object with certs from a PEM file,
// and do the same thing..
certStorePem = CkCertStoreW_Create();
success = CkCertStoreW_LoadPemFile(certStorePem,L"pemFiles/certificates.pem");
if (success == FALSE) {
wprintf(L"%s\n",CkCertStoreW_lastErrorText(certStorePem));
CkCertStoreW_Dispose(certStore);
CkJsonObjectW_Dispose(json);
CkCertW_Dispose(cert);
CkCertStoreW_Dispose(certStorePem);
return;
}
success = CkCertStoreW_FindCert(certStore,json,cert);
if (success == FALSE) {
wprintf(L"Failed to find the certificate.\n");
CkCertStoreW_Dispose(certStore);
CkJsonObjectW_Dispose(json);
CkCertW_Dispose(cert);
CkCertStoreW_Dispose(certStorePem);
return;
}
wprintf(L"Found: %s\n",CkCertW_subjectCN(cert));
CkCertStoreW_Dispose(certStore);
CkJsonObjectW_Dispose(json);
CkCertW_Dispose(cert);
CkCertStoreW_Dispose(certStorePem);
}