• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangeclient.php
  • Класс: CDavExchangeClient
  • Вызов: CDavExchangeClient::AuthenticateDigest
private function AuthenticateDigest($arDigestRequest, $request, $response, $verb = "Authorization")
{
	// qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v1fdcb1e18d2cc7a72322c81c0d8d2a3c332f7908ef0dfcb01aa9fb63930eadf5722dc8f6ce7b82912353531b18360cd62382a6c2433939d3f",charset=utf-8,realm="Digest"

	$cn = md5(uniqid());

	$a1 = md5($this->userName.':'.$arDigestRequest["realm"].':'.$this->userPassword).":".$arDigestRequest["nonce"].":".$cn;
	$a2 = $request->GetMethod().":".$request->GetPath();
	$hash = md5(md5($a1).":".$arDigestRequest["nonce"].":00000001:".$cn.":".$arDigestRequest["qop"].":".md5($a2));

	$request->SetHeader(
		$verb,
		sprintf(
			"Digest username="%s",realm="%s",nonce="%s",uri="%s",cnonce="%s",nc=00000001,algorithm=%s,response="%s",qop="%s",charset=utf-8",
			$this->userName,
			$arDigestRequest["realm"],
			$arDigestRequest["nonce"],
			$request->GetPath(),
			$cn,
			$arDigestRequest["algorithm"],
			$hash,
			$arDigestRequest["qop"]
		)
	);

	return $request;
}