Невозможно расшифровать с помощью google kms typcript/node, получая результаты emtpy
Любая помощь в этом была бы признательна:). Я пытаюсь создать функцию Firebase для расшифровки данных с помощью Google KMS. По какой-то причине я не могу успешно расшифровать данные, я просто получаю пустой буфер в качестве ответа. Вот мой код
app.post('/', (req, res) => {
var testToken = Buffer.from("test-token").toString('base64')
console.log("access token:" + testToken )
client.encrypt({name, testToken })
.then(responses => {
const response = responses[0];
//TRIED THIS
//const ciphertext = response.ciphertext
//AND THIS
const ciphertext = response.ciphertext.toString('base64')
console.log(ciphertext)
client.decrypt({name, ciphertext})
.then(responses2 => {
console.log(responses2);
console.log(Buffer.from(responses2[0].plaintext, 'base64').toString("utf8"))
return res.status(200).send({"status": "succes"})
})
.catch(err => {
console.log(err);
return res.status(400).send({"status": "error"})
});
})
.catch(err => {
console.log(err);
return res.status(400).send({"status": "error"})
});
});
Вот журналы, которые я печатаю
info: access token:dGVzdC10b2tlbg==
info: CiQAoYg0TZ0KIurHuDKRxNt5tBm+bWv94gjCRqJbzi/d8ZGk7k8SIQBZ//kUwUOpsnFquNYyxrd5w6YmUMlGupghjUsjf94G9g==
info: [ { plaintext: <Buffer > }, undefined, undefined ]
Я хотел бы сделать эту работу без необходимости каких-либо временных файлов. Заранее спасибо!
1 ответ
Я обнаружил проблему.. в случае, если кто-то еще столкнется с этим, проблема со вторым аргументом метода шифрования, он должен быть назван открытым текстом, как это
client.encrypt({name, plaintext})
Похоже, что kms шифровал пустое значение, потому что не было открытого текста, поэтому в момент расшифровки он также возвращал пустое значение.
Я думаю, что было бы полезно добавить какое-то предупреждение или исключение на уровне API.