Skip to content

Commit c4e289e

Browse files
committed
Add support for EdDSA (only Ed25519)
1 parent 866b28f commit c4e289e

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/AccessTokenHashChecker.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@ public function checkClaim($value): void
1919
return;
2020
}
2121

22-
$bit = substr($this->openIDConnectClient->getIdTokenHeader()->alg, 2, 3);
22+
$alg = $this->openIDConnectClient->getIdTokenHeader()->alg;
23+
24+
$bit = match ($alg) {
25+
'EdDSA' => '512',
26+
default => substr($alg, 2, 3),
27+
};
28+
2329
$len = ((int)$bit) / 16;
2430
$expected_at_hash = $this->openIDConnectClient->urlEncode(substr(hash('sha'.$bit, $this->openIDConnectClient->getAccessToken(), true), 0, $len));
2531

src/OpenIDConnectClient.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
use Jose\Component\Core\JWK;
3939
use Jose\Component\Core\JWKSet;
4040
use Jose\Component\KeyManagement\JWKFactory;
41+
use Jose\Component\Signature\Algorithm\EdDSA;
4142
use Jose\Component\Signature\Algorithm\ES256;
4243
use Jose\Component\Signature\Algorithm\ES384;
4344
use Jose\Component\Signature\Algorithm\ES512;
@@ -321,6 +322,7 @@ public function __construct(?string $provider_url = null, ?string $client_id = n
321322
$algorithmManagerFactory->add('ES256', new ES256());
322323
$algorithmManagerFactory->add('ES384', new ES384());
323324
$algorithmManagerFactory->add('ES512', new ES512());
325+
$algorithmManagerFactory->add('EdDSA', new EdDSA());
324326
$this->algorithmManagerFactory = $algorithmManagerFactory;
325327

326328
$this->jwsSerializerManager = new JWSSerializerManager([
@@ -1200,6 +1202,7 @@ public function verifyJWS(JWS $jws): bool
12001202
case 'ES256':
12011203
case 'ES384':
12021204
case 'ES512':
1205+
case 'EdDSA':
12031206

12041207
if ($signature->hasProtectedHeaderParameter('jwk')) {
12051208
throw new OpenIDConnectClientException('Self signed JWK header is not valid');

0 commit comments

Comments
 (0)