mirror of
https://github.com/linuxserver/Heimdall.git
synced 2026-02-22 04:30:32 +09:00
33 lines
1011 B
PHP
33 lines
1011 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Lcobucci\JWT\Validation\Constraint;
|
|
|
|
use Lcobucci\JWT\Signer;
|
|
use Lcobucci\JWT\Token;
|
|
use Lcobucci\JWT\UnencryptedToken;
|
|
use Lcobucci\JWT\Validation\ConstraintViolation;
|
|
use Lcobucci\JWT\Validation\SignedWith as SignedWithInterface;
|
|
|
|
final class SignedWith implements SignedWithInterface
|
|
{
|
|
public function __construct(private readonly Signer $signer, private readonly Signer\Key $key)
|
|
{
|
|
}
|
|
|
|
public function assert(Token $token): void
|
|
{
|
|
if (! $token instanceof UnencryptedToken) {
|
|
throw ConstraintViolation::error('You should pass a plain token', $this);
|
|
}
|
|
|
|
if ($token->headers()->get('alg') !== $this->signer->algorithmId()) {
|
|
throw ConstraintViolation::error('Token signer mismatch', $this);
|
|
}
|
|
|
|
if (! $this->signer->verify($token->signature()->hash(), $token->payload(), $this->key)) {
|
|
throw ConstraintViolation::error('Token signature mismatch', $this);
|
|
}
|
|
}
|
|
}
|