Sample code for 30+ languages & platforms
Lianja

Sign a File to Create a .p7m File (using a PFX)

See more Encryption Examples

_LANGUAGE_ example to sign a file creating a .p7m file as output. The .p7m contains the signed contents of the original file. It can be verified and restored by calling VerifyP7M.

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 .p7m as output:
lcInFile = "/Users/chilkat/testData/pdf/sample.pdf"
lcOutputFile = "/Users/chilkat/testData/p7m/sample.pdf.p7m"
llSuccess = loCrypt.CreateP7M(lcInFile,lcOutputFile)
if (llSuccess = .F.) then
    ? loCrypt.LastErrorText
    release loCrypt
    release loCertStore
    release loJsonCN
    release loCert
    return
endif

// Verify and restore the original file:
llSuccess = loCrypt.SetVerifyCert(loCert)

lcInFile = lcOutputFile
lcOutputFile = "/Users/chilkat/testData/pdf/restored.pdf"

llSuccess = loCrypt.VerifyP7M(lcInFile,lcOutputFile)
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