Visual FoxPro
Visual FoxPro
RSA Sign String using Private Key of Certificate Type A3 (smart card / token)
See more RSA Examples
Demonstrates RSA signing a string 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 lcSigBase64
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
* Return the RSA signature in base64 encoded form.
loRsa.EncodingMode = "base64"
* Sign the utf-8 byte representation of the string.
loRsa.Charset = "utf-8"
* You can also choose other hash algorithms, such as SHA-1.
lcSigBase64 = loRsa.SignStringENC("text to sign","SHA-256")
IF (loRsa.LastMethodSuccess <> 1) THEN
? loRsa.LastErrorText
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
RELEASE loRsa
CANCEL
ENDIF
? "Base64 signature: " + lcSigBase64
RELEASE loCertStore
RELEASE loJson
RELEASE loCert
RELEASE loRsa