// packages/core/src/utils/secure-memory.ts // Zero Data Retention (ZDR) & Biometric Audio Memory Wiper // 음성 바이오메트릭 데이터 메모리 상주 방지 — 처리 완료/취소/에러 시 오디오 버퍼 0으로 즉시 초기화 /** * Node.js Buffer 또는 Uint8Array의 메모리를 0으로 즉시 덮어씀 (Zero-fill) */ export function secureZeroBuffer(buffer: Buffer | Uint8Array | null | undefined): void { if (!buffer) return try { if (typeof buffer.fill === 'function') { buffer.fill(0) } else { for (let i = 0; i < buffer.length; i++) { buffer[i] = 0 } } } catch { // Silent guard against detached buffers } } /** * Float32Array PCM 오디오 청크 배열을 메모리에서 안전하게 폐기 */ export function secureZeroFloat32Array(array: Float32Array | null | undefined): void { if (!array) return try { array.fill(0) } catch { // Silent guard } } /** * 여러 개의 오디오 청크 리스트를 일괄 폐기 (Zero-trace) */ export function secureWipeAudioChunks(chunks: Array | null | undefined): void { if (!chunks || !Array.isArray(chunks)) return for (const chunk of chunks) { if (chunk instanceof Float32Array) { secureZeroFloat32Array(chunk) } else { secureZeroBuffer(chunk) } } chunks.length = 0 }