• Модуль: 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);
}