- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/classes/general/apple.php
- Класс: CAppleInterface
- Вызов: CAppleInterface::generateSignedJWT
private function generateSignedJWT(string $keyId, string $teamId, string $clientId, string $secretKey)
{
$header = [
'alg' => 'ES256',
'kid' => $keyId
];
$body = array(
'iss' => $teamId,
'iat' => time(),
'exp' => time() + self::CLIENT_SECRET_EXPIRATION_TIME,
'aud' => 'https://appleid.apple.com',
'sub' => $clientId
);
$privateKey = openssl_pkey_get_private($secretKey);
if (!$privateKey)
{
return false;
}
$payload = JWT::urlsafeB64Encode(json_encode($header)) . '.' . JWT::urlsafeB64Encode(json_encode($body));
$signature = '';
$signResult = openssl_sign($payload, $signature, $privateKey, OPENSSL_ALGO_SHA256);
if (!$signResult)
{
return false;
}
$rawSignature = self::convertDERSignature($signature, 64);
return $payload . '.' . JWT::urlsafeB64Encode($rawSignature);
}