@akanass/rx-crypto
Version:
Crypto module provides some functions for security features like AES key, Key pair, RSA key, PKCS12, Certificate, PEM and more
34 lines (33 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decryptWithAesKey = void 0;
const rxjs_1 = require("rxjs");
const buffer_1 = require("buffer");
const crypto_1 = require("crypto");
const decryptWithAesKey = (data) => (source) => new rxjs_1.Observable((subscriber) => {
const subscription = source.subscribe({
next: (aesKey) => {
try {
const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', buffer_1.Buffer.from(aesKey.key, 'hex'), buffer_1.Buffer.from(aesKey.iv, 'hex'));
const bufDecrypted = decipher.update(buffer_1.Buffer.from(data));
const bufFinal = decipher.final();
let decrypted;
if (bufFinal) {
decrypted = buffer_1.Buffer.concat([bufDecrypted, bufFinal]);
}
else {
decrypted = bufDecrypted;
}
subscriber.next(decrypted);
subscriber.complete();
}
catch (e) {
subscriber.error(e);
}
},
error: (err) => subscriber.error(err),
complete: () => subscriber.complete()
});
return () => subscription.unsubscribe();
});
exports.decryptWithAesKey = decryptWithAesKey;