Lianja
Lianja
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 Lianja Downloads
llSuccess = .F.
// First get the A3 certificate that was installed on the Windows system.
loCertStore = createobject("CkCertStore")
lcThumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"
// This is specific to Windows because it is opening the Windows Current-User certificate store.
llBReadOnly = .T.
llSuccess = loCertStore.OpenCurrentUserStore(llBReadOnly)
if (llSuccess <> .T.) then
? loCertStore.LastErrorText
release loCertStore
return
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("CkJsonObject")
loJson.UpdateString("thumbprint",lcThumbprint)
loCert = createobject("CkCert")
llSuccess = loCertStore.FindCert(loJson,loCert)
if (llSuccess = .F.) then
? "Failed to find the certificate."
release loCertStore
release loJson
release loCert
return
endif
? "Found: " + loCert.SubjectCN
loRsa = createobject("CkRsa")
// Provide the cert's private key
llBUsePrivateKey = .T.
llSuccess = loRsa.SetX509Cert(loCert,llBUsePrivateKey)
if (llSuccess <> .T.) then
? loRsa.LastErrorText
release loCertStore
release loJson
release loCert
release loRsa
return
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 <> .T.) then
? loRsa.LastErrorText
release loCertStore
release loJson
release loCert
release loRsa
return
endif
? "Base64 signature: " + lcSigBase64
release loCertStore
release loJson
release loCert
release loRsa