using System.Threading; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Login; namespace FrameworkBLL.Promotion { // ============================================================ // IPromotionPackageCrypto — hybrid RSA+AES-GCM encryption for Metadata // Promotion's Tier 1 package transport (see the plan's Transport section). // Asymmetric so no shared secret is ever needed between environments that // may not even trust each other's network: the destination's public key // encrypts a random per-package AES-256 key, which does the actual bulk // encryption (RSA alone can't handle payloads larger than its key size). // ============================================================ public interface IPromotionPackageCrypto { /// Encrypts plaintext to the named destination's registered public key /// (MPROMOTIONCOUNTERPARTY). Throws if no active counterparty is registered for /// destinationEnvironmentCode. Task EncryptPackageAsync( byte[] plaintext, string destinationEnvironmentCode, LoginDTO login, CancellationToken ct); /// Decrypts a package using THIS deployment's own private key (Vault-stored, /// never accepted from any request). Throws if the package's format version is /// unrecognized or decryption fails (wrong key, tampered payload). Task DecryptPackageAsync(byte[] encryptedPackage, CancellationToken ct); } }