UNPKG

node-ciphers

Version:

Lightweight AES and DES encryption library for Node.js, featuring flexible encoding, multiple cipher modes, and TypeScript support.

1 lines 3.87 kB
{"version":3,"file":"encrypt-and-decrypt.mjs","sources":["../../../src/aes/base/encrypt-and-decrypt.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { BinaryLike } from 'node:crypto';\nimport type { TransformOptions } from 'node:stream';\n\nimport type {\n AesCipherEncodingOptions,\n BaseEncryptResult,\n Result,\n} from '../../types';\n\nimport { BaseAesCipher } from './';\n\nexport abstract class BaseAesEncryptAndDecrypt extends BaseAesCipher {\n decrypt(\n encryptedData: BinaryLike,\n iv: BinaryLike,\n encodingOptions?: AesCipherEncodingOptions.Decrypt,\n decipherOptions?: TransformOptions,\n ): Result<string> {\n try {\n const decipher = this.createDecipher(\n this.dataToBuffer(iv, encodingOptions?.iv || this.encodingOptions.iv),\n decipherOptions,\n );\n\n return this.createOkResult(this.getDecipherResult(decipher, encryptedData, encodingOptions));\n } catch (error) {\n return this.createErrorResult(error);\n }\n }\n\n decryptToJson<T = any>(\n encryptedData: BinaryLike,\n iv: BinaryLike,\n encodingOptions?: AesCipherEncodingOptions.Decrypt,\n decipherOptions?: TransformOptions,\n ): Result<T> {\n const result = this.decrypt(encryptedData, iv, encodingOptions, decipherOptions);\n if (!result.ok) return result;\n return this.parseJson<T>(result.value);\n }\n\n encrypt(\n data: BinaryLike,\n encodingOptions?: AesCipherEncodingOptions.Encrypt,\n cipherOptions?: TransformOptions,\n ): BaseEncryptResult {\n const iv = randomBytes(16);\n try {\n return this.createOkResult({\n data: this.getCipherResult(this.createCipher(iv, cipherOptions), data, encodingOptions),\n iv: iv.toString(encodingOptions?.iv || this.encodingOptions.iv),\n });\n } catch (error) {\n return this.createErrorResult(error);\n }\n }\n\n encryptJson(\n data: any,\n encodingOptions?: AesCipherEncodingOptions.Encrypt,\n cipherOptions?: TransformOptions,\n ): BaseEncryptResult {\n try {\n return this.encrypt(JSON.stringify(data), encodingOptions, cipherOptions);\n } catch (error) {\n return this.createErrorResult(error);\n }\n }\n}\n"],"names":[],"mappings":";;;AAYM,MAAgB,wBAAyB,SAAQ,aAAa,CAAA;AAChE,IAAA,OAAO,CACH,aAAyB,EACzB,EAAc,EACd,eAAkD,EAClD,eAAkC,EAAA;AAElC,QAAA,IAAI;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAChC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EACrE,eAAe,CAClB;AAED,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAChG;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACxC;IACJ;AAEA,IAAA,aAAa,CACT,aAAyB,EACzB,EAAc,EACd,eAAkD,EAClD,eAAkC,EAAA;AAElC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,EAAE;AAAE,YAAA,OAAO,MAAM;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAI,MAAM,CAAC,KAAK,CAAC;IAC1C;AAEA,IAAA,OAAO,CACH,IAAgB,EAChB,eAAkD,EAClD,aAAgC,EAAA;AAEhC,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI;YACA,OAAO,IAAI,CAAC,cAAc,CAAC;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC;AACvF,gBAAA,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAClE,aAAA,CAAC;QACN;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACxC;IACJ;AAEA,IAAA,WAAW,CACP,IAAS,EACT,eAAkD,EAClD,aAAgC,EAAA;AAEhC,QAAA,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC;QAC7E;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACxC;IACJ;AACH;;;;"}