/** * @param string[] $selected_key_encryption_algorithms * @param string[] $selected_content_encryption_algorithms * @param string[] $selected_compression_methods * * @return \Jose\EncrypterInterface */ public function createEncrypter(array $selected_key_encryption_algorithms, array $selected_content_encryption_algorithms, array $selected_compression_methods) { $key_encryption_algorithms = $this->algorithm_manager->getSelectedAlgorithmMethods($selected_key_encryption_algorithms); $content_encryption_algorithms = $this->algorithm_manager->getSelectedAlgorithmMethods($selected_content_encryption_algorithms); $compression_methods = $this->compression_manager->getSelectedCompressionMethods($selected_compression_methods); return Encrypter::createEncrypter($key_encryption_algorithms, $content_encryption_algorithms, $compression_methods); }
/** * @param mixed $payload * @param \Jose\Object\JWKInterface $recipient_key * @param array $shared_protected_headers * @param array $shared_headers * @param array $recipient_headers * @param string|null $aad * * @return \Jose\Object\JWEInterface */ private static function createJWEAndEncrypt($payload, JWKInterface $recipient_key, array $shared_protected_headers = [], $shared_headers = [], $recipient_headers = [], $aad = null) { $complete_headers = array_merge($shared_protected_headers, $shared_headers, $recipient_headers); Assertion::keyExists($complete_headers, 'alg', 'No "alg" parameter set in the header'); Assertion::keyExists($complete_headers, 'enc', 'No "enc" parameter set in the header'); $encrypter = Encrypter::createEncrypter([$complete_headers['alg']], [$complete_headers['enc']], ['DEF', 'ZLIB', 'GZ']); $jwe = self::createJWE($payload, $shared_protected_headers, $shared_headers, $aad); $jwe = $jwe->addRecipientInformation($recipient_key, $recipient_headers); $encrypter->encrypt($jwe); return $jwe; }