/** * {@inheritdoc} */ public function addRecipientWithEncryptedKey($encrypted_key, array $recipient_headers) { $jwe = clone $this; $jwe->recipients[] = Recipient::createRecipientFromLoadedJWE($recipient_headers, $encrypted_key); return $jwe; }
/** * @param \Jose\Object\JWEInterface $jwe * @param \Jose\Object\RecipientInterface $recipient * @param string $cek * @param \Jose\Algorithm\ContentEncryptionAlgorithmInterface $content_encryption_algorithm * @param array $additional_headers */ private function processRecipient(Object\JWEInterface $jwe, Object\RecipientInterface &$recipient, $cek, Algorithm\ContentEncryptionAlgorithmInterface $content_encryption_algorithm, array &$additional_headers) { if (null === $recipient->getRecipientKey()) { return; } $complete_headers = array_merge($jwe->getSharedProtectedHeaders(), $jwe->getSharedHeaders(), $recipient->getHeaders()); $key_encryption_algorithm = $this->findKeyEncryptionAlgorithm($complete_headers); $this->checkKeys($key_encryption_algorithm, $content_encryption_algorithm, $recipient->getRecipientKey()); $encrypted_content_encryption_key = $this->getEncryptedKey($complete_headers, $cek, $key_encryption_algorithm, $content_encryption_algorithm, $additional_headers, $recipient->getRecipientKey()); $recipient_headers = $recipient->getHeaders(); if (!empty($additional_headers) && 1 !== $jwe->countRecipients()) { $recipient_headers = array_merge($recipient_headers, $additional_headers); $additional_headers = []; } $recipient = Object\Recipient::createRecipientFromLoadedJWE($recipient_headers, $encrypted_content_encryption_key); }