Sample code for 30+ languages & platforms
PowerShell

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

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

# First get the A3 certificate that was installed on the Windows system.
$certStore = New-Object Chilkat.CertStore

$thumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"

# This is specific to Windows because it is opening the Windows Current-User certificate store.
$bReadOnly = $true
$success = $certStore.OpenCurrentUserStore($bReadOnly)
if ($success -ne $true) {
    $($certStore.LastErrorText)
    exit
}

# Find the certificate with the desired thumbprint
# (There are many ways to locate a certificate.  This example chooses to find by thumbprint.)
$json = New-Object Chilkat.JsonObject
$json.UpdateString("thumbprint",$thumbprint)

$cert = New-Object Chilkat.Cert
$success = $certStore.FindCert($json,$cert)
if ($success -eq $false) {
    $("Failed to find the certificate.")
    exit
}

$("Found: " + $cert.SubjectCN)

$rsa = New-Object Chilkat.Rsa

# Provide the cert's private key
$bUsePrivateKey = $true
$success = $rsa.SetX509Cert($cert,$bUsePrivateKey)
if ($success -ne $true) {
    $($rsa.LastErrorText)
    exit
}

# 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.
$sigBase64 = $rsa.SignStringENC("text to sign","SHA-256")
if ($rsa.LastMethodSuccess -ne $true) {
    $($rsa.LastErrorText)
    exit
}

$("Base64 signature: " + $sigBase64)