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