Sample code for 30+ languages & platforms
Lianja

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 Lianja Downloads

Lianja
llSuccess = .F.

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

loCrypt = createobject("CkCrypt2")

// Use a digital certificate and private key from a PFX file (.pfx or .p12).
lcSigningCertSubject = "Acme Inc"
lcPfxFilename = "/Users/chilkat/testData/pfx/acme.pfx"
lcPfxPassword = "test123"

loCertStore = createobject("CkCertStore")
llSuccess = loCertStore.LoadPfxFile(lcPfxFilename,lcPfxPassword)
if (llSuccess <> .T.) then
    ? loCertStore.LastErrorText
    release loCrypt
    release loCertStore
    return
endif

loJsonCN = createobject("CkJsonObject")
loJsonCN.UpdateString("CN",lcSigningCertSubject)

loCert = createobject("CkCert")
llSuccess = loCertStore.FindCert(loJsonCN,loCert)
if (llSuccess = .F.) then
    ? "Failed to find certificate by subject common name."
    release loCrypt
    release loCertStore
    release loJsonCN
    release loCert
    return
endif

// Tell the crypt component to use this cert.
llSuccess = loCrypt.SetSigningCert(loCert)

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

llSuccess = loCrypt.CreateP7S(lcInFile,lcSigFile)
if (llSuccess = .F.) then
    ? loCrypt.LastErrorText
    release loCrypt
    release loCertStore
    release loJsonCN
    release loCert
    return
endif

llSuccess = loCrypt.VerifyP7S(lcInFile,lcSigFile)
if (llSuccess = .F.) then
    ? loCrypt.LastErrorText
    release loCrypt
    release loCertStore
    release loJsonCN
    release loCert
    return
endif

? "Success!"


release loCrypt
release loCertStore
release loJsonCN
release loCert