* @since 0.1.0 */ abstract class Hmac extends BaseSigner { /** * {@inheritdoc} */ public function createHash($payload, Key $key) { return hash_hmac($this->getAlgorithm(), $payload, $key->getContent(), true); } /** * {@inheritdoc} */ public function doVerify($expected, $payload, Key $key) { if (!is_string($expected)) { return false; } return hash_equals($expected, $this->createHash($payload, $key)); } /** * Returns the algorithm name * * @internal * * @return string */ abstract public function getAlgorithm(); }