getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad); if ($result === false) { throw new RuntimeException('Unable to encrypt the content'); } return $result; } #[Override] public function decryptContent( string $data, string $cek, string $iv, ?string $aad, string $encoded_protected_header, string $tag ): string { $calculated_aad = $encoded_protected_header; if ($aad !== null) { $calculated_aad .= '.' . Base64UrlSafe::encodeUnpadded($aad); } $result = openssl_decrypt($data, $this->getMode(), $cek, OPENSSL_RAW_DATA, $iv, $tag, $calculated_aad); if ($result === false) { throw new RuntimeException('Unable to decrypt the content'); } return $result; } #[Override] public function getIVSize(): int { return 96; } abstract protected function getMode(): string; }