assertTrue(Client::verify_signature($body, $header, 's3cret')); } public function testRejectsWrongSecret() { $body = '{"hello":"world"}'; $header = 'sha256='.hash_hmac('sha256', $body, 's3cret'); $this->assertFalse(Client::verify_signature($body, $header, 'wrong')); } public function testRejectsModifiedBody() { $header = 'sha256='.hash_hmac('sha256', 'original', 's3cret'); $this->assertFalse(Client::verify_signature('modified', $header, 's3cret')); } public function testRejectsMissingOrMalformedHeader() { $this->assertFalse(Client::verify_signature('body', null, 's3cret')); $this->assertFalse(Client::verify_signature('body', '', 's3cret')); $this->assertFalse(Client::verify_signature('body', 'md5=abc', 's3cret')); $this->assertFalse(Client::verify_signature('body', ['sha256=abc'], 's3cret')); } }