Код:
contents = encryptedWebhookSecret[0].toString();
console.log(typeof contents);
console.log(contents);
const formattedName = kmsClient.cryptoKeyPath(PROJECT, 'global', KEYRING, KEY);
const kmsDecryptRequest = {
name: formattedName,
ciphertext: contents //encryptedWebhookSecret
};
console.log("Decrypting webhook secret...");
return kmsClient.decrypt(kmsDecryptRequest);
encryptedWebhookSecret является результатом операции download () с использованием клиента @ google-cloud / storage.это возвращает [Buffer], который я приводил к строке.Я записываю зашифрованную строку, ее значение верное.Я могу загрузить зашифрованный секрет, используя gsutil
из командной строки, и gcloud kms decrypt
работает нормально.
Похоже, эта ошибка говорит о том, что строка неправильно закодирована (не должно ли быть utf8?).
Значения PROJECT, KEYRING и KEY проверены дважды и трижды и являются правильными.
Ошибка:
ERROR: Error: invalid encoding at Error (native) at Object.decode (/user_code/node_modules/@google-cloud/kms/node_modules/@protobufjs/base64/index.js:105:19) at Type.DecryptRequest$fromObject [as fromObject] (eval at Codegen (/user_code/node_modules/@google-cloud/kms/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:12:15) at Type.fromObject (/user_code/node_modules/@google-cloud/kms/node_modules/protobufjs/src/type.js:538:25) at serialize (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/protobuf_js_6_common.js:70:23) at Object.final_requester.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:802:37) at InterceptingCall._callNext (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:418:43) at InterceptingCall.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:460:8) at InterceptingCall._callNext (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:424:12) at InterceptingCall.sendMessage (/user_code/node_modules/@google-cloud/kms/node_modules/grpc/src/client_interceptors.js:460:8)
РЕДАКТИРОВАТЬ : Когда я пытаюсь использовать кодировку base64, я получаю «TypeError: Ключ должен быть буфером в TypeError (native) в новом Hmac (crypto.js: 93: 16) в Object.Hmac (crypto.js: 91): 12) в isRequestValid (/user_code/index.js:81:8) в decryptWebhookSecret.then (/user_code/index.js:119:21)".