node-ciphers
Version:
Lightweight AES and DES encryption library for Node.js, featuring flexible encoding, multiple cipher modes, and TypeScript support.
52 lines (48 loc) • 1.72 kB
JavaScript
'use strict';
const node_buffer = require('node:buffer');
const constants = require('./constants.cjs');
class BaseCipher {
#encodingOptions;
constructor(encodingOptions) {
this.#encodingOptions = {
...constants.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' ? node_buffer.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);
}
}
}
exports.BaseCipher = BaseCipher;
//# sourceMappingURL=base.cjs.map