UNPKG

@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
"use strict"; 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;