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