Sample code for 30+ languages & platforms
PowerBuilder

CAdES BES Detached Signature

See more Encryption Examples

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

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Crypt
string ls_PfxPath
string ls_PfxPassword
oleobject loo_Cert
string ls_InFile
string ls_SigFile

li_Success = 0

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

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

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

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

li_Success = loo_Cert.LoadPfxFile(ls_PfxPath,ls_PfxPassword)
if li_Success <> 1 then
    Write-Debug loo_Cert.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

// Tell the crypt component to use this cert.
li_Success = loo_Crypt.SetSigningCert(loo_Cert)
if li_Success <> 1 then
    Write-Debug loo_Crypt.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

// The CadesEnabled property applies to all methods that create PKCS7 signatures. 
// To create a CAdES-BES signature, set this property equal to true. 
loo_Crypt.CadesEnabled = 1

// We can sign any type of file, creating a .p7s as output:
ls_InFile = "/Users/chilkat/testData/pdf/sample.pdf"
ls_SigFile = "/Users/chilkat/testData/p7s/sample.p7s"

// Create the detached CAdES-BES signature:
li_Success = loo_Crypt.CreateP7S(ls_InFile,ls_SigFile)
if li_Success = 0 then
    Write-Debug loo_Crypt.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

li_Success = loo_Crypt.VerifyP7S(ls_InFile,ls_SigFile)
if li_Success = 0 then
    Write-Debug loo_Crypt.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

Write-Debug "Success!"


destroy loo_Crypt
destroy loo_Cert