Visual FoxPro
Visual FoxPro
Encrypt File to PKCS7 .p7m
See more Encryption Examples
_LANGUAGE_ example to public-key encrypt a file creating a PKCS#7 .p7m file as output. Also demonstrates how to decrypt the .p7m to recover the original file.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loCrypt
LOCAL loEncryptCert
LOCAL lcInFile
LOCAL lcOutFile
LOCAL loDecrypt
LOCAL lcPfxFilename
LOCAL lcPfxPassword
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loCrypt = CreateObject('Chilkat.Crypt2')
* Indicate the public-key encryption is to be used.
* Do this by setting the encryption algorithm equal
* to "PKI" (an acroynm for public-key infrastructure).
loCrypt.CryptAlgorithm = "PKI"
* Indicate the inner symmetric encryption algorithm to be used.
* possible values are "aes", "des", "3des", and "rc2".
* For this example, we'll use 256-bit AES encryption.
loCrypt.Pkcs7CryptAlg = "aes"
loCrypt.KeyLength = 256
* To encrypt, only a certificate w/ public key is needed.
* (The certificate w/ private key is required for decryption.)
* The LoadFromFile method can load virtually any certificate format:
* 1. DER encoded binary X.509 (.CER)
* 2. Base-64 encoded X.509 (.CER)
* 3. Cryptographic Message Syntax Standard - PKCS #7 Certificates (.P7B)
* 4. PEM format
loEncryptCert = CreateObject('Chilkat.Cert')
lnSuccess = loEncryptCert.LoadFromFile("/Users/chilkat/testData/cer/acme.cer")
IF (lnSuccess <> 1) THEN
? loEncryptCert.LastErrorText
RELEASE loCrypt
RELEASE loEncryptCert
CANCEL
ENDIF
* Tell the crypt object to use the certificate for encrypting:
loCrypt.AddEncryptCert(loEncryptCert)
* Encrypt a file, producing a .p7m as output.
* The input file is unchanged, the output .p7m contains the encrypted
* contents of the input file.
lcInFile = "/Users/chilkat/testData/pdf/sample.pdf"
lcOutFile = "/Users/chilkat/testData/p7m/sample.pdf.p7m"
lnSuccess = loCrypt.CkEncryptFile(lcInFile,lcOutFile)
IF (lnSuccess <> 1) THEN
? loCrypt.LastErrorText
RELEASE loCrypt
RELEASE loEncryptCert
CANCEL
ENDIF
* For demonstration purposes, a different instance of the object will be used
* for decryption.
loDecrypt = CreateObject('Chilkat.Crypt2')
* To decrypt, the certificate w/ private key is required. A PFX (also known
* as PKCS#12) is a common secure container for certs and private keys.
lcPfxFilename = "/Users/chilkat/testData/pfx/acme.pfx"
lcPfxPassword = "secret"
* Tell the component to look in the PFX file for certs and private keys.
lnSuccess = loDecrypt.AddPfxSourceFile(lcPfxFilename,lcPfxPassword)
IF (lnSuccess <> 1) THEN
? loDecrypt.LastErrorText
RELEASE loCrypt
RELEASE loEncryptCert
RELEASE loDecrypt
CANCEL
ENDIF
* Tell the decrypt object that PKI (public key encryption) is to be used
* for decryptiong.
loDecrypt.CryptAlgorithm = "PKI"
* There is no need to set the Pkcs7Alg or KeyLength because this information
* is contained within the .p7m
* Decrypt the .p7m
lcInFile = "/Users/chilkat/testData/p7m/sample.pdf.p7m"
lcOutFile = "/Users/chilkat/testData/pdf/recovered.pdf"
lnSuccess = loDecrypt.CkDecryptFile(lcInFile,lcOutFile)
IF (lnSuccess = 0) THEN
? loDecrypt.LastErrorText
RELEASE loCrypt
RELEASE loEncryptCert
RELEASE loDecrypt
CANCEL
ENDIF
? "Success!"
RELEASE loCrypt
RELEASE loEncryptCert
RELEASE loDecrypt