Sample code for 30+ languages & platforms
PowerBuilder

Sign a File to Create a .p7s (Detached Signature)

See more Encryption Examples

_LANGUAGE_ example to create a detached signature file (.p7s) for any type file. The signature can be verified by calling VerifyP7S and passing the original filename and the .p7s filename.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Crypt
string ls_SigningCertSubject
string ls_PfxFilename
string ls_PfxPassword
oleobject loo_CertStore
oleobject loo_JsonCN
oleobject loo_Cert
string ls_InFile
string ls_SigFile

li_Success = 0

// This example requires 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_SigningCertSubject = "Acme Inc"
ls_PfxFilename = "/Users/chilkat/testData/pfx/acme.pfx"
ls_PfxPassword = "test123"

loo_CertStore = create oleobject
li_rc = loo_CertStore.ConnectToNewObject("Chilkat.CertStore")

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

loo_JsonCN = create oleobject
li_rc = loo_JsonCN.ConnectToNewObject("Chilkat.JsonObject")

loo_JsonCN.UpdateString("CN",ls_SigningCertSubject)

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

li_Success = loo_CertStore.FindCert(loo_JsonCN,loo_Cert)
if li_Success = 0 then
    Write-Debug "Failed to find certificate by subject common name."
    destroy loo_Crypt
    destroy loo_CertStore
    destroy loo_JsonCN
    destroy loo_Cert
    return
end if

// Tell the crypt component to use this cert.
li_Success = loo_Crypt.SetSigningCert(loo_Cert)

// 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"

li_Success = loo_Crypt.CreateP7S(ls_InFile,ls_SigFile)
if li_Success = 0 then
    Write-Debug loo_Crypt.LastErrorText
    destroy loo_Crypt
    destroy loo_CertStore
    destroy loo_JsonCN
    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_CertStore
    destroy loo_JsonCN
    destroy loo_Cert
    return
end if

Write-Debug "Success!"


destroy loo_Crypt
destroy loo_CertStore
destroy loo_JsonCN
destroy loo_Cert