quantique-converter
Version:
Converters for all kind of data
86 lines (76 loc) • 2.15 kB
JavaScript
// AES Encryption
const Crypto = require('crypto-js');
const convertTob64 = require('./convertTob64');
const convertAes256 = (value, parameters = {}) => {
try {
const defaultParameters = {
purpose: 'enc',
isParsed: true,
skey: '',
...parameters,
};
if (defaultParameters?.purpose === 'enc') {
const monkeyStr = JSON.stringify(value);
const monkenc = Crypto.AES.encrypt(
monkeyStr || '',
defaultParameters?.skey
).toString();
const monkeyb64 = convertTob64(monkenc)?.isValid
? convertTob64(monkenc)?.convertedValue
: null;
return monkeyb64
? {
isValid: true,
error: '',
convertedValue: monkeyb64,
}
: {
isValid: false,
error: 'Unable to Encrypt',
convertedValue: null,
};
}
if (defaultParameters?.purpose === 'dec') {
const monkeydec = convertTob64(value, { purpose: 'dec' })?.isValid
? convertTob64(value, { purpose: 'dec' })?.convertedValue
: null;
if (monkeydec) {
if (defaultParameters?.isParsed) {
const monkeyorg = JSON.parse(
Crypto.AES.decrypt(monkeydec, defaultParameters?.skey).toString(
Crypto.enc.Utf8
)
);
return {
isValid: true,
error: '',
convertedValue: monkeyorg,
};
} else {
const monkeyorg = Crypto.AES.decrypt(
monkeydec,
defaultParameters?.skey
).toString(Crypto.enc.Utf8);
return {
isValid: true,
error: '',
convertedValue: monkeyorg,
};
}
} else {
return {
isValid: false,
error: 'Unable to Decrypt',
convertedValue: null,
};
}
}
} catch (e) {
return {
isValid: false,
error: 'Unable to Decrypt',
convertedValue: null,
};
}
};
module.exports = convertAes256;