import type { EncryptionConfig } from '../types'; /** * EncryptionHelper - Clase responsable de todas las operaciones criptográficas * Implementa AES-256-GCM con derivación de claves PBKDF2 y fingerprinting del navegador */ export declare class EncryptionHelper { private static readonly ALGORITHM; private static readonly HASH_ALGORITHM; private static readonly SALT_STORAGE_KEY; private static readonly KEY_VERSION_KEY; private readonly config; private key; private baseKey; private baseKeyPromise; private keyVersion; private keyNameCache; constructor(config?: EncryptionConfig); /** * Get current key version */ getKeyVersion(): number; /** * Genera un fingerprint único del navegador * Combina múltiples características del navegador para crear una huella digital */ private generateBaseKey; /** * Hashea un string usando SHA-256 * @param str - String a hashear * @returns Hash hexadecimal */ private hashString; /** * Deriva una clave criptográfica usando PBKDF2 * @param password - Password base (fingerprint) * @param salt - Salt aleatorio * @returns CryptoKey para AES-GCM */ private deriveKey; /** * Inicializa el sistema de encriptación generando un nuevo salt */ initialize(): Promise; /** * Inicializa desde un salt almacenado previamente */ initializeFromStored(): Promise; /** * Encripta un texto plano usando AES-256-GCM * @param plaintext - Texto a encriptar * @returns Texto encriptado en Base64 (IV + datos encriptados) */ encrypt(plaintext: string): Promise; /** * Desencripta un texto encriptado * @param ciphertext - Texto encriptado en Base64 * @returns Texto plano */ decrypt(ciphertext: string): Promise; /** * Encripta el nombre de una clave para ofuscar nombres en localStorage * @param keyName - Nombre original de la clave * @returns Nombre encriptado con prefijo __enc_ */ encryptKey(keyName: string): Promise; /** * Limpia todos los datos encriptados del localStorage */ clearEncryptedData(): void; /** * Verifica si el navegador soporta Web Crypto API */ static isSupported(): boolean; private arrayBufferToBase64; private base64ToArrayBuffer; private arrayBufferToHex; }