PHP
function SetupStore($location, $name, $mode)
{
$store = new CPStore();
$store->Open($location, $name, $mode);
return $store;
}
function SetupCertificates($location, $name, $mode)
{
$store = SetupStore($location, $name, $mode);
return $store->get_Certificates();
}
function SetupCertificate($location, $name, $mode,
$find_type, $query, $valid_only,
$number)
{
$certs = SetupCertificates($location, $name, $mode);
if ($find_type != NULL)
{
$certs = $certs->Find($find_type, $query, $valid_only);
if (is_string($certs))
return $certs;
else
return $certs->Item($number);
}
else
{
$cert = $certs->Item($number);
return $cert;
}
}
try
{
$content = "test content";
$tsp_addres = "http://testca.cryptopro.ru/tsp/tsp.srf";
$cert = SetupCertificate(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY,
CERTIFICATE_FIND_SUBJECT_NAME, "test", 0,
1);
if (!$cert)
{
printf("Certificate not found\n");
return;
}
$signer = new CPSigner();
$signer->set_TSAAddress($tsp_addres);
$signer->set_Certificate($cert);
$sd = new CPSignedData();
$sd->set_Content($content);
$sm = $sd->Sign($signer, 0, STRING_TO_UCS2LE);
printf("Signature is:\n");
printf($sm);
printf("\n");
$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);
printf("Verify OK\n");
}
catch (Exception $e)
{
printf($e->getMessage());
}