Submit
Path:
~
/
/
opt
/
psa
/
admin
/
plib
/
modules
/
platform360
/
vendor
/
web-token
/
jwt-library
/
NestedToken
/
File Content:
NestedTokenBuilder.php
<?php declare (strict_types=1); namespace Platform360\Jose\Component\NestedToken; use Platform360\Jose\Component\Core\JWK; use Platform360\Jose\Component\Encryption\JWEBuilder; use Platform360\Jose\Component\Encryption\Serializer\JWESerializerManager; use Platform360\Jose\Component\Signature\JWSBuilder; use Platform360\Jose\Component\Signature\Serializer\JWSSerializerManager; use function array_key_exists; class NestedTokenBuilder { public function __construct(private readonly JWEBuilder $jweBuilder, private readonly JWESerializerManager $jweSerializerManager, private readonly JWSBuilder $jwsBuilder, private readonly JWSSerializerManager $jwsSerializerManager) { } /** * Creates a nested token. * * @param array{array{key: JWK, protected_header?: array<string, mixed>, header?: array<string, mixed>}} $signatures * @param array{alg?: string, string?: mixed} $jweSharedProtectedHeader * @param array{alg?: string, string?: mixed} $jweSharedHeader * @param array{array{key: JWK, header?: array<string, mixed>}} $recipients */ public function create(string $payload, array $signatures, string $jws_serialization_mode, array $jweSharedProtectedHeader, array $jweSharedHeader, array $recipients, string $jwe_serialization_mode, ?string $aad = null) : string { $jws = $this->jwsBuilder->create()->withPayload($payload); foreach ($signatures as $signature) { $signature['protected_header'] = array_key_exists('protected_header', $signature) ? $signature['protected_header'] : []; $signature['header'] = array_key_exists('header', $signature) ? $signature['header'] : []; $jws = $jws->addSignature($signature['key'], $signature['protected_header'], $signature['header']); } $jws = $jws->build(); $token = $this->jwsSerializerManager->serialize($jws_serialization_mode, $jws); $jweSharedProtectedHeader['cty'] = 'JWT'; $jwe = $this->jweBuilder->create()->withPayload($token)->withSharedProtectedHeader($jweSharedProtectedHeader)->withSharedHeader($jweSharedHeader)->withAAD($aad); foreach ($recipients as $recipient) { $recipient['header'] = array_key_exists('header', $recipient) ? $recipient['header'] : []; $jwe = $jwe->addRecipient($recipient['key'], $recipient['header']); } $jwe = $jwe->build(); return $this->jweSerializerManager->serialize($jwe_serialization_mode, $jwe); } }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
NestedTokenBuilder.php
2496 bytes
0644
NestedTokenBuilderFactory.php
1534 bytes
0644
NestedTokenLoader.php
2108 bytes
0644
NestedTokenLoaderFactory.php
1197 bytes
0644
N4ST4R_ID | Naxtarrr