无法使用Google kms打字稿/节点解密,得到空结果

时间:2019-02-15 03:09:48

标签: google-cloud-platform google-cloud-kms

对此的任何帮助将不胜感激:)。我正在尝试创建一个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 个答案:

答案 0 :(得分:0)

我发现了问题..万一有人碰到这个问题,问题在于加密方法的第二个参数,它必须像这样命名为纯文本

client.encrypt({name, plaintext})

因此,由于不存在明文,因此kms似乎正在加密空值,因此在解密时,它也返回了空值。

我认为在api级别添加某种警告或异常会很有用。