Sample code for 30+ languages & platforms
PureBasic

Find a Certificate in the "Other People" Windows Certificate Store

See more Certificates Examples

Demonstrates how to open the "Current User --> Other People" Windows certificate store, and locates a certificate matching an email address.

Chilkat PureBasic Downloads

PureBasic
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

    ; The "AddressBook" is the "Other People" certificate store as shown in certmgr.msc
    readOnly.i = 1
    success = CkCertStore::ckOpenWindowsStore(certStore,"CurrentUser","AddressBook",readOnly)
    If success <> 1
        Debug CkCertStore::ckLastErrorText(certStore)
        CkCertStore::ckDispose(certStore)
        ProcedureReturn
    EndIf

    ; Find the certificate for the email address:
    jsonE.i = CkJsonObject::ckCreate()
    If jsonE.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(jsonE,"email","joe@example.com")

    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkCertStore::ckFindCert(certStore,jsonE,cert)
    If success = 0
        Debug CkCertStore::ckLastErrorText(certStore)
        CkCertStore::ckDispose(certStore)
        CkJsonObject::ckDispose(jsonE)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    Debug "Found certificate: " + CkCert::ckSubjectDN(cert)


    CkCertStore::ckDispose(certStore)
    CkJsonObject::ckDispose(jsonE)
    CkCert::ckDispose(cert)


    ProcedureReturn
EndProcedure