Sample code for 30+ languages & platforms
Visual FoxPro

RSA Signature with Certificate's Private Key from PFX

See more RSA Examples

Demonstrates how to use a certificate's private key from a PFX file to create an RSA signature.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loCertStore
LOCAL loJsonCN
LOCAL loCert
LOCAL loPrivKey
LOCAL loRsa
LOCAL lcStrData
LOCAL lcHexSig

lnSuccess = 0

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

* Create an instance of a certificate store object, load a PFX file,
* locate the certificate we need, and use it for signing.
* (a PFX file may contain more than one certificate.)
loCertStore = CreateObject('Chilkat.CertStore')

* The 1st argument is the filename, the 2nd arg is the 
* PFX file's password:
lnSuccess = loCertStore.LoadPfxFile("chilkat.pfx","test")
IF (lnSuccess = 0) THEN
    ? loCertStore.LastErrorText
    RELEASE loCertStore
    CANCEL
ENDIF

* Find the certificate by the subject common name:
loJsonCN = CreateObject('Chilkat.JsonObject')
loJsonCN.UpdateString("CN","cert common name")

loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCertStore.FindCert(loJsonCN,loCert)
IF (lnSuccess = 0) THEN
    ? loCertStore.LastErrorText
    RELEASE loCertStore
    RELEASE loJsonCN
    RELEASE loCert
    CANCEL
ENDIF

loPrivKey = CreateObject('Chilkat.PrivateKey')
lnSuccess = loCert.GetPrivateKey(loPrivKey)
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loCertStore
    RELEASE loJsonCN
    RELEASE loCert
    RELEASE loPrivKey
    CANCEL
ENDIF

loRsa = CreateObject('Chilkat.Rsa')

lnSuccess = loRsa.UsePrivateKey(loPrivKey)
IF (lnSuccess = 0) THEN
    ? loRsa.LastErrorText
    RELEASE loCertStore
    RELEASE loJsonCN
    RELEASE loCert
    RELEASE loPrivKey
    RELEASE loRsa
    CANCEL
ENDIF

* Encode the signature as a hex string
loRsa.EncodingMode = "hex"

lcStrData = "This is the string to be signed."

* Sign the string using the sha-1 hash algorithm.
* Other valid choices are "sha-256", "md2" and "md5".
lcHexSig = loRsa.SignStringENC(lcStrData,"sha-1")

? lcHexSig

? "Success!"

RELEASE loCertStore
RELEASE loJsonCN
RELEASE loCert
RELEASE loPrivKey
RELEASE loRsa