Я настраиваю проект электронной таблицы Google для подключения к моему CryptoExchange
API.
Но когда дело доходит до этого простого скрипта CryptoJs Hmac-sha256, он не работает: он возвращает структуру функции вместо значения, а за ее пределами работает нормально ( см. Мой jsfiddle ).
Теперь я понимаю из этого ответа стека Кэмерона Робертса о том, что Apps Script ведет себя по-разному при определенных POV, но я не могу понять, как это связано.
Кроме того, если я просто переключу скрипт и использую Stanford Javascript Crypto
Библиотека, код выполняется отлично без проблем, как в Google
Сценарий приложений и, конечно, вне его.
Вот мой код:
eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha256.js').getContentText());
function write() {
var hash = CryptoJS.HmacSHA256("message", "secret");
return hash;
}
Logger.log(write());
и журнал консоли из Google Apps Script
[19-06-07 00:53:32:859 PDT] {mixIn=
function (a) {
for (var c in a) {
a.hasOwnProperty(c) && (this[c] = a[c]);
}
a.hasOwnProperty("toString") && (this.toString = a.toString);
}
, extend=
function (a) {
q.prototype = this;
var c = new q();
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function () {
c.$super.init.apply(this, arguments);
});
c.init.prototype = c;
c.$super = this;
return c;
}
, init=
function (a, c) {
a = this.words = a || [];
this.sigBytes = c != s ? c : 4 * a.length;
}
, random=
function (a) {
for (var c = [], d = 0; d < a; d += 4) {
c.push(4294967296 * h.random() | 0);
}
return new r.init(c, a);
}
, words=[-1.956689808E9, 6.97680217E8, -1.940439631E9, -5.01717335E8, -
1.205480281E9, -1.798215209E9, 1.0131952E8, 1.469462027E9], clone=
function () {
var a = m.clone.call(this);
a.words = this.words.slice(0);
return a;
}
, sigBytes=32.0, create=
function () {
var a = this.extend();
a.init.apply(a, arguments);
return a;
}
, toString=
function (a) {
return (a || k).stringify(this);
}
, concat=
function (a) {
var c = this.words, d = a.words, b = this.sigBytes;
a = a.sigBytes;
this.clamp();
if (b % 4) {
for (var e = 0; e < a; e++) {
c[b + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 -
8 * ((b + e) % 4);
}
} else {
if (65535 < d.length) {
for (e = 0; e < a; e += 4) {
c[b + e >>> 2] = d[e >>> 2];
}
} else {
c.push.apply(c, d);
}
}
this.sigBytes += a;
return this;
}
, clamp=
function () {
var a = this.words, c = this.sigBytes;
a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);
a.length = h.ceil(c / 4);
}
, $super={extend=
function (a) {
q.prototype = this;
var c = new q();
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function () {
c.$super.init.apply(this, arguments);
});
c.init.prototype = c;
c.$super = this;
return c;
}
, mixIn=
function (a) {
for (var c in a) {
a.hasOwnProperty(c) && (this[c] = a[c]);
}
a.hasOwnProperty("toString") && (this.toString = a.toString);
}
, init=
function () {
}
, clone=
function () {
return this.init.prototype.extend(this);
}
, create=
function () {
var a = this.extend();
a.init.apply(a, arguments);
return a;
}
}}
Хотя тот же код в jsfiddle отлично работает
EDIT:
Хотя мой вопрос по-прежнему является источником любопытства для меня, я только что нашел здесь целую ветку ответов в стеке, которые включают определенный метод в скрипте Google Apps , о котором я не знал: a встроенная в Class Utility для создания подписи HMAC Sha256.
Возможно, это не самый ответ на мой вопрос с точки зрения теоретических знаний, но, вероятно, решит мою проблему с практической точки зрения; так что я сейчас посмотрю на это.
Спасибо
Создание ключевого хеш-значения с использованием метода HMAC с помощью Google Apps Script
Как получить значение Hex из метода computeHmacSha256Signature скрипта Google Apps?
возвращает строковое представление из байта computeDigest (алгоритм, значение) []