Sample code for 30+ languages & platforms
Node.js

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 Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

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

    var thumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2";

    // This is specific to Windows because it is opening the Windows Current-User certificate store.
    var bReadOnly = true;
    success = certStore.OpenCurrentUserStore(bReadOnly);
    if (success !== true) {
        console.log(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.)
    var json = new chilkat.JsonObject();
    json.UpdateString("thumbprint",thumbprint);

    var cert = new chilkat.Cert();
    success = certStore.FindCert(json,cert);
    if (success == false) {
        console.log("Failed to find the certificate.");
        return;
    }

    console.log("Found: " + cert.SubjectCN);

    var rsa = new chilkat.Rsa();

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

    // 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.
    var sigBase64 = rsa.SignStringENC("text to sign","SHA-256");
    if (rsa.LastMethodSuccess !== true) {
        console.log(rsa.LastErrorText);
        return;
    }

    console.log("Base64 signature: " + sigBase64);

}

chilkatExample();