我在node6中有一个lambda函数,它有5个env变量,全部用aws kms加密。我有以下方法,它采用加密密钥并返回解密密钥。
guides
在我的处理程序中,我这样做是为了获取我的解密密钥。
function decryptKMS(encryptedKey) {
console.log('inside decryptkms');
const kms = new AWS.KMS();
kms.decrypt({ CiphertextBlob: new Buffer(encryptedKey, 'base64') }, (err, data) => {
if (err) {
console.log('Decrypt error:', err);
return callback(err);
}
var result = data.Plaintext.toString('ascii');
return result;
});
}
但是,由于节点是异步的,因此在解密密钥之前,该功能已移至下一步。无论如何我可以使用节点承诺来组合所有密钥,或者有没有办法从kms一次解密多个密钥?
答案 0 :(得分:7)
宣传您的String
并与 @TypeConverter
public static String fromStringSet(Set<String> strings) {
if (strings==null) {
return(null);
}
StringWriter result=new StringWriter();
JsonWriter json=new JsonWriter(result);
try {
json.beginArray();
for (String s : strings) {
json.value(s);
}
json.endArray();
json.close();
}
catch (IOException e) {
Log.e(TAG, "Exception creating JSON", e);
}
return(result.toString());
}
@TypeConverter
public static Set<String> toStringSet(String strings) {
if (strings==null) {
return(null);
}
StringReader reader=new StringReader(strings);
JsonReader json=new JsonReader(reader);
HashSet<String> result=new HashSet<>();
try {
json.beginArray();
while (json.hasNext()) {
result.add(json.nextString());
}
json.endArray();
}
catch (IOException e) {
Log.e(TAG, "Exception parsing JSON", e);
}
return(result);
}
decryptKMS