PHP ActiveX
PHP ActiveX
Sign JSON (or any Text) to Create a Detached PKCS7 Signature
Demonstrates how to sign JSON or any string using a certificate + private key from a .p12/.pfx to create a detached PKCS7 signature. (A detached signature is one that does not embed the original signed data.)Chilkat PHP ActiveX Downloads
<?php
$success = 0;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$crypt = new COM("Chilkat.Crypt2");
$cert = new COM("Chilkat.Cert");
$success = $cert->LoadPfxFile('qa_data/pfx/cert_test123.pfx','test123');
if ($success != 1) {
print $cert->LastErrorText . "\n";
exit;
}
// Tell the crypt component to use this cert.
$success = $crypt->SetSigningCert($cert);
if ($success != 1) {
print $crypt->LastErrorText . "\n";
exit;
}
$crypt->HashAlgorithm = 'sha256';
// By default, all the certs in the chain of authentication are included in the signature.
// If desired, we can choose to only include the signing certificate:
$crypt->IncludeCertChain = 0;
// Create the detached signature, which does NOT contain the original data.
// To create a PKCS7 signature that contains the original data, see CAdES Sign JSON
$crypt->Charset = 'utf-8';
$stringToSign = '{ \'abc\': 123}';
$detachedSig = $crypt->SignString($stringToSign);
if ($crypt->LastMethodSuccess == 0) {
print $crypt->LastErrorText . "\n";
exit;
}
// Verify the signature against the original data.
$verified = $crypt->VerifyString($stringToSign,$detachedSig);
if ($verified == 0) {
print $crypt->LastErrorText . "\n";
exit;
}
print 'Success!' . "\n";
?>