Sample code for 30+ languages & platforms
PureBasic

CAdES BES Detached Signature

See more Encryption Examples

Demonstrates how to create a CAdES BES detached signature file (.p7s).

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

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

    ; Use a digital certificate and private key from a PFX file (.pfx or .p12).
    pfxPath.s = "/Users/chilkat/testData/pfx/acme.pfx"
    pfxPassword.s = "test123"

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

    success = CkCert::ckLoadPfxFile(cert,pfxPath,pfxPassword)
    If success <> 1
        Debug CkCert::ckLastErrorText(cert)
        CkCrypt2::ckDispose(crypt)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    ; Tell the crypt component to use this cert.
    success = CkCrypt2::ckSetSigningCert(crypt,cert)
    If success <> 1
        Debug CkCrypt2::ckLastErrorText(crypt)
        CkCrypt2::ckDispose(crypt)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    ; The CadesEnabled property applies to all methods that create PKCS7 signatures. 
    ; To create a CAdES-BES signature, set this property equal to true. 
    CkCrypt2::setCkCadesEnabled(crypt, 1)

    ; We can sign any type of file, creating a .p7s as output:
    inFile.s = "/Users/chilkat/testData/pdf/sample.pdf"
    sigFile.s = "/Users/chilkat/testData/p7s/sample.p7s"

    ; Create the detached CAdES-BES signature:
    success = CkCrypt2::ckCreateP7S(crypt,inFile,sigFile)
    If success = 0
        Debug CkCrypt2::ckLastErrorText(crypt)
        CkCrypt2::ckDispose(crypt)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    success = CkCrypt2::ckVerifyP7S(crypt,inFile,sigFile)
    If success = 0
        Debug CkCrypt2::ckLastErrorText(crypt)
        CkCrypt2::ckDispose(crypt)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    Debug "Success!"


    CkCrypt2::ckDispose(crypt)
    CkCert::ckDispose(cert)


    ProcedureReturn
EndProcedure