/** * @param \Jose\Object\SignatureInterface $signature * * @throws \InvalidArgumentException */ private function checkB64HeaderAndCrit(Object\SignatureInterface $signature) { if (!$signature->hasProtectedHeader('b64')) { return; } Assertion::true($signature->hasProtectedHeader('crit'), 'The protected header parameter "crit" is mandatory when protected header parameter "b64" is set.'); Assertion::isArray($signature->getProtectedHeader('crit'), 'The protected header parameter "crit" must be an array.'); Assertion::inArray('b64', $signature->getProtectedHeader('crit'), 'The protected header parameter "crit" must contain "b64" when protected header parameter "b64" is set.'); }
/** * @param \Jose\Object\SignatureInterface $signature * * @return \Jose\Algorithm\SignatureAlgorithmInterface */ private function getAlgorithm(Object\SignatureInterface $signature) { $complete_headers = array_merge($signature->getProtectedHeaders(), $signature->getHeaders()); Assertion::keyExists($complete_headers, 'alg', 'No "alg" parameter set in the header.'); $algorithm = $this->getJWAManager()->getAlgorithm($complete_headers['alg']); Assertion::isInstanceOf($algorithm, Algorithm\SignatureAlgorithmInterface::class, sprintf('The algorithm "%s" is not supported or does not implement SignatureInterface.', $complete_headers['alg'])); return $algorithm; }
/** * @param \Jose\Object\SignatureInterface $signature * * @return bool */ private static function isPayloadEncoded(SignatureInterface $signature) { return !$signature->hasProtectedHeader('b64') || true === $signature->getProtectedHeader('b64'); }