PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-lib-mpc/dist/src/curves

Просмотр файла: secp256k1.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Secp256k1Curve = void 0;
const util_1 = require("../util");
const secp256k1_1 = require("@noble/curves/secp256k1");
const modular_1 = require("@noble/curves/abstract/modular");
const order = secp256k1_1.secp256k1.CURVE.n;
const privateKeySize = 32;
const publicKeySize = 33;
class Secp256k1Curve {
    constructor() {
        this.scalarBytes = privateKeySize;
        // Always use compressed points.
        this.pointBytes = publicKeySize;
    }
    scalarRandom() {
        return (0, util_1.bigIntFromU8ABE)(secp256k1_1.secp256k1.utils.randomPrivateKey());
    }
    scalarAdd(x, y) {
        return (0, modular_1.mod)(x + y, order);
    }
    scalarSub(x, y) {
        const negatedY = order - y;
        return (0, modular_1.mod)(x + negatedY, order);
    }
    scalarMult(x, y) {
        return (0, modular_1.mod)(x * y, order);
    }
    scalarReduce(s) {
        return (0, modular_1.mod)(s, order);
    }
    scalarNegate(s) {
        return order - s;
    }
    scalarInvert(s) {
        return (0, modular_1.invert)(s, order);
    }
    pointAdd(a, b) {
        const pointA = secp256k1_1.secp256k1.ProjectivePoint.fromHex((0, util_1.bigIntToBufferBE)(a, privateKeySize));
        const pointB = secp256k1_1.secp256k1.ProjectivePoint.fromHex((0, util_1.bigIntToBufferBE)(b, privateKeySize));
        return (0, util_1.bigIntFromU8ABE)(pointA.add(pointB).toRawBytes(true));
    }
    pointMultiply(p, s) {
        const pointA = secp256k1_1.secp256k1.ProjectivePoint.fromHex((0, util_1.bigIntToBufferBE)(p, privateKeySize));
        return (0, util_1.bigIntFromU8ABE)(pointA.multiply(s).toRawBytes(true));
    }
    basePointMult(n) {
        const point = (0, util_1.bigIntToBufferBE)(n, privateKeySize);
        return (0, util_1.bigIntFromU8ABE)(secp256k1_1.secp256k1.getPublicKey(point, true));
    }
    verify(message, signature, publicKey) {
        const sig = secp256k1_1.secp256k1.Signature.fromCompact(Buffer.from(signature.subarray(1))).addRecoveryBit(signature[0]);
        const pubFromSig = sig.recoverPublicKey(message).toRawBytes(true);
        return Buffer.from(pubFromSig).equals((0, util_1.bigIntToBufferBE)(publicKey, publicKeySize));
    }
    order() {
        return order;
    }
}
exports.Secp256k1Curve = Secp256k1Curve;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1cnZlcy9zZWNwMjU2azEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0NBQTREO0FBRTVELHVEQUE0RDtBQUM1RCw0REFBNkQ7QUFFN0QsTUFBTSxLQUFLLEdBQUcscUJBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFFekIsTUFBYSxjQUFjO0lBQTNCO1FBd0RFLGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBRTdCLGdDQUFnQztRQUNoQyxlQUFVLEdBQUcsYUFBYSxDQUFDO0lBQzdCLENBQUM7SUEzREMsWUFBWTtRQUNWLE9BQU8sSUFBQSxzQkFBZSxFQUFDLHFCQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzVCLE9BQU8sSUFBQSxhQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzVCLE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFBLGFBQUcsRUFBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDN0IsT0FBTyxJQUFBLGFBQUcsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUztRQUNwQixPQUFPLElBQUEsYUFBRyxFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQVM7UUFDcEIsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUztRQUNwQixPQUFPLElBQUEsZ0JBQU0sRUFBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUMzQixNQUFNLE1BQU0sR0FBRyxxQkFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBQSx1QkFBZ0IsRUFBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNqRixNQUFNLE1BQU0sR0FBRyxxQkFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBQSx1QkFBZ0IsRUFBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNqRixPQUFPLElBQUEsc0JBQWUsRUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDaEMsTUFBTSxNQUFNLEdBQUcscUJBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUEsdUJBQWdCLEVBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDakYsT0FBTyxJQUFBLHNCQUFlLEVBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVM7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFBLHNCQUFlLEVBQUMscUJBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFlLEVBQUUsU0FBaUIsRUFBRSxTQUFpQjtRQUMxRCxNQUFNLEdBQUcsR0FBRyxxQkFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUEsdUJBQWdCLEVBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FNRjtBQTVERCx3Q0E0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaWdJbnRGcm9tVThBQkUsIGJpZ0ludFRvQnVmZmVyQkUgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IEJhc2VDdXJ2ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgc2VjcDI1NmsxIGFzIHNlY3AgfSBmcm9tICdAbm9ibGUvY3VydmVzL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBtb2QsIGludmVydCB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvYWJzdHJhY3QvbW9kdWxhcic7XG5cbmNvbnN0IG9yZGVyID0gc2VjcC5DVVJWRS5uO1xuY29uc3QgcHJpdmF0ZUtleVNpemUgPSAzMjtcbmNvbnN0IHB1YmxpY0tleVNpemUgPSAzMztcblxuZXhwb3J0IGNsYXNzIFNlY3AyNTZrMUN1cnZlIGltcGxlbWVudHMgQmFzZUN1cnZlIHtcbiAgc2NhbGFyUmFuZG9tKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21VOEFCRShzZWNwLnV0aWxzLnJhbmRvbVByaXZhdGVLZXkoKSk7XG4gIH1cblxuICBzY2FsYXJBZGQoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBtb2QoeCArIHksIG9yZGVyKTtcbiAgfVxuXG4gIHNjYWxhclN1Yih4OiBiaWdpbnQsIHk6IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgY29uc3QgbmVnYXRlZFkgPSBvcmRlciAtIHk7XG4gICAgcmV0dXJuIG1vZCh4ICsgbmVnYXRlZFksIG9yZGVyKTtcbiAgfVxuXG4gIHNjYWxhck11bHQoeDogYmlnaW50LCB5OiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBtb2QoeCAqIHksIG9yZGVyKTtcbiAgfVxuXG4gIHNjYWxhclJlZHVjZShzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBtb2Qocywgb3JkZXIpO1xuICB9XG5cbiAgc2NhbGFyTmVnYXRlKHM6IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIG9yZGVyIC0gcztcbiAgfVxuXG4gIHNjYWxhckludmVydChzOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIHJldHVybiBpbnZlcnQocywgb3JkZXIpO1xuICB9XG5cbiAgcG9pbnRBZGQoYTogYmlnaW50LCBiOiBiaWdpbnQpOiBiaWdpbnQge1xuICAgIGNvbnN0IHBvaW50QSA9IHNlY3AuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgoYmlnSW50VG9CdWZmZXJCRShhLCBwcml2YXRlS2V5U2l6ZSkpO1xuICAgIGNvbnN0IHBvaW50QiA9IHNlY3AuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgoYmlnSW50VG9CdWZmZXJCRShiLCBwcml2YXRlS2V5U2l6ZSkpO1xuICAgIHJldHVybiBiaWdJbnRGcm9tVThBQkUocG9pbnRBLmFkZChwb2ludEIpLnRvUmF3Qnl0ZXModHJ1ZSkpO1xuICB9XG5cbiAgcG9pbnRNdWx0aXBseShwOiBiaWdpbnQsIHM6IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgY29uc3QgcG9pbnRBID0gc2VjcC5Qcm9qZWN0aXZlUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKHAsIHByaXZhdGVLZXlTaXplKSk7XG4gICAgcmV0dXJuIGJpZ0ludEZyb21VOEFCRShwb2ludEEubXVsdGlwbHkocykudG9SYXdCeXRlcyh0cnVlKSk7XG4gIH1cblxuICBiYXNlUG9pbnRNdWx0KG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gICAgY29uc3QgcG9pbnQgPSBiaWdJbnRUb0J1ZmZlckJFKG4sIHByaXZhdGVLZXlTaXplKTtcbiAgICByZXR1cm4gYmlnSW50RnJvbVU4QUJFKHNlY3AuZ2V0UHVibGljS2V5KHBvaW50LCB0cnVlKSk7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlciwgcHVibGljS2V5OiBiaWdpbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaWcgPSBzZWNwLlNpZ25hdHVyZS5mcm9tQ29tcGFjdChCdWZmZXIuZnJvbShzaWduYXR1cmUuc3ViYXJyYXkoMSkpKS5hZGRSZWNvdmVyeUJpdChzaWduYXR1cmVbMF0pO1xuICAgIGNvbnN0IHB1YkZyb21TaWcgPSBzaWcucmVjb3ZlclB1YmxpY0tleShtZXNzYWdlKS50b1Jhd0J5dGVzKHRydWUpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShwdWJGcm9tU2lnKS5lcXVhbHMoYmlnSW50VG9CdWZmZXJCRShwdWJsaWNLZXksIHB1YmxpY0tleVNpemUpKTtcbiAgfVxuXG4gIG9yZGVyKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIG9yZGVyO1xuICB9XG5cbiAgc2NhbGFyQnl0ZXMgPSBwcml2YXRlS2V5U2l6ZTtcblxuICAvLyBBbHdheXMgdXNlIGNvbXByZXNzZWQgcG9pbnRzLlxuICBwb2ludEJ5dGVzID0gcHVibGljS2V5U2l6ZTtcbn1cbiJdfQ==

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


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