note 85870 added to function.openssl-sign
| From: | hanbsd at 163 dot com | Date: | Mon, 22 Sep 2008 11:40:23 +0000 |
| Subject: | note 85870 added to function.openssl-sign | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-144602@lists.php.net to get a copy of this message | ||
i create private key with
$configargs = array(
"digest_alg" => "sha1",
"private_key_bits" => 1024,
"private_key_type" => OPENSSL_KEYTYPE_DSA,
"encrypt_key" => false
);
But I can not get signature by openssl_sign($data, $signature, $key).
Then I use openssl in shell
#openssl dgst -dss1 -sign id_dsa foo.sha1 > sigfile.bin
openssl create a signature file : sigfile.bin
#openssl dgst -dss1 -verify id_dsa.pub -signature sigfile.bin foo.sha1
openssl print: "Verified OK"
It looks something bug of PHP function openssl_sign()
My PHP Version: 5.2.6
demo code:
<?php
$data = "sfsdfsdfs";
// First we need to have a string containing the private key in PEM format
// this file comes with OpenSSL 0.9.6
$fp = fopen("/home/id_dsa", "r");
$pkey = fread($fp, 8192);
fclose($fp);
// get private key from the PEM format
// $key is an encr key resource id if success, else false
$key = openssl_get_privatekey($pkey);
// calculate signature
openssl_sign($data, $signature, $key);
openssl_free_key($key);
// recipient verifies signature
// read certificate
$fp = fopen("/home/id_dsa.pub", "r");
$cert = fread($fp, 8192);
fclose($fp);
// Get public key from the certificate
$pubkey = openssl_get_publickey($cert);
// state whether signature is okay or not
echo openssl_verify($data, $signature, $pubkey) == 1 ? "ok\n" : "bad\n";
// free key
openssl_free_key($pubkey);
?>
----
Server IP: 210.51.44.91
Probable Submitter: 60.176.215.152
----
Manual Page -- http://www.php.net/manual/en/function.openssl-sign.php
Edit -- https://master.php.net/note/edit/85870
Del: integrated -- https://master.php.net/note/delete/85870/integrated
Del: useless -- https://master.php.net/note/delete/85870/useless
Del: bad code -- https://master.php.net/note/delete/85870/bad+code
Del: spam -- https://master.php.net/note/delete/85870/spam
Del: non-english -- https://master.php.net/note/delete/85870/non-english
Del: in docs -- https://master.php.net/note/delete/85870/in+docs
Del: other reasons-- https://master.php.net/note/delete/85870
Reject -- https://master.php.net/note/reject/85870
Search -- https://master.php.net/manage/user-notes.php