[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 /* 6 * The MIT License (MIT) 7 * 8 * Copyright (c) 2014-2019 Spomky-Labs 9 * 10 * This software may be modified and distributed under the terms 11 * of the MIT license. See the LICENSE file for details. 12 */ 13 14 namespace Cose\Algorithm\Mac; 15 16 use Assert\Assertion; 17 use Cose\Key\Key; 18 19 abstract class Hmac implements Mac 20 { 21 public function hash(string $data, Key $key): string 22 { 23 $this->checKey($key); 24 $signature = hash_hmac($this->getHashAlgorithm(), $data, $key->get(-1), true); 25 26 return mb_substr($signature, 0, $this->getSignatureLength() / 8, '8bit'); 27 } 28 29 public function verify(string $data, Key $key, string $signature): bool 30 { 31 return hash_equals($this->hash($data, $key), $signature); 32 } 33 34 private function checKey(Key $key): void 35 { 36 Assertion::eq($key->type(), 4, 'Invalid key. Must be of type symmetric'); 37 Assertion::true($key->has(-1), 'Invalid key. The value of the key is missing'); 38 } 39 40 abstract protected function getHashAlgorithm(): string; 41 42 abstract protected function getSignatureLength(): int; 43 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |