fallback sha256 openssl_verify code for php releases prior to 5.3

This commit is contained in:
Friendika 2011-08-05 05:37:42 -07:00
parent 112fc59e31
commit 5a5a7bfc4c
1 changed files with 6 additions and 3 deletions

View File

@ -194,7 +194,7 @@ function receive_post(&$a) {
logger('mod-diaspora: Fetching key for ' . $author_link ); logger('mod-diaspora: Fetching key for ' . $author_link );
// Get diaspora public key (pkcs#1) and convert to pkcs#8 // Get diaspora public key (pkcs#1) and convert to pkcs#8
$key = get_diaspora_key($author_link); $key = get_diaspora_key($author_link);
if(! $key) { if(! $key) {
@ -202,14 +202,17 @@ function receive_post(&$a) {
receive_return(400); receive_return(400);
} }
$verify = false;
if (version_compare(PHP_VERSION, '5.3.0', '>=')) { if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
$verify = openssl_verify($signed_data,$signature,$key,'sha256'); $verify = openssl_verify($signed_data,$signature,$key,'sha256');
} }
else { else {
// FIXME
// fallback sha256 verify for PHP < 5.3 // fallback sha256 verify for PHP < 5.3
$rawsig = '';
$hash = hash('sha256',$signed_data,true);
openssl_public_decrypt($signature,$rawsig,$key);
$verify = (($rawsig && substr($rawsig,-32) === $hash) ? true : false);
} }
if(! $verify) { if(! $verify) {