C#
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
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.");