{"version":3,"file":"gcm.cjs","sources":["../../../../../../src/mods/serializers/crypto/aes/gcm.ts"],"sourcesContent":["import { Base64 } from \"@hazae41/base64\";\nimport { Bytes } from \"@hazae41/bytes\";\nexport class AesGcmCoder {\n    key;\n    constructor(key) {\n        this.key = key;\n    }\n    /**\n     * @deprecated\n     * @param pbkdf2\n     * @param salt\n     * @param iterations\n     * @returns\n     */\n    static async fromPBKDF2(pbkdf2, salt, iterations) {\n        const key = await crypto.subtle.deriveKey({\n            name: \"PBKDF2\",\n            salt: salt,\n            iterations: iterations,\n            hash: \"SHA-256\"\n        }, pbkdf2, { name: \"AES-GCM\", length: 256 }, false, [\"encrypt\", \"decrypt\"]);\n        return new AesGcmCoder(key);\n    }\n    async encrypt(plain, iv) {\n        return new Uint8Array(await crypto.subtle.encrypt({ name: \"AES-GCM\", iv }, this.key, plain));\n    }\n    async stringify(input) {\n        const iv = Bytes.random(12);\n        const ivtext = Base64.get().tryEncodePadded(iv).unwrap();\n        const plain = Bytes.fromUtf8(input);\n        const cipher = await this.encrypt(plain, iv);\n        const ciphertext = Base64.get().tryEncodePadded(cipher).unwrap();\n        return ivtext + \".\" + ciphertext;\n    }\n    async decrypt(cipher, iv) {\n        return new Uint8Array(await crypto.subtle.decrypt({ name: \"AES-GCM\", iv }, this.key, cipher));\n    }\n    async parse(output) {\n        const [ivtext, ciphertext] = output.split(\".\");\n        const iv = Base64.get().tryDecodePadded(ivtext).unwrap().copyAndDispose();\n        const cipher = Base64.get().tryDecodePadded(ciphertext).unwrap().copyAndDispose();\n        const plain = await this.decrypt(cipher, iv);\n        const input = Bytes.toUtf8(plain);\n        return input;\n    }\n}\n//# sourceMappingURL=gcm.js.map"],"names":["Bytes","Base64"],"mappings":";;;;;AAEO,MAAM,WAAW,CAAC;AACzB,IAAI,GAAG,CAAC;AACR,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;AACtD,QAAQ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAClD,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,UAAU,EAAE,UAAU;AAClC,YAAY,IAAI,EAAE,SAAS;AAC3B,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACpF,QAAQ,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE;AAC7B,QAAQ,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACrG,KAAK;AACL,IAAI,MAAM,SAAS,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,EAAE,GAAGA,WAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,MAAM,GAAGC,aAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACjE,QAAQ,MAAM,KAAK,GAAGD,WAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrD,QAAQ,MAAM,UAAU,GAAGC,aAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AACzE,QAAQ,OAAO,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE;AAC9B,QAAQ,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvD,QAAQ,MAAM,EAAE,GAAGA,aAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;AAClF,QAAQ,MAAM,MAAM,GAAGA,aAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;AAC1F,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrD,QAAQ,MAAM,KAAK,GAAGD,WAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;;;;"}