ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
HMACSigner.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
25
29class HMACSigner implements Signer
30{
31 public function __construct(
32 private Algorithm $algorithm
33 ) {
34 }
35
36 protected function getAlgorithm(): string
37 {
38 return $this->algorithm->getName();
39 }
40
41 public function sign(
42 string $signable_payload,
43 SigningKey $signing_key
44 ): string {
45 // sign the payload using hmac_hash
46 return $this->algorithm->after(hash_hmac(
47 $this->getAlgorithm(),
48 $signable_payload,
49 $signing_key->get(),
50 false
51 ));
52 }
53
54 public function verify(
55 string $data,
56 string $signature,
57 int $validity,
58 SigningKey $signing_key
59 ): bool {
60 $signature_check = $this->sign($data, $signing_key);
61 if ($signature_check !== $signature) {
62 return false;
63 }
64 return !($validity > 0 && $validity < time());
65 }
66}
verify(string $data, string $signature, int $validity, SigningKey $signing_key)
Definition: HMACSigner.php:54
sign(string $signable_payload, SigningKey $signing_key)
Definition: HMACSigner.php:41
__construct(private Algorithm $algorithm)
Definition: HMACSigner.php:31
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
get(string $class_name)