@saleshandy/aws-kms-crypto
Version:
Package that lets you integrate AWS KMS seamlessly in your javascript project
62 lines (55 loc) • 1.3 kB
JavaScript
const AWS = require("aws-sdk");
class AWSKMSCrypto {
accessKeyId;
secretAccessKey;
region;
KeyId;
kmsClient;
constructor({ accessKeyId, secretAccessKey, region, keyId }) {
this.KeyId = keyId;
this.kmsClient = new AWS.KMS({
accessKeyId,
secretAccessKey,
region,
});
}
encrypt(plainText) {
return new Promise((resolve, reject) => {
this.kmsClient.encrypt(
{
KeyId: this.KeyId,
Plaintext: plainText,
},
(err, data) => {
if (err) {
reject(err + err.stack);
} else {
const { CiphertextBlob } = data;
const encryptedBase64data = CiphertextBlob.toString("base64");
resolve(encryptedBase64data);
}
}
);
});
}
decrypt(cipherText) {
const buf = Buffer.from(cipherText, "base64");
return new Promise((resolve, reject) => {
this.kmsClient.decrypt(
{
CiphertextBlob: buf,
KeyId: this.KeyId,
},
(err, data) => {
if (err) {
reject(err + err.stack);
} else {
const { Plaintext } = data;
resolve(Plaintext.toString());
}
}
);
});
}
}
module.exports = { AWSKMSCrypto };