· 5 years ago · Jun 25, 2020, 09:14 AM
1
2function sign_generic($secret_key, $params)
3{
4 // a copy-passing, so it's not altering the original
5 unset($params['signature']);
6
7 $data_to_sign = "";
8 recursive_generic_array_sign($params, $data_to_sign);
9
10 $data_to_sign .= $secret_key;
11
12 return hash('sha512', $data_to_sign);
13}
14
15function recursive_generic_array_sign(&$params, &$data_to_sign)
16{
17// sort the parameters based on its key
18 ksort($params);
19// Traverse through each component
20// And generate the concatenated string to sign
21
22 foreach ($params as $v) {
23
24 if (is_array($v)) {
25// in case of array traverse inside
26// and build further the string to sign
27 recursive_generic_array_sign($v, $data_to_sign);
28
29 }
30 else {
31// Not an array means this is a key=>value map,
32// Concatenate the value to data to sign
33
34 $data_to_sign .= $v;
35 }
36 }
37}