Sample code for 30+ languages & platforms
PureBasic

Example: Crypt2.ClearSigningCerts method

Demonstrates how to call the ClearSigningCerts method.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkCert.pb"
IncludeFile "CkCrypt2.pb"

Procedure ChilkatExample()

    success.i = 0

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

    success = 0

    ; Tell the crypt object to use 3 certificates.
    ; Do this by calling AddSigningCert for each certificate.

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

    ; ...
    ; Load the cert from a source such as a .pfx/.p12 file, smart card, USB token, Apple keychain, Windows certificate store, etc.
    ; ...
    CkCrypt2::ckAddSigningCert(crypt,cert1)

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

    ; ...
    CkCrypt2::ckAddSigningCert(crypt,cert2)

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

    ; ...
    CkCrypt2::ckAddSigningCert(crypt,cert3)

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

    ; ...

    success = CkCrypt2::ckOpaqueSignBd(crypt,bd)

    ; Let's say we now want to sign something else with different certs..
    ; First clear the signing certs.
    CkCrypt2::ckClearSigningCerts(crypt)

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

    ; ...
    CkCrypt2::ckAddSigningCert(crypt,cert4)

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

    ; ...
    CkCrypt2::ckAddSigningCert(crypt,cert5)

    ; ...
    ; ...

    ; Sign using cert4 and cert5.
    success = CkCrypt2::ckOpaqueSignBd(crypt,bd)


    CkCrypt2::ckDispose(crypt)
    CkCert::ckDispose(cert1)
    CkCert::ckDispose(cert2)
    CkCert::ckDispose(cert3)
    CkBinData::ckDispose(bd)
    CkCert::ckDispose(cert4)
    CkCert::ckDispose(cert5)


    ProcedureReturn
EndProcedure