PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkCertStore.pb"
IncludeFile "CkCert.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
certStore.i = CkCertStore::ckCreate()
If certStore.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
thumbprint.s = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"
; This opens the Current User certificate store on Windows,
; On MacOS and iOS it opens the default Keychain.
bReadOnly.i = 1
success = CkCertStore::ckOpenCurrentUserStore(certStore,bReadOnly)
If success = 0
Debug CkCertStore::ckLastErrorText(certStore)
CkCertStore::ckDispose(certStore)
ProcedureReturn
EndIf
; Find the certificate having a specific SHA1 thumbprint.
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(json,"thumbprint",thumbprint)
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCertStore::ckFindCert(certStore,json,cert)
If success = 0
Debug "Failed to find the certificate."
CkCertStore::ckDispose(certStore)
CkJsonObject::ckDispose(json)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
Debug "Found: " + CkCert::ckSubjectCN(cert)
; -------------------------------------------------------------------------------------
; Alternatively, one could load a certificate store object with certs from a PEM file,
; and do the same thing..
certStorePem.i = CkCertStore::ckCreate()
If certStorePem.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCertStore::ckLoadPemFile(certStorePem,"pemFiles/certificates.pem")
If success = 0
Debug CkCertStore::ckLastErrorText(certStorePem)
CkCertStore::ckDispose(certStore)
CkJsonObject::ckDispose(json)
CkCert::ckDispose(cert)
CkCertStore::ckDispose(certStorePem)
ProcedureReturn
EndIf
success = CkCertStore::ckFindCert(certStore,json,cert)
If success = 0
Debug "Failed to find the certificate."
CkCertStore::ckDispose(certStore)
CkJsonObject::ckDispose(json)
CkCert::ckDispose(cert)
CkCertStore::ckDispose(certStorePem)
ProcedureReturn
EndIf
Debug "Found: " + CkCert::ckSubjectCN(cert)
CkCertStore::ckDispose(certStore)
CkJsonObject::ckDispose(json)
CkCert::ckDispose(cert)
CkCertStore::ckDispose(certStorePem)
ProcedureReturn
EndProcedure