{
  "version": 3,
  "sources": ["../../src/sodium/aes.ts"],
  "sourcesContent": ["import libsodium from 'libsodium-wrappers'\nimport * as u from 'uint8arrays'\nimport {\n    toString,\n    joinBufs,\n    randomBuf,\n    fromString\n} from '../util.js'\n\nexport async function create ():Promise<string>\nexport async function create (opts:{\n    format:'raw'\n}):Promise<Uint8Array>\n\n/**\n * Create a new AES key.\n *\n * @see {@link https://libsodium.gitbook.io/doc/secret-key_cryptography/aead/aes-256-gcm#warning sodium docs}\n * @param opts Can pass in the `format` for the return value.\n * @returns A new key.\n */\nexport async function create (opts:{\n    format: 'string'|'raw'\n} = { format: 'string' }):Promise<Uint8Array|string> {\n    await libsodium.ready\n    const sodium = libsodium\n    const arr = sodium.crypto_aead_aegis256_keygen()\n\n    if (opts.format === 'string') {\n        return toString(arr)\n    }\n\n    return arr\n}\n\nexport async function encrypt (\n    msg:Uint8Array|string,\n    key:Uint8Array|string,\n):Promise<string>\n\nexport async function encrypt (\n    msg:Uint8Array|string,\n    key:Uint8Array|string,\n    opts:{ format: 'raw' }\n):Promise<Uint8Array>\n\n/**\n * Encrypt the given string with the given key.\n */\nexport async function encrypt (\n    msg:Uint8Array|string,\n    key:Uint8Array|string,\n    opts:Partial<{\n        iv?:Uint8Array\n        format?:'string'|'raw'\n    }> = { format: 'string' },\n):Promise<Uint8Array|string> {\n    await libsodium.ready\n    const sodium = libsodium\n\n    const data = (typeof msg === 'string' ?\n        u.fromString(msg) :\n        msg\n    )\n\n    const importedKey = (typeof key === 'string' ?\n        fromString(key) :\n        key)\n\n    const pubNonce = opts?.iv || randomBuf(sodium.crypto_aead_aegis256_NPUBBYTES)\n    const cipherBuf = sodium.crypto_aead_aegis256_encrypt(\n        data,\n        null,\n        null,\n        pubNonce,\n        importedKey\n    )\n\n    const joined = joinBufs(pubNonce, cipherBuf)\n\n    if (opts.format === 'string') {\n        return toString(joined)\n    }\n\n    return joined\n}\n\nexport async function decrypt (\n    cipherText:string|Uint8Array,\n    key:string|Uint8Array,\n    opts:{ format:'raw' }\n):Promise<Uint8Array>\n\nexport async function decrypt (\n    cipherText:string|Uint8Array,\n    key:string|Uint8Array,\n):Promise<string>\n\nexport async function decrypt (\n    cipherText:string|Uint8Array,\n    key:string|Uint8Array,\n    opts:{ format:'string'|'raw' } = { format: 'string' }\n):Promise<Uint8Array|string> {\n    await libsodium.ready\n    const sodium = libsodium\n    const keyBuf = (typeof key === 'string' ? fromString(key) : key)\n    const cipherTextBuf = (typeof cipherText === 'string' ?\n        fromString(cipherText) :\n        cipherText)\n\n    const nonceSize = sodium.crypto_aead_aegis256_NPUBBYTES\n    const pubNonce = cipherTextBuf.slice(0, nonceSize)\n    const cipherBytes = cipherTextBuf.slice(nonceSize)\n    const dec = sodium.crypto_aead_aegis256_decrypt(\n        null,\n        cipherBytes,\n        null,\n        pubNonce,\n        keyBuf,\n    )\n\n    if (opts.format === 'string') {\n        return u.toString(dec)\n    }\n\n    return dec\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAsB;AACtB,QAAmB;AACnB,kBAKO;AAcP,eAAsB,OAAQ,OAE1B,EAAE,QAAQ,SAAS,GAA8B;AACjD,QAAM,0BAAAA,QAAU;AAChB,QAAM,SAAS,0BAAAA;AACf,QAAM,MAAM,OAAO,4BAA4B;AAE/C,MAAI,KAAK,WAAW,UAAU;AAC1B,eAAO,sBAAS,GAAG;AAAA,EACvB;AAEA,SAAO;AACX;AAZsB;AA4BtB,eAAsB,QAClB,KACA,KACA,OAGK,EAAE,QAAQ,SAAS,GACC;AACzB,QAAM,0BAAAA,QAAU;AAChB,QAAM,SAAS,0BAAAA;AAEf,QAAM,OAAQ,OAAO,QAAQ,WACzB,EAAE,WAAW,GAAG,IAChB;AAGJ,QAAM,cAAe,OAAO,QAAQ,eAChC,wBAAW,GAAG,IACd;AAEJ,QAAM,WAAW,MAAM,UAAM,uBAAU,OAAO,8BAA8B;AAC5E,QAAM,YAAY,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,aAAS,sBAAS,UAAU,SAAS;AAE3C,MAAI,KAAK,WAAW,UAAU;AAC1B,eAAO,sBAAS,MAAM;AAAA,EAC1B;AAEA,SAAO;AACX;AApCsB;AAiDtB,eAAsB,QAClB,YACA,KACA,OAAiC,EAAE,QAAQ,SAAS,GAC3B;AACzB,QAAM,0BAAAA,QAAU;AAChB,QAAM,SAAS,0BAAAA;AACf,QAAM,SAAU,OAAO,QAAQ,eAAW,wBAAW,GAAG,IAAI;AAC5D,QAAM,gBAAiB,OAAO,eAAe,eACzC,wBAAW,UAAU,IACrB;AAEJ,QAAM,YAAY,OAAO;AACzB,QAAM,WAAW,cAAc,MAAM,GAAG,SAAS;AACjD,QAAM,cAAc,cAAc,MAAM,SAAS;AACjD,QAAM,MAAM,OAAO;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,MAAI,KAAK,WAAW,UAAU;AAC1B,WAAO,EAAE,SAAS,GAAG;AAAA,EACzB;AAEA,SAAO;AACX;AA5BsB;",
  "names": ["libsodium"]
}
