UNPKG

@hazae41/glacier

Version:

Yet another React data (re)fetching library

47 lines (43 loc) 1.88 kB
'use strict'; var tslib_es6 = require('../../../../../node_modules/tslib/tslib.es6.cjs'); var base64 = require('@hazae41/base64'); var bytes = require('@hazae41/bytes'); class AesGcmBicoder { key; constructor(key) { this.key = key; } async encryptOrThrow(plain, iv) { return new Uint8Array(await crypto.subtle.encrypt({ name: "AES-GCM", iv }, this.key, plain)); } async encodeOrThrow(input) { const ivBytes = bytes.Bytes.random(12); const ivBase64 = base64.Base64.get().getOrThrow().encodePaddedOrThrow(ivBytes); const plainBytes = bytes.Bytes.fromUtf8(input); const cipherBytes = await this.encryptOrThrow(plainBytes, ivBytes); const cipherBase64 = base64.Base64.get().getOrThrow().encodePaddedOrThrow(cipherBytes); return `${ivBase64}.${cipherBase64}`; } async decryptOrThrow(cipher, iv) { return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv }, this.key, cipher)); } async decodeOrThrow(output) { const env_1 = { stack: [], error: void 0, hasError: false }; try { const [ivBase64, cipherBase64] = output.split("."); const ivMemory = tslib_es6.__addDisposableResource(env_1, base64.Base64.get().getOrThrow().decodePaddedOrThrow(ivBase64), false); const cipherMemory = tslib_es6.__addDisposableResource(env_1, base64.Base64.get().getOrThrow().decodePaddedOrThrow(cipherBase64), false); const plainBytes = await this.decryptOrThrow(cipherMemory.bytes, ivMemory.bytes); return bytes.Bytes.toUtf8(plainBytes); } catch (e_1) { env_1.error = e_1; env_1.hasError = true; } finally { tslib_es6.__disposeResources(env_1); } } } exports.AesGcmBicoder = AesGcmBicoder; //# sourceMappingURL=gcm.cjs.map