JFIF x x C C " } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w !1AQ aq"2B #3Rbr{
File "AppCheckTokenGenerator.php"
Full Path: /home/palsarh/web/palsarh.in/public_html/vendor/kreait/firebase-php/src/Firebase/AppCheck/AppCheckTokenGenerator.php
File size: 1.65 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare(strict_types=1);
namespace Kreait\Firebase\AppCheck;
use Beste\Clock\SystemClock;
use Firebase\JWT\JWT;
use Kreait\Firebase\Exception\AppCheck\InvalidAppCheckTokenOptions;
use Psr\Clock\ClockInterface;
/**
* @internal
*
* @todo Add #[SensitiveParameter] attribute to the private key once the minimum required PHP version is >=8.2
*/
final class AppCheckTokenGenerator
{
private const APP_CHECK_AUDIENCE = 'https://firebaseappcheck.googleapis.com/google.firebase.appcheck.v1.TokenExchangeService';
private readonly ClockInterface $clock;
/**
* @param non-empty-string $clientEmail
* @param non-empty-string $privateKey
*/
public function __construct(
private readonly string $clientEmail,
private readonly string $privateKey,
?ClockInterface $clock = null,
) {
$this->clock = $clock ?? SystemClock::create();
}
/**
* @param non-empty-string $appId the Application ID to use for the generated token
*
* @throws InvalidAppCheckTokenOptions
*
* @return string the generated token
*/
public function createCustomToken(string $appId, ?AppCheckTokenOptions $options = null): string
{
$now = $this->clock->now()->getTimestamp();
$payload = [
'iss' => $this->clientEmail,
'sub' => $this->clientEmail,
'app_id' => $appId,
'aud' => self::APP_CHECK_AUDIENCE,
'iat' => $now,
'exp' => $now + 300,
];
if ($options?->ttl !== null) {
$payload['ttl'] = $options->ttl.'s';
}
return JWT::encode($payload, $this->privateKey, 'RS256');
}
}