UNPKG

@beraji/wallet-sdk

Version:

Beraji: Distributed Secret Sharing.

41 lines 1.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FiniteField = void 0; const bn_js_1 = __importDefault(require("bn.js")); const utils_1 = require("@noble/hashes/utils"); class FiniteField { constructor(red, en) { this.red = red; this.en = en; this.encode = (r) => new bn_js_1.default(r, 16, this.en).toRed(this.r); this.decode = (r, len = 32) => Uint8Array.from(r.toArray(this.en, len)); this.numberToRedBN = (r) => new bn_js_1.default(r).toRed(this.r); this.norm = (a) => this.decode(this.encode(a), a.length); this.rand = () => this.norm((0, utils_1.randomBytes)(32)); this.add = (a, b) => this.decode(this.encode(a).redAdd(this.encode(b))); this.neg = (a) => this.decode(this.encode(a).redNeg()); this.sub = (a, b) => this.add(a, this.neg(b)); this.mul = (a, b) => this.decode(this.encode(a).redMul(this.encode(b))); this.inv = (a) => this.decode(this.encode(a).redInvm()); this.div = (a, b) => this.mul(a, this.inv(b)); this.sqr = (a) => this.decode(this.encode(a).redSqr()); this.sqrt = (a) => this.decode(this.encode(a).redSqrt()); this.pow = (a, b) => this.decode(this.encode(a).redPow(new bn_js_1.default(b))); this.equal = (a, b) => this.encode(a).eq(this.encode(b)); this.r = bn_js_1.default.red(this.red); } get ZERO() { return this.numberToRedBN(0); } get ONE() { return this.numberToRedBN(1); } } exports.FiniteField = FiniteField; FiniteField.fromString = (red, en) => new FiniteField(new bn_js_1.default(red), en); FiniteField.fromNumber = (red, en) => new FiniteField(new bn_js_1.default(red), en); FiniteField.fromBigInt = (red, en) => FiniteField.fromString(red.toString(), en); //# sourceMappingURL=ff.js.map