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

Выполнить команду


Для локальной разработки. Не используйте в интернете!