{"version":3,"file":"noble.cjs","names":["deriveSyncKey","arrayBufferToBase64","concat","encoder","split","base64ToArrayBuffer","decoder"],"sources":["../../src/utils/noble.ts"],"sourcesContent":["import { gcm, cbc, ctr } from '@noble/ciphers/aes.js';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\n\nimport {\n  arrayBufferToBase64,\n  base64ToArrayBuffer,\n  concat,\n  split,\n} from './base64-buffer';\nimport { deriveSyncKey, encoder, decoder } from './pbkdf2';\n\nimport type { EncryptAlgorithms, SyncEncryptation } from '@/@types';\nimport type { Cipher, CipherWithOutput, TArg } from '@noble/ciphers/utils.js';\n\ninterface AlgorithmType {\n  ivLength: number;\n  create: (key: Uint8Array, iv: Uint8Array) => Cipher | CipherWithOutput;\n}\n\ntype AlgorithmInterface = Record<EncryptAlgorithms, AlgorithmType>;\n\nconst algorithms: AlgorithmInterface = {\n  'AES-GCM': {\n    ivLength: 12,\n    create: (key: Uint8Array, iv: Uint8Array) => gcm(key, iv),\n  },\n\n  'AES-CBC': {\n    ivLength: 16,\n    create: (key: Uint8Array, iv: Uint8Array) => cbc(key, iv),\n  },\n\n  'AES-CTR': {\n    ivLength: 16,\n    create: (key: Uint8Array, iv: Uint8Array) => ctr(key, iv),\n  },\n};\n\nexport function getSyncEncryptation(\n  encryptationAlgorithm: EncryptAlgorithms,\n  secretKey: string,\n): SyncEncryptation {\n  const key = deriveSyncKey(secretKey);\n  const config = algorithms[encryptationAlgorithm];\n\n  return {\n    encrypt(value: string): string {\n      const iv = globalThis.crypto.getRandomValues(\n        new Uint8Array(config.ivLength),\n      );\n\n      const cipher = config.create(key, iv).encrypt(encoder.encode(value));\n\n      return arrayBufferToBase64(concat(iv, cipher));\n    },\n    decrypt(value: string): string {\n      const payload = base64ToArrayBuffer(value);\n\n      const { iv, cipher } = split(payload, config.ivLength);\n\n      const decrypted = config.create(key, iv).decrypt(cipher);\n\n      return decoder.decode(decrypted);\n    },\n  };\n}\n\nexport function hashSyncNobleSHA256(value: string, secret: string): string {\n  const key = deriveSyncKey(secret);\n  const payload = new Uint8Array(concat(key, encoder.encode(value)));\n  const hashedValue = bytesToHex(\n    sha256(payload as TArg<Uint8Array<ArrayBufferLike>>),\n  );\n\n  return hashedValue;\n}\n"],"mappings":"+KAsBA,MAAM,EAAiC,CACrC,UAAW,CACT,SAAU,GACV,QAAS,EAAiB,KAAA,EAAA,EAAA,IAAA,CAAuB,EAAK,CAAE,CAC1D,EAEA,UAAW,CACT,SAAU,GACV,QAAS,EAAiB,KAAA,EAAA,EAAA,IAAA,CAAuB,EAAK,CAAE,CAC1D,EAEA,UAAW,CACT,SAAU,GACV,QAAS,EAAiB,KAAA,EAAA,EAAA,IAAA,CAAuB,EAAK,CAAE,CAC1D,CACF,EAEA,SAAgB,EACd,EACA,EACkB,CAClB,IAAM,EAAMA,EAAAA,cAAc,CAAS,EAC7B,EAAS,EAAW,GAE1B,MAAO,CACL,QAAQ,EAAuB,CAC7B,IAAM,EAAK,WAAW,OAAO,gBAC3B,IAAI,WAAW,EAAO,QAAQ,CAChC,EAIA,OAAOC,EAAAA,oBAAoBC,EAAAA,OAAO,EAFnB,EAAO,OAAO,EAAK,CAAE,CAAC,CAAC,QAAQC,EAAAA,QAAQ,OAAO,CAAK,CAEvB,CAAC,CAAC,CAC/C,EACA,QAAQ,EAAuB,CAG7B,GAAM,CAAE,KAAI,UAAWC,EAAAA,MAFPC,EAAAA,oBAAoB,CAED,EAAG,EAAO,QAAQ,EAE/C,EAAY,EAAO,OAAO,EAAK,CAAE,CAAC,CAAC,QAAQ,CAAM,EAEvD,OAAOC,EAAAA,QAAQ,OAAO,CAAS,CACjC,CACF,CACF,CAEA,SAAgB,EAAoB,EAAe,EAAwB,CACzE,IAAM,EAAMN,EAAAA,cAAc,CAAM,EAMhC,OAAA,EAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,CAHS,IAFW,WAAWE,EAAAA,OAAO,EAAKC,EAAAA,QAAQ,OAAO,CAAK,CAAC,CAEjD,CAAsC,CAGpC,CACnB"}