Sample code for 30+ languages & platforms
Visual FoxPro

RSA Encrypt Randomly Generated AES Key

See more RSA Examples

Demonstrates how to RSA encrypt a randomly generated AES key.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loPrng
LOCAL loBdAesKey
LOCAL loCert
LOCAL loPubKey
LOCAL loRsa
LOCAL lcEncryptedAesKey

lnSuccess = 0

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

* First generate a 256-bit AES key (32 bytes).
loPrng = CreateObject('Chilkat.Prng')
loBdAesKey = CreateObject('Chilkat.BinData')
lnSuccess = loPrng.GenRandomBd(32,loBdAesKey)

* Use a public key from a certificate for RSA encryption.
loCert = CreateObject('Chilkat.Cert')

lnSuccess = loCert.LoadFromFile("qa_data/pem/mf_public_rsa.pem")
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loPrng
    RELEASE loBdAesKey
    RELEASE loCert
    CANCEL
ENDIF

loPubKey = CreateObject('Chilkat.PublicKey')
loCert.GetPublicKey(loPubKey)

loRsa = CreateObject('Chilkat.Rsa')
lnSuccess = loRsa.UsePublicKey(loPubKey)
IF (lnSuccess = 0) THEN
    ? loRsa.LastErrorText
    RELEASE loPrng
    RELEASE loBdAesKey
    RELEASE loCert
    RELEASE loPubKey
    RELEASE loRsa
    CANCEL
ENDIF

* RSA encrypt our 32-byte AES key.
* The contents of bdAesKey are replaced with result of the RSA encryption.
lnSuccess = loRsa.EncryptBd(loBdAesKey,0)
IF (lnSuccess = 0) THEN
    ? loRsa.LastErrorText
    RELEASE loPrng
    RELEASE loBdAesKey
    RELEASE loCert
    RELEASE loPubKey
    RELEASE loRsa
    CANCEL
ENDIF

* Return the result as a base64 string
lcEncryptedAesKey = loBdAesKey.GetEncoded("base64")

? "encrypted AES key = " + lcEncryptedAesKey

RELEASE loPrng
RELEASE loBdAesKey
RELEASE loCert
RELEASE loPubKey
RELEASE loRsa