Sample code for 30+ languages & platforms
PureBasic

Example: Crypt2.ClearEncryptCerts method

Demonstrates how to call the ClearEncryptCerts 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

    ; Tell the crypt object to use 3 certificates.
    ; Do this by calling AddEncryptCert 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::ckAddEncryptCert(crypt,cert1)

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

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

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

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

    ; Params for public-key encryption to create PKCS7 enveloped-data
    CkCrypt2::setCkCryptAlgorithm(crypt, "pki")
    CkCrypt2::setCkPkcs7CryptAlg(crypt, "aes")
    CkCrypt2::setCkKeyLength(crypt, 256)
    CkCrypt2::setCkOaepHash(crypt, "sha256")
    CkCrypt2::setCkOaepPadding(crypt, 1)

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

    ; ...
    success = CkCrypt2::ckEncryptBd(crypt,bd)

    ; Let's say we now want to encrypt something else with different certs..
    ; First clear the encryption certs.
    CkCrypt2::ckClearEncryptCerts(crypt)

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

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

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

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

    ; ...
    ; ...

    ; Encrypt using cert4 and cert5.
    success = CkCrypt2::ckEncryptBd(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