ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
HMACSigner.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
26 
30 class HMACSigner implements Signer
31 {
32  public function __construct(
33  private Algorithm $algorithm
34  ) {
35  }
36 
37  protected function getAlgorithm(): string
38  {
39  return $this->algorithm->getName();
40  }
41 
42  public function sign(
43  string $signable_payload,
44  SigningKey $signing_key
45  ): string {
46  // sign the payload using hmac_hash
47  return hash_hmac(
48  $this->getAlgorithm(),
49  $signable_payload,
50  $signing_key->get(),
51  false
52  );
53  }
54 
55  public function verify(
56  string $data,
57  string $signature,
58  int $validity,
59  SigningKey $signing_key
60  ): bool {
61  $signature_check = $this->sign($data, $signing_key);
62  if ($signature_check !== $signature) {
63  return false;
64  }
65  if ($validity > 0 && $validity < time()) {
66  return false;
67  }
68 
69  return true;
70  }
71 }
sign(string $signable_payload, SigningKey $signing_key)
Definition: HMACSigner.php:42
verify(string $data, string $signature, int $validity, SigningKey $signing_key)
Definition: HMACSigner.php:55
__construct(private Algorithm $algorithm)
Definition: HMACSigner.php:32