PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/tweetnacl-ts
Просмотр файла: scalarmult.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var array_1 = require("./array");
var core_1 = require("./core");
var curve25519_1 = require("./curve25519");
var check_1 = require("./check");
function scalarMult(n, p) {
check_1.checkArrayTypes(n, p);
if (n.length !== 32 /* Scalar */)
throw new Error('bad n size');
if (p.length !== 32 /* GroupElement */)
throw new Error('bad p size');
var q = array_1.ByteArray(32 /* GroupElement */);
_scalarMult(q, n, p);
return q;
}
exports.scalarMult = scalarMult;
function scalarMult_base(n) {
check_1.checkArrayTypes(n);
if (n.length !== 32 /* Scalar */)
throw new Error('bad n size');
var q = array_1.ByteArray(32 /* GroupElement */);
_scalarMult_base(q, n);
return q;
}
exports.scalarMult_base = scalarMult_base;
// low level
function _scalarMult(q, n, p) {
var z = array_1.ByteArray(32);
var x = array_1.NumArray(80);
var a = core_1.gf();
var b = core_1.gf();
var c = core_1.gf();
var d = core_1.gf();
var e = core_1.gf();
var f = core_1.gf();
var r, i;
for (i = 0; i < 31; i++)
z[i] = n[i];
z[31] = (n[31] & 127) | 64;
z[0] &= 248;
curve25519_1.unpack25519(x, p);
for (i = 0; i < 16; i++) {
b[i] = x[i];
d[i] = a[i] = c[i] = 0;
}
a[0] = d[0] = 1;
for (i = 254; i >= 0; --i) {
r = (z[i >>> 3] >>> (i & 7)) & 1;
curve25519_1.sel25519(a, b, r);
curve25519_1.sel25519(c, d, r);
core_1.A(e, a, c);
core_1.Z(a, a, c);
core_1.A(c, b, d);
core_1.Z(b, b, d);
core_1.S(d, e);
core_1.S(f, a);
core_1.M(a, c, a);
core_1.M(c, b, e);
core_1.A(e, a, c);
core_1.Z(a, a, c);
core_1.S(b, a);
core_1.Z(c, d, f);
core_1.M(a, c, core_1._121665);
core_1.A(a, a, d);
core_1.M(c, c, a);
core_1.M(a, d, f);
core_1.M(d, b, x);
core_1.S(b, e);
curve25519_1.sel25519(a, b, r);
curve25519_1.sel25519(c, d, r);
}
for (i = 0; i < 16; i++) {
x[i + 16] = a[i];
x[i + 32] = c[i];
x[i + 48] = b[i];
x[i + 64] = d[i];
}
var x32 = x.subarray(32);
var x16 = x.subarray(16);
curve25519_1.inv25519(x32, x32);
core_1.M(x16, x16, x32);
curve25519_1.pack25519(q, x16);
return 0;
}
exports._scalarMult = _scalarMult;
function _scalarMult_base(q, n) {
return _scalarMult(q, n, core_1._9);
}
exports._scalarMult_base = _scalarMult_base;
//# sourceMappingURL=scalarmult.js.mapВыполнить команду
Для локальной разработки. Не используйте в интернете!