Skip to content

Commit c6d70a8

Browse files
author
Thom Werring
committed
Correctly calulate signature with sha256
1 parent a06af8c commit c6d70a8

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/Adyen/Adyen.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -534,14 +534,17 @@ public function getSha256HPPParams()
534534
}
535535

536536
public static function verifySignature($data,$sharedSecret){
537-
$hmacData =
538-
$data['authResult'].
539-
$data['pspReference'].
540-
$data['merchantReference'].
541-
$data['skinCode'];
542-
if(isset($data['merchantReturnData'])) $hmacData .= $data['merchantReturnData'];
543-
$signature = $data['merchantSig'];
544-
return base64_encode(hash_hmac('sha1', $hmacData, $sharedSecret, true)) === $signature;
537+
$signature = $data['merchantSig'];
538+
$hmacData = '';
539+
ksort($data);
540+
$sign = [];
541+
foreach($data as $key=>$value){
542+
if(!in_array($key,['sig','merchantSig']) && substr($key,0,7) !=='ignore.') {
543+
$sign[$key] = str_replace(':','\\:',str_replace('\\','\\\\',$value));
544+
}
545+
}
546+
$hmacData = implode(':',array_merge(array_keys($sign),array_values($sign)));
547+
return base64_encode(hash_hmac('sha256', $hmacData, $sharedSecret, true)) === urldecode($signature);
545548
}
546549

547550
private function getMerchantSignature() {

0 commit comments

Comments
 (0)