Sample code for 30+ languages & platforms
PowerShell

RSA Sign using Private Key of Certificate Type A3 (smart card / token)

See more RSA Examples

Demonstrates RSA signing data 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
}

# Now we're ready to sign..
$fac = New-Object Chilkat.FileAccess

# Get bytes to be signed..
$inData = $fac.ReadEntireFile("in.dat")
$signature = $rsa.SignBytes($inData,"SHA-256")
if ($rsa.LastMethodSuccess -ne $true) {
    $($rsa.LastErrorText)
    exit
}

$("Signature created.")