状況:
Google クラウド バケットからデータをダウンロードして復号化しようとしています。
暗号化と復号化には、次を使用します。
https://cloud.google.com/kms/docs/quickstart#decrypt_data
悲しいことに、「'ciphertext' (TYPE_BYTES) の値が無効です」というエラーが表示されます。
暗号文が正しいことはわかっています。これは、Google KMS API が期待するデータのタイプに問題がある可能性があると思います。つまり、暗号化されたデータを取得するときに、POST リクエストを Google KMS API に送信する前にコードが何らかの形でタイプを変更しました。 .
私は何を間違えましたか、どうすれば修正できますか?
コード:
gcs.bucket(bucketName)
.file('mysecret.txt.encrypted.txt')
.download({ destination: 'mysecret.txt.encrypted.txt' })
.then(() => {
fs.readFile('mysecret.txt.encrypted.txt', (err, data) => {
if (err) throw err;
console.log("DATA: "+data);
var formData = {
ciphertext: data,
};
request.post({
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ...'
},
url: 'https://cloudkms.googleapis.com/v1/projects/kms-raimarketplace/locations/global/keyRings/.../cryptoKeys/...:decrypt',
form: formData
},
function (err, httpResponse, body) {
if (err) {
console.log("ERROR: "+err);
}
else {
console.log("BODY: "+body);
}
console.log(err, body);
});
});
}).catch(e => {
console.error('getEnv.js: There was an error: ${JSON.stringify(e, undefined, 2)}');
});
出力:
BODY: {
"error": {
"code": 400,
"message": "Invalid value at 'ciphertext' (TYPE_BYTES), ",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "ciphertext",
"description": "Invalid value at 'ciphertext' (TYPE_BYTES), "
}
]
}
]
}
}