UNPKG

e2ee-adapter

Version:

Plug-and-play End-to-End Encryption middleware for Express.js and NestJS using hybrid AES-CBC + RSA encryption with secure key exchange

75 lines 3.42 kB
import { Request } from 'express'; import { E2EEConfig, DecryptedData, E2EEError } from '../types'; export interface E2EECommonOptions { config: Required<E2EEConfig>; createError: (message: string, code: string, statusCode?: number) => E2EEError; } export interface E2EEContext { decryptedData: DecryptedData; originalBody: any; aesKey: Buffer; iv: Buffer; } export interface RequestProcessingResult { shouldContinue: boolean; e2eeContext?: E2EEContext; } /** * Check if request should be processed by E2EE */ export declare function shouldProcessRequest(req: Request, config: Required<E2EEConfig>): boolean; /** * Check if request has encryption headers */ export declare function hasEncryptionHeaders(req: Request, config: Required<E2EEConfig>): boolean; /** * Get key pair for a specific keyId */ export declare function getKeyPair(keyId: string, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError): { privateKey: string; publicKey: string; }; /** * Extract AES key from headers for response encryption (without decryption) */ export declare function extractAESKeyFromHeaders(req: Request, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError): Promise<{ aesKey: Buffer; iv: Buffer; }>; /** * Decrypt request using headers */ export declare function decryptRequest(req: Request, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError): Promise<DecryptedData>; /** * Encrypt response data */ export declare function encryptResponse(data: any, aesKey: Buffer, iv: Buffer, createError: (message: string, code: string, statusCode?: number) => E2EEError): Promise<string>; /** * Merge configuration with defaults */ export declare function mergeConfigWithDefaults(config: E2EEConfig): Required<E2EEConfig>; /** * Validate configuration */ export declare function validateConfig(config: E2EEConfig): void; /** * Create E2EE error with consistent structure */ export declare function createE2EEError(message: string, code: string, statusCode?: number): E2EEError; /** * Process request and determine if it should be handled by E2EE */ export declare function processRequest(req: Request, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError): RequestProcessingResult; /** * Handle request decryption and setup encryption context */ export declare function handleRequestDecryption(req: Request, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError, onDecrypt?: (decryptedData: DecryptedData, req: Request) => void): Promise<E2EEContext | undefined>; /** * Setup encryption context for response-only encryption */ export declare function setupResponseEncryptionContext(req: Request, config: Required<E2EEConfig>, createError: (message: string, code: string, statusCode?: number) => E2EEError): Promise<E2EEContext>; /** * Handle response encryption with consistent error handling */ export declare function handleResponseEncryption(data: any, e2eeContext: E2EEContext, createError: (message: string, code: string, statusCode?: number) => E2EEError, onEncrypt?: (encryptedData: any, res: any) => void, res?: any): Promise<string>; //# sourceMappingURL=e2ee-common.d.ts.map