chciałbym przekonwertować następujący kod Node.JS
fragment do JavaScript
w celu uruchomienia go w Google Apps Script:Konwersja node.js fragment kodu na Javascript (Google Apps Script)
Od: node.js
function getMessageSignature(path, request, nonce) {
var message = querystring.stringify(request);
var secret = new Buffer(config.secret, 'base64');
var hash = new crypto.createHash('sha256');
var hmac = new crypto.createHmac('sha512', secret);
var hash_digest = hash.update(nonce + message).digest('binary');
var hmac_digest = hmac.update(path + hash_digest, 'binary').digest('base64');
return hmac_digest;
}
jest to kod próbowałem tak daleko (i wiele odmian tego):
Do: JavaScript/Google Apps Script
function getMessageSignature(url, request, nonce) {
// Message signature using HMAC-SHA512 of (URI path + SHA256(nonce + POST data))
//and base64 decoded secret API key
const secretApiKey = 'wdwdKswdKKewe23edeYIvL/GsltsGWbuBXnarcxZfu/9PjFbXl5npg==';
var secretApiKeyBytes = Utilities.base64Decode(secretApiKey);
var blob = Utilities.newBlob(secretApiKeyBytes);
var secretApiKeyString = blob.getDataAsString(); // POTENTIAL ERROR HERE?
var json = Utilities.jsonStringify(request);
var hash_digest = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256,
nonce + json);
var hmac_digest = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512,
url + hash_digest, secretApiKeyString); // POTENTIAL ERROR HERE?
var base64 = Utilities.base64Encode(hmac_digest);
return base64;
}
Wysyłając podpis jako część mojego żądanie do serwera, zawsze pojawia się komunikat o błędzie z serwera: Invalid Key
.
BTW: Jest to API, które chciałbym użyć w JavaScript: Kraken API
Byłbym wdzięczny za każdą wskazówkę lub sugestie bardzo !!
Przez całą noc waliłem głową w to wszystko. Opublikuj swoje rozwiązanie, jeśli już to wymyśliłeś. Funkcje kryptograficzne w NodeJS i Google App Script wydają się różnić w wynikach. –