Sample code for 30+ languages & platforms
PHP Requires Chilkat v10.1.2+

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

Chilkat2 PHP
<?php

use Chilkat2\Cert;
use Chilkat2\CertStore;
use Chilkat2\JsonObject;
use Chilkat2\Rsa;

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

$thumbprint = '12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2';

// This is specific to Windows because it is opening the Windows Current-User certificate store.
$bReadOnly = true;
try {
    $certStore->OpenCurrentUserStore($bReadOnly);
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    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 JsonObject();
$json->UpdateString('thumbprint', $thumbprint);

$cert = new Cert();
try {
    $certStore->FindCert($json, $cert);
} catch (\Chilkat2\Exception $e) {
    echo "Failed to find the certificate.\n";
    exit;
}

echo 'Found: ', $cert->SubjectCN, "\n";

$rsa = new Rsa();

// Provide the cert's private key
$bUsePrivateKey = true;
try {
    $rsa->SetX509Cert($cert, $bUsePrivateKey);

    // 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');
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

echo 'Base64 signature: ', $sigBase64, "\n";