Sample code for 30+ languages & platforms
C#

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 C# Downloads

C#
bool success = false;

// First get the A3 certificate that was installed on the Windows system.
Chilkat.CertStore certStore = new Chilkat.CertStore();

string thumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2";

// This is specific to Windows because it is opening the Windows Current-User certificate store.
bool bReadOnly = true;
success = certStore.OpenCurrentUserStore(bReadOnly);
if (success != true) {
    Debug.WriteLine(certStore.LastErrorText);
    return;
}

// Find the certificate with the desired thumbprint
// (There are many ways to locate a certificate.  This example chooses to find by thumbprint.)
Chilkat.JsonObject json = new Chilkat.JsonObject();
json.UpdateString("thumbprint",thumbprint);

Chilkat.Cert cert = new Chilkat.Cert();
success = certStore.FindCert(json,cert);
if (success == false) {
    Debug.WriteLine("Failed to find the certificate.");
    return;
}

Debug.WriteLine("Found: " + cert.SubjectCN);

Chilkat.Rsa rsa = new Chilkat.Rsa();

// Provide the cert's private key
bool bUsePrivateKey = true;
success = rsa.SetX509Cert(cert,bUsePrivateKey);
if (success != true) {
    Debug.WriteLine(rsa.LastErrorText);
    return;
}

// Now we're ready to sign..
Chilkat.FileAccess fac = new Chilkat.FileAccess();

// Get bytes to be signed..
byte[] inData = fac.ReadEntireFile("in.dat");
byte[] signature = rsa.SignBytes(inData,"SHA-256");
if (rsa.LastMethodSuccess != true) {
    Debug.WriteLine(rsa.LastErrorText);
    return;
}

Debug.WriteLine("Signature created.");