UNPKG

@beraji/wallet-sdk

Version:

Beraji: Distributed Secret Sharing.

69 lines 3.26 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BUser = void 0; const bwallet_1 = require("../bwallet"); const utils_1 = require("../utils"); const constants_1 = require("./constants"); class BUser extends constants_1.BAuth { constructor(params) { super(params); this.setToken(params.token); } static fromSigner(net, signer) { return __awaiter(this, void 0, void 0, function* () { const bauth = new constants_1.BAuth({ net }); const authData = yield bauth.getAuthData(signer); const { data } = yield bauth.conPub.post('public/api/v1/users/signin-wallet', authData); return new BUser({ net, token: data.token }); }); } backupWallet(signer, password) { return __awaiter(this, void 0, void 0, function* () { const user = yield this.getUserInfo(); if (!(0, utils_1.equalAddr)(user.data.user.address, signer.address)) throw new Error(`Invalid signer. Expected ${user.data.user.address} but got ${signer.address}`); const { cloudS } = signer.sharePrivkey(password); const cloudSHex = (0, utils_1.toHex)(cloudS); return this.conAuth.patch('users/api/v1/backup', { shared_key: `${signer.address}.${cloudSHex}`, }); }); } recoverPrivateKey(password) { return __awaiter(this, void 0, void 0, function* () { const res = yield this.getUserInfo(); const user = res.data.user; const [shareAddr, cloudS] = user.shared_key.split('.'); if (!(0, utils_1.equalAddr)(user.address, shareAddr)) throw new Error(`Invalid shares. Expected ${user.address} but got ${shareAddr}`); const wallet = bwallet_1.BWallet.fromShares({ password, cloudS: (0, utils_1.toBytes)(cloudS), }); if (!(0, utils_1.equalAddr)(user.address, wallet.address)) throw new Error(`Invalid password. Expected ${user.address} but got ${wallet.address}`); return wallet; }); } approveSession(sessionId) { return __awaiter(this, void 0, void 0, function* () { return this.conAuth.post(`users/api/v1/sessions/${sessionId}/approve`, {}); }); } getUserInfo() { return __awaiter(this, void 0, void 0, function* () { return this.conAuth.get('users/api/v1/info'); }); } } exports.BUser = BUser; //# sourceMappingURL=buser.js.map