Visual FoxPro
Visual FoxPro
RSA Sign using Private Key of Certificate Type A3 (smart card / token)
See more RSA Examples
Demonstrates RSA signing data using the private key of a certificate type A3 (smart card, token).Note: This is a Windows-only example.
Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loCertStore
LOCAL lcThumbprint
LOCAL lnBReadOnly
LOCAL loJson
LOCAL loCert
LOCAL loRsa
LOCAL lnBUsePrivateKey
LOCAL loFac
LOCAL loInData
LOCAL loSignature
lnSuccess = 0
* First get the A3 certificate that was installed on the Windows system.
loCertStore = CreateObject('Chilkat.CertStore')
lcThumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"
* This is specific to Windows because it is opening the Windows Current-User certificate store.
lnBReadOnly = 1
lnSuccess = loCertStore.OpenCurrentUserStore(lnBReadOnly)
IF (lnSuccess <> 1) THEN
? loCertStore.LastErrorText
RELEASE loCertStore
CANCEL
ENDIF
* Find the certificate with the desired thumbprint
* (There are many ways to locate a certificate. This example chooses to find by thumbprint.)
loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("thumbprint",lcThumbprint)
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCertStore.FindCert(loJson,loCert)
IF (lnSuccess = 0) THEN
? "Failed to find the certificate."
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
CANCEL
ENDIF
? "Found: " + loCert.SubjectCN
loRsa = CreateObject('Chilkat.Rsa')
* Provide the cert's private key
lnBUsePrivateKey = 1
lnSuccess = loRsa.SetX509Cert(loCert,lnBUsePrivateKey)
IF (lnSuccess <> 1) THEN
? loRsa.LastErrorText
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
RELEASE loRsa
CANCEL
ENDIF
* Now we're ready to sign..
loFac = CreateObject('Chilkat.FileAccess')
* Get bytes to be signed..
loInData = loFac.ReadEntireFile("in.dat")
loSignature = loRsa.SignBytes(loInData,"SHA-256")
IF (loRsa.LastMethodSuccess <> 1) THEN
? loRsa.LastErrorText
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
RELEASE loRsa
RELEASE loFac
CANCEL
ENDIF
? "Signature created."
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
RELEASE loRsa
RELEASE loFac