From 4f987debdf76ee8569a1917d23220f187d42e240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Oudin?= <oudin@crans.org> Date: Sat, 13 Oct 2018 10:30:56 +0200 Subject: [PATCH] Use HMAC-SHA256 instead of SHA1 Fixes #29 --- app/controller/bank.php | 8 +++++--- app/controller/campaign.php | 2 +- app/controller/perso.php | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/controller/bank.php b/app/controller/bank.php index d20b0cd..06fa051 100644 --- a/app/controller/bank.php +++ b/app/controller/bank.php @@ -81,9 +81,11 @@ class Bank extends Controller $sig .= $value . "+"; } $sig .= CERTIFICATE; - $cb_log->write("sig: " . $signature . " == " . sha1($sig)); - if (sha1($sig)!=$signature) { - $error = "Error in signature: " . $signature . " != " . sha1($sig); + ### Attempt to do it in hmac-sha256 + $sig_hash = base64_encode(hash_hmac('sha256', $sig, CERTIFICATE, true)); + $cb_log->write("sig: " . $signature . " == " . $sig_hash); + if ($sig_hash!=$signature) { + $error = "Error in signature: " . $signature . " != " . $sig_hash; } // Résultats des vérifications globales if ($error!="") { diff --git a/app/controller/campaign.php b/app/controller/campaign.php index 551bfa8..f8a71a4 100644 --- a/app/controller/campaign.php +++ b/app/controller/campaign.php @@ -196,7 +196,7 @@ class Campaign extends Controller $signature .= $value."+"; } $signature .= CERTIFICATE; - $signature = sha1($signature); + $signature = base64_encode(hash_hmac('sha256', $signature, CERTIFICATE, true)); $params["signature"] = $signature; $f3->set('target', $target); diff --git a/app/controller/perso.php b/app/controller/perso.php index cdf5090..230685c 100644 --- a/app/controller/perso.php +++ b/app/controller/perso.php @@ -531,7 +531,8 @@ class Perso extends Controller $signature .= $value."+"; } $signature .= CERTIFICATE; - $signature = sha1($signature); + $signature = base64_encode(hash_hmac('sha256', $signature, CERTIFICATE, true)); + #$signature = sha1($signature); $parameters["wsSignature"] = $signature; $client = new \SoapClient("https://paiement.systempay.fr/vads-ws/ident-v2.1?wsdl"); $result = $client->customerCancel($parameters); -- GitLab