Perl
Perl
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 Perl Downloads
use chilkat();
$success = 0;
# First get the A3 certificate that was installed on the Windows system.
$certStore = chilkat::CkCertStore->new();
$thumbprint = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2";
# This is specific to Windows because it is opening the Windows Current-User certificate store.
$bReadOnly = 1;
$success = $certStore->OpenCurrentUserStore($bReadOnly);
if ($success != 1) {
print $certStore->lastErrorText() . "\r\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 = chilkat::CkJsonObject->new();
$json->UpdateString("thumbprint",$thumbprint);
$cert = chilkat::CkCert->new();
$success = $certStore->FindCert($json,$cert);
if ($success == 0) {
print "Failed to find the certificate." . "\r\n";
exit;
}
print "Found: " . $cert->subjectCN() . "\r\n";
$rsa = chilkat::CkRsa->new();
# Provide the cert's private key
$bUsePrivateKey = 1;
$success = $rsa->SetX509Cert($cert,$bUsePrivateKey);
if ($success != 1) {
print $rsa->lastErrorText() . "\r\n";
exit;
}
# Return the RSA signature in base64 encoded form.
$rsa->put_EncodingMode("base64");
# Sign the utf-8 byte representation of the string.
$rsa->put_Charset("utf-8");
# You can also choose other hash algorithms, such as SHA-1.
$sigBase64 = $rsa->signStringENC("text to sign","SHA-256");
if ($rsa->get_LastMethodSuccess() != 1) {
print $rsa->lastErrorText() . "\r\n";
exit;
}
print "Base64 signature: " . $sigBase64 . "\r\n";