UNPKG

node-ciphers

Version:

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

50 lines (47 loc) 1.68 kB
import { Buffer } from 'node:buffer'; import { defaultEncodingOptions } from './constants.mjs'; class BaseCipher { #encodingOptions; constructor(encodingOptions) { this.#encodingOptions = { ...defaultEncodingOptions, ...encodingOptions, }; } get encodingOptions() { return this.#encodingOptions; } createErrorResult(error) { return { error: error, ok: false, }; } createOkResult(value) { return { ok: true, value: value, }; } dataToBuffer(data, encoding) { return typeof data === 'string' ? Buffer.from(data, encoding) : data; } getCipherResult(cipher, data, encodingOptions) { const outputEncoding = encodingOptions?.encryptOutput || this.#encodingOptions.encryptOutput; return cipher.update(this.dataToBuffer(data, encodingOptions?.encryptInput || this.#encodingOptions.encryptInput), undefined, outputEncoding) + cipher.final(outputEncoding); } getDecipherResult(decipher, encryptedData, encodingOptions) { const outputEncoding = encodingOptions?.decryptOutput || this.#encodingOptions.decryptOutput; return decipher.update(this.dataToBuffer(encryptedData, encodingOptions?.decryptInput || this.#encodingOptions.decryptInput), undefined, outputEncoding) + decipher.final(outputEncoding); } parseJson(data) { try { return this.createOkResult(JSON.parse(data)); } catch (error) { return this.createErrorResult(error); } } } export { BaseCipher }; //# sourceMappingURL=base.mjs.map