parser


 

 
   команды управления поиском

Подксажите где можно найти инфу об Openssl, командах и с чем его едят.

Roman 09.01.2006 22:15

Для работы с одной процессинговой конторой, необходимо подписывать запрос ключем. Есть пример в пхп, но хотелось бы больше об этом узнать:
<?php
// &#56256;&#56937;&#56256;&#56936;&#56256;&#56926;&#56256;&#56925;&#56256;&#56936;&#56256;&#56940;&#56256;&#56936;&#56256;&#56924;&#56256;&#56930;&#56256;&#56940;&#56256;&#56950;&#56256;&#56323;&#56256;&#56926;&#56256;&#56922;&#56256;&#56935;&#56256;&#56935;&#56256;&#56949;&#56256;&#56927;
$PurchaseTime = date("ymdHis") ;
$data = "1751852;;$PurchaseTime;ORDER-2;980;1200;;" ;
// &#56256;&#56937;&#56256;&#56938;&#56256;&#56936;&#56256;&#56945;&#56256;&#56930;&#56256;&#56940;&#56256;&#56922;&#56256;&#56940;&#56256;&#56950; RSA &#56256;&#56932;&#56256;&#56933;&#56256;&#56952;&#56256;&#56945;&#56256;&#56323;&#56256;&#56940;&#56256;&#56936;&#56256;&#56938;&#56256;&#56925;&#56256;&#56936;&#56256;&#56924;&#56256;&#56944;&#56256;&#56922;
$fp = fopen("/opt/deploy/certs/1751852.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// &#56256;&#56937;&#56256;&#56936;&#56256;&#56933;&#56256;&#56941;&#56256;&#56945;&#56256;&#56930;&#56256;&#56940;&#56256;&#56950;&#56256;&#56323;&#56256;&#56937;&#56256;&#56936;&#56256;&#56926;&#56256;&#56937;&#56256;&#56930;&#56256;&#56939;&#56256;&#56950;
openssl_sign( $data , $signature, $pkeyid);
// free the key from memory
openssl_free_key($pkeyid);
// &#56256;&#56929;&#56256;&#56922;&#56256;&#56932;&#56256;&#56936;&#56256;&#56926;&#56256;&#56930;&#56256;&#56938;&#56256;&#56936;&#56256;&#56924;&#56256;&#56922;&#56256;&#56940;&#56256;&#56950;&#56256;&#56323;&#56256;&#56929;&#56256;&#56935;&#56256;&#56922;&#56256;&#56945;&#56256;&#56927;&#56256;&#56935;&#56256;&#56930;&#56256;&#56927;&#56256;&#56323;&#56256;&#56924; BASE64 , &#56256;&#56940;&#56256;&#56922;&#56256;&#56932;&#56256;&#56323;&#56256;&#56932;&#56256;&#56922;&#56256;&#56932; $signature &#56256;&#56930;&#56256;&#56934;&#56256;&#56927;&#56256;&#56927;&#56256;&#56940;&#56256;&#56323;&#56256;&#56923;&#56256;&#56930;&#56256;&#56935;&#56256;&#56922;&#56256;&#56938;&#56256;&#56935;&#56256;&#56949;&#56256;&#56931;
// &#56256;&#56942;&#56256;&#56936;&#56256;&#56938;&#56256;&#56934;&#56256;&#56922;&#56256;&#56940;
$b64sign = base64_encode($signature) ;
// &#56256;&#56937;&#56256;&#56936;&#56256;&#56939;&#56256;&#56933;&#56256;&#56922;&#56256;&#56940;&#56256;&#56950;&#56256;&#56323;&#56256;&#56929;&#56256;&#56935;&#56256;&#56922;&#56256;&#56945;&#56256;&#56927;&#56256;&#56935;&#56256;&#56930;&#56256;&#56927;&#56256;&#56323;&#56256;&#56937;&#56256;&#56927;&#56256;&#56938;&#56256;&#56927;&#56256;&#56934;&#56256;&#56927;&#56256;&#56935;&#56256;&#56935;&#56256;&#56936;&#56256;&#56931; $b64sign &#56256;&#56924;&#56256;&#56323;&#56256;&#56932;&#56256;&#56922;&#56256;&#56945;&#56256;&#56927;&#56256;&#56939;&#56256;&#56940;&#56256;&#56924;&#56256;&#56927;&#56256;&#56323;&#56256;&#56929;&#56256;&#56935;&#56256;&#56922;&#56256;&#56945;&#56256;&#56927;&#56256;&#56935;&#56256;&#56930;&#56256;&#56953;&#56256;&#56323;&#56256;&#56937;&#56256;&#56936;&#56256;&#56933;&#56256;&#56953;
“Signature”
?>
Проверка ответа
<?php
// $data and $signature are assumed to contain the data and the signature
// fetch public key from certificate and ready it
$fp = fopen("/opt/deploy/certs/server.crt", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
// state whether signature is okay or not
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
echo "good";
} elseif ($ok == 0) {
echo "bad";
} else {
echo "ugly, error checking signature";
}
// free the key from memory
openssl_free_key($pubkeyid);
?>