• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/web/jwk.php
  • Класс: BitrixMainWebJWK
  • Вызов: JWK::parseKeySet
static function parseKeySet($source)
{
	$keys = [];
	if (is_string($source)) {
		$source = json_decode($source, true);
	} else if (is_object($source)) {
		if (property_exists($source, 'keys'))
			$source = (array)$source;
		else
			$source = [$source];
	}

	if (is_array($source)) {
		if (isset($source['keys']))
			$source = $source['keys'];

		foreach ($source as $k => $v) {
			if (!is_string($k)) {
				if (is_array($v) && isset($v['kid']))
					$k = $v['kid'];
				elseif (is_object($v) && property_exists($v, 'kid'))
					$k = $v->{'kid'};
			}
			try {
				$v = self::parseKey($v);
				$keys[$k] = $v;
			} catch (UnexpectedValueException $e) {
				//Do nothing
			}
		}
	}
	if (0 < count($keys)) {
		return $keys;
	}
	throw new UnexpectedValueException('Failed to parse JWK');
}