UNPKG

@polgubau/utils

Version:

A collection of utility functions for TypeScript

69 lines 2.31 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var encryption_exports = {}; __export(encryption_exports, { decrypt: () => decrypt, encrypt: () => encrypt }); module.exports = __toCommonJS(encryption_exports); const encoder = new TextEncoder(); const decoder = new TextDecoder(); async function getKey(key) { const keyBytes = encoder.encode(key); if (keyBytes.length < 32) { throw new Error("Key must be at least 32 characters long"); } return await crypto.subtle.importKey( "raw", keyBytes.slice(0, 32), // Forzamos a 256 bits (32 bytes) { name: "AES-GCM" }, false, ["encrypt", "decrypt"] ); } async function encrypt(text, key) { const keyMaterial = await getKey(key); const iv = crypto.getRandomValues(new Uint8Array(12)); const encrypted = await crypto.subtle.encrypt( { name: "AES-GCM", iv }, keyMaterial, encoder.encode(text) ); const buffer = new Uint8Array([...iv, ...new Uint8Array(encrypted)]); return btoa(String.fromCharCode(...buffer)); } async function decrypt(encryptedText, key) { const keyMaterial = await getKey(key); const data = Uint8Array.from(atob(encryptedText), (c) => c.charCodeAt(0)); const iv = data.slice(0, 12); const encryptedData = data.slice(12); const decrypted = await crypto.subtle.decrypt( { name: "AES-GCM", iv }, keyMaterial, encryptedData ); return decoder.decode(decrypted); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { decrypt, encrypt }); //# sourceMappingURL=encryption.js.map