@polgubau/utils
Version:
A collection of utility functions for TypeScript
69 lines • 2.31 kB
JavaScript
;
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