vorrei convertire il seguente frammento di codice Node.JS
a JavaScript
al fine di eseguire in Google Apps Script:Converti Node.JS frammento di codice di Javascript (Google Apps Script)
Da: 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;
}
Questo è il codice che ho provato finora (e molte variazioni di esso):
A: 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;
}
Quando si invia la firma come parte della mia richiesta al server, ho sempre arrivare il messaggio di errore dal server: Invalid Key
.
BTW: Questa è l'API che vorrei utilizzare in JavaScript: Kraken API
Gradirei qualsiasi suggerimento o suggerimento molto !!
Ho battuto la testa contro questo per tutta la notte. Si prega di inviare indietro con la soluzione se hai capito. Le funzioni crittografiche in NodeJS e Google App Script sembrano differire in termini di output. –