Sample code for 30+ languages & platforms
PowerBuilder

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_CertStore
string ls_Thumbprint
integer li_BReadOnly
oleobject loo_Json
oleobject loo_Cert
oleobject loo_CertStorePem

li_Success = 0

loo_CertStore = create oleobject
li_rc = loo_CertStore.ConnectToNewObject("Chilkat.CertStore")
if li_rc < 0 then
    destroy loo_CertStore
    MessageBox("Error","Connecting to COM object failed")
    return
end if

ls_Thumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"

// This opens the Current User certificate store on Windows,
// On MacOS and iOS it opens the default Keychain.
li_BReadOnly = 1
li_Success = loo_CertStore.OpenCurrentUserStore(li_BReadOnly)
if li_Success = 0 then
    Write-Debug loo_CertStore.LastErrorText
    destroy loo_CertStore
    return
end if

// Find the certificate having a specific SHA1 thumbprint.
loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")

loo_Json.UpdateString("thumbprint",ls_Thumbprint)

loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")

li_Success = loo_CertStore.FindCert(loo_Json,loo_Cert)
if li_Success = 0 then
    Write-Debug "Failed to find the certificate."
    destroy loo_CertStore
    destroy loo_Json
    destroy loo_Cert
    return
end if

Write-Debug "Found: " + loo_Cert.SubjectCN

// -------------------------------------------------------------------------------------
// Alternatively, one could load a certificate store object with certs from a PEM file,
// and do the same thing..
loo_CertStorePem = create oleobject
li_rc = loo_CertStorePem.ConnectToNewObject("Chilkat.CertStore")

li_Success = loo_CertStorePem.LoadPemFile("pemFiles/certificates.pem")
if li_Success = 0 then
    Write-Debug loo_CertStorePem.LastErrorText
    destroy loo_CertStore
    destroy loo_Json
    destroy loo_Cert
    destroy loo_CertStorePem
    return
end if

li_Success = loo_CertStore.FindCert(loo_Json,loo_Cert)
if li_Success = 0 then
    Write-Debug "Failed to find the certificate."
    destroy loo_CertStore
    destroy loo_Json
    destroy loo_Cert
    destroy loo_CertStorePem
    return
end if

Write-Debug "Found: " + loo_Cert.SubjectCN


destroy loo_CertStore
destroy loo_Json
destroy loo_Cert
destroy loo_CertStorePem