-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.js
More file actions
87 lines (76 loc) · 2.8 KB
/
Copy pathindex.js
File metadata and controls
87 lines (76 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'use strict';
var KMSAPI = require('./lib/kms');
var chalk = require('chalk');
var _ = require('lodash');
var util = require('util');
var debuglog = util.debuglog('KMSCLI');
var inputFile = require('./lib/file-input');
var KMSCLI = function(input, flags) {
var keyId, plainText, kmsapi, b64Text, cipherText, file, input_json;
debuglog(chalk.yellow('input: %j'), input);
debuglog(chalk.magenta('flags: %j'), flags);
keyId = flags.k || flags.keyId;
plainText = flags.pt || flags.plainText;
b64Text = flags.ct || flags.cipherText;
file = flags.file;
kmsapi = new KMSAPI();
function encrypt(keyId, plainText) {
kmsapi = new KMSAPI(); // for new input as file, needed to reset for profile & region info on file;
kmsapi.encrypt(keyId, plainText)
.then(function(result) {
// console.log(chalk.green('Cipher text:\n %s'), result);
console.log(chalk.green(result));
})
.fail(function(err) {
console.log(chalk.red('Error:\n %j', err));
});
}
if (input[0] === 'encrypt') {
if (keyId && plainText) {
encrypt(keyId, plainText);
} else if (file) {
inputFile(file, function(err, json) {
if (err) {
console.log(chalk.red('Error:\n %j', err));
process.exit(1);
} else {
if (json.awsRegion) {
process.env.AWS_REGION = json.awsRegion;
}
if (json.awsProfile) {
process.env.AWS_PROFILE = json.awsProfile;
}
keyId = json.keyId;
plainText = json.plainText;
encrypt(keyId, plainText);
}
})
} else {
console.log('For encryption, a key id and a plain text required');
process.exit(1);
}
} else if (input[0] === 'describe') {
if (keyId) {
kmsapi.describeKey(keyId);
} else {
console.log('For key description a key id is required');
process.exit(1);
}
} else if (input[0] === 'decrypt') {
if (b64Text) {
cipherText = new Buffer(b64Text, 'base64');
kmsapi.decrypt(cipherText)
.then(function(result) {
// console.log(chalk.green('Decrypted secret:\n %s'), result);
console.log(chalk.green(result));
})
.fail(function(err) {
console.log(chalk.red('Error:\n %j'), err);
});
} else {
console.log(chalk.red('For decryption, cipher text is required'));
process.exit(1);
}
}
};
module.exports = KMSCLI;