ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
HMACSigner.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
25 
29 class 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 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 }
sign(string $signable_payload, SigningKey $signing_key)
Definition: HMACSigner.php:41
verify(string $data, string $signature, int $validity, SigningKey $signing_key)
Definition: HMACSigner.php:54
__construct(private Algorithm $algorithm)
Definition: HMACSigner.php:31