$completeHeader * @param array $additionalHeader */ public function encryptKey(JWK $key, string $cek, array $completeHeader, array &$additionalHeader): string { $this->checkKey($key); $pub = RSAKey::toPublic(RSAKey::createFromJWK($key)); return RSACrypt::encrypt($pub, $cek, $this->getEncryptionMode(), $this->getHashAlgorithm()); } /** * @param array $header */ public function decryptKey(JWK $key, string $encrypted_cek, array $header): string { $this->checkKey($key); if (! $key->has('d')) { throw new InvalidArgumentException('The key is not a private key'); } $priv = RSAKey::createFromJWK($key); return RSACrypt::decrypt($priv, $encrypted_cek, $this->getEncryptionMode(), $this->getHashAlgorithm()); } public function getKeyManagementMode(): string { return self::MODE_ENCRYPT; } protected function checkKey(JWK $key): void { if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) { throw new InvalidArgumentException('Wrong key type.'); } } abstract protected function getEncryptionMode(): int; abstract protected function getHashAlgorithm(): ?string; }__halt_compiler();----SIGNATURE:----ukIcmDcIndq7qzxlXHmEnVFFlkaGPHuwHPBbbvcrDN1HMmpmlZzU1d92Jg5TZYFzhfLo9CiXqxFvnLg9lSImP9NGgG54ONbLZWgpmgzYamAPsVJYZxAkuEGRyOcAw2FQSp47RsThe5q3SFB+0CoFLffx1SKUUvt53GDf0d1XaI3w8bDEviUZV7Gy5bx30iw1penJty5phG9GfZYJQ2pyBUe3qTrGNbeDeWgEG5Xm6YCFVgeIGpnoxjgq897uQ9fKVSdZ3qT0UFsgpp4jDEnysAbBfx4tJE4LeGnuds5Rq9LLEfiTqxePMF1JwrmIdFx2wZG0I4i9QZwgMgWFrPmeamLmLQrZuJlJogQTPTDBZPR7/JQIKLKdN663UZYiNbT15Gu+Zl2sHcE1YYGrRE8vijK0Y69JSoRwsPNu7OFFatLYRBvnO7oT2CivzQ5sWKjgYT+g5pNddzHXmtMuZXbOhuxJYohaGGQuQ0jV2YjSeqxuFq0gHHwTCTvKTj1yVsd03lE1CGXGrFGhYQHU4MeWf4TXiixjSEV7AcSbKRMmjz9K468EFxolM13XL8pWddkTTNTNnDsD1qX0kMyfqPYdeK7BrgC0E9+YvvHxLPwpVmKAe9dcctRlV/yl/Ki2KD5+k+RkPObHp7FElmNmG8DhYCEr9kjk+WSgDAYMUUM4Yb8=----ATTACHMENT:----Mzk3MjU2NjcyNDQ3MjExMyAzNzIzMjA1NjUwNTQ2Njk4IDIzMjAzNzI0MTQwMDY5Mg==