/** * {@inheritdoc} */ public function checkElement(DigestDataInterface $digest_data) { if (false === $digest_data->has('nonce')) { throw new \InvalidArgumentException('Missing mandatory digest value: "nonce".'); } if (false === ($nonceAsPlainText = base64_decode($digest_data->get('nonce')))) { throw new \InvalidArgumentException(sprintf('Nonce is not encoded in Base64; received nonce "%s".', $digest_data->get('nonce'))); } $nonceTokens = explode(':', $nonceAsPlainText); if (2 !== count($nonceTokens)) { throw new \InvalidArgumentException(sprintf('Nonce should have yielded two tokens but was "%s".', $nonceAsPlainText)); } $nonce_expiry_time = $nonceTokens[0]; $signature = $nonceTokens[1]; $this->checkSignature($nonce_expiry_time, $signature); $this->checkExpired($nonce_expiry_time); }
/** * @param \HttpDigest\DigestDataInterface $digest_data * @param bool $is_sess * * @return \HttpDigest\Algorithm\AlgorithmInterface */ private function getAlgorithm(DigestDataInterface $digest_data, &$is_sess) { $algorithm_name = $digest_data->has('algorithm') ? $digest_data->get('algorithm') : 'MD5'; if ('-sess' === substr($algorithm_name, 0, -5)) { $is_sess = true; $algorithm_name = substr($algorithm_name, 0, strlen($algorithm_name) - 5); } else { $is_sess = false; } return $this->getSchemeAlgorithm($algorithm_name); }
private function checkSubElement(DigestDataInterface $digest_data, $element) { if (!$digest_data->has($element)) { throw new \InvalidArgumentException(sprintf('Missing mandatory digest value "%s".', $element)); } }
private function checkUsername(DigestDataInterface $digest_data) { if (!$digest_data->has('username')) { throw new \InvalidArgumentException('Missing mandatory digest value "username".'); } }