3

状況:

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), "
          }
        ]
      }
    ]
  }
}
4

1 に答える 1