Sample code for 30+ languages & platforms
Lianja

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

Lianja
llSuccess = .F.

// 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("CkCertStore")

// The 1st argument is the filename, the 2nd arg is the 
// PFX file's password:
llSuccess = loCertStore.LoadPfxFile("chilkat.pfx","test")
if (llSuccess = .F.) then
    ? loCertStore.LastErrorText
    release loCertStore
    return
endif

// Find the certificate by the subject common name:
loJsonCN = createobject("CkJsonObject")
loJsonCN.UpdateString("CN","cert common name")

loCert = createobject("CkCert")
llSuccess = loCertStore.FindCert(loJsonCN,loCert)
if (llSuccess = .F.) then
    ? loCertStore.LastErrorText
    release loCertStore
    release loJsonCN
    release loCert
    return
endif

loPrivKey = createobject("CkPrivateKey")
llSuccess = loCert.GetPrivateKey(loPrivKey)
if (llSuccess = .F.) then
    ? loCert.LastErrorText
    release loCertStore
    release loJsonCN
    release loCert
    release loPrivKey
    return
endif

loRsa = createobject("CkRsa")

llSuccess = loRsa.UsePrivateKey(loPrivKey)
if (llSuccess = .F.) then
    ? loRsa.LastErrorText
    release loCertStore
    release loJsonCN
    release loCert
    release loPrivKey
    release loRsa
    return
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