From 1c4346805a2bf38a3b5774fe3d603223d0bf2c4c Mon Sep 17 00:00:00 2001 From: mahdi msr Date: Fri, 26 Sep 2025 14:54:16 +0330 Subject: [PATCH] signature: generate dependencies for signature header --- src/Requests/Header.php | 37 +++++++++++++++++++++++++++++++ tests/AuthHeaderTest.php | 48 ++++++++++++++++++++++++++++++++++++++++ tests/ExampleTest.php | 5 ----- 3 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 src/Requests/Header.php create mode 100644 tests/AuthHeaderTest.php delete mode 100644 tests/ExampleTest.php diff --git a/src/Requests/Header.php b/src/Requests/Header.php new file mode 100644 index 0000000..45c3caa --- /dev/null +++ b/src/Requests/Header.php @@ -0,0 +1,37 @@ + $k . $v, + array_keys($sortedParameters), + array_values($sortedParameters) + )); + } + + public static function generateNonce(): ?string + { + return md5(uniqid(mt_rand(), true)); + } +} diff --git a/tests/AuthHeaderTest.php b/tests/AuthHeaderTest.php new file mode 100644 index 0000000..3f39327 --- /dev/null +++ b/tests/AuthHeaderTest.php @@ -0,0 +1,48 @@ +toBeEmpty(); + + $params = [ + 'z_index' => 'z value', + 'a_index' => 'a value', + 'b_index' => 'b value', + ]; + $sortedParams = Header::sortQueryParameters($params); + expect($sortedParams) + ->toMatchArray([ + 'a_index' => 'a value', + 'b_index' => 'b value', + 'z_index' => 'z value', + ]); +}); + +it('get sorted query params as string value', function () { + + $digestedParam = Header::digestQueryParameters([]); + expect($digestedParam)->toBeNull(); + + $params = [ + 'z_index' => 'z_value', + 'a_index' => 'a_value', + 'b_index' => 'b_value', + ]; + $sortedParams = Header::digestQueryParameters($params); + expect($sortedParams)->toEqual('a_indexa_valueb_indexb_valuez_indexz_value'); +}); + +it('get some random string 32 bit', function () { + + $firstRandom = Header::generateNonce(); + $secondRandom = Header::generateNonce(); + + expect($firstRandom) + ->toBeString() + ->toHaveLength(32) + ->not()->toEqual($secondRandom) + ->not()->toBeNull(); +}); diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php deleted file mode 100644 index 5d36321..0000000 --- a/tests/ExampleTest.php +++ /dev/null @@ -1,5 +0,0 @@ -toBeTrue(); -});