• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/authentication/applicationpassword.php
  • Класс: BitrixMainAuthenticationApplicationPasswordTable
  • Вызов: ApplicationPasswordTable::findDigestPassword
static function findDigestPassword($userId, array $digest)
{
	$appPasswords = static::getList(array(
		'select' => array('PASSWORD', 'DIGEST_PASSWORD', 'APPLICATION_ID'),
		'filter' => array('=USER_ID' => $userId),
	));

	$server = MainContext::getCurrent()->getServer();
	$method = ($server['REDIRECT_REQUEST_METHOD'] !== null? $server['REDIRECT_REQUEST_METHOD'] : $server['REQUEST_METHOD']);
	$HA2 = md5($method.':'.$digest['uri']);

	while(($appPassword = $appPasswords->fetch()))
	{
		$HA1 = $appPassword["DIGEST_PASSWORD"];
		$valid_response = md5($HA1.':'.$digest['nonce'].':'.$HA2);

		if($digest["response"] === $valid_response)
		{
			//application password
			return $appPassword;
		}
	}
	return false;
}