Sample code for 30+ languages & platforms
B4X Requires Chilkat v10.1.2+

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

B4X
Dim success As Boolean = False

'  First get the A3 certificate that was installed on the Windows system.
Dim certStore As ChilkatCertStore
certStore.Initialize

Dim thumbprint As String = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"

'  This is specific to Windows because it is opening the Windows Current-User certificate store.
Dim bReadOnly As Boolean = True
success = certStore.OpenCurrentUserStore(bReadOnly)
If success <> True Then
    Log(certStore.LastErrorText)
    Return
End If


'  Find the certificate with the desired thumbprint
'  (There are many ways to locate a certificate.  This example chooses to find by thumbprint.)
Dim json As ChilkatJsonObject
json.Initialize
json.UpdateString("thumbprint", thumbprint)

Dim cert As ChilkatCert
cert.Initialize("cert")
success = certStore.FindCert(json, cert)
If success = False Then
    Log("Failed to find the certificate.")
    Return
End If


Log("Found: " & cert.SubjectCN)

Dim rsa As ChilkatRsa
rsa.Initialize

'  Provide the cert's private key
Dim bUsePrivateKey As Boolean = True
success = rsa.SetX509Cert(cert, bUsePrivateKey)
If success <> True Then
    Log(rsa.LastErrorText)
    Return
End If


'  Return the RSA signature in base64 encoded form.
rsa.EncodingMode = "base64"

'  Sign the utf-8 byte representation of the string.
rsa.Charset = "utf-8"

'  You can also choose other hash algorithms, such as SHA-1.
Dim sigBase64 As String = rsa.SignStringENC("text to sign", "SHA-256")
If rsa.LastMethodSuccess <> True Then
    Log(rsa.LastErrorText)
    Return
End If


Log("Base64 signature: " & sigBase64)