B4X Requires Chilkat v10.1.2+
B4X
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
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)