@bitgo-beta/sdk-lib-mpc 8.2.0-beta.213 → 8.2.0-beta.2131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/curves/ed25519.d.ts +0 -1
- package/dist/src/curves/ed25519.d.ts.map +1 -1
- package/dist/src/curves/ed25519.js +12 -12
- package/dist/src/curves/ed25519Bip32HdTree.js +14 -14
- package/dist/src/curves/index.js +6 -2
- package/dist/src/curves/secp256k1.d.ts +0 -1
- package/dist/src/curves/secp256k1.d.ts.map +1 -1
- package/dist/src/curves/secp256k1.js +22 -38
- package/dist/src/curves/secp256k1Bip32HdTree.js +10 -10
- package/dist/src/curves/types.d.ts +2 -3
- package/dist/src/curves/types.d.ts.map +1 -1
- package/dist/src/curves/util.d.ts +2 -0
- package/dist/src/curves/util.d.ts.map +1 -1
- package/dist/src/curves/util.js +34 -3
- package/dist/src/hashCommitment.d.ts +0 -1
- package/dist/src/hashCommitment.d.ts.map +1 -1
- package/dist/src/hashCommitment.js +7 -8
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -10
- package/dist/src/openssl/index.js +6 -2
- package/dist/src/openssl/openssl.d.ts +1 -2
- package/dist/src/openssl/openssl.d.ts.map +1 -1
- package/dist/src/openssl/openssl.js +4 -12
- package/dist/src/safePrime.d.ts +3 -0
- package/dist/src/safePrime.d.ts.map +1 -0
- package/dist/src/safePrime.js +19 -0
- package/dist/src/schnorrProof.d.ts +0 -1
- package/dist/src/schnorrProof.d.ts.map +1 -1
- package/dist/src/schnorrProof.js +8 -9
- package/dist/src/shamir/index.js +6 -2
- package/dist/src/shamir/shamir.js +2 -2
- package/dist/src/shamir/types.d.ts +1 -1
- package/dist/src/shamir/types.d.ts.map +1 -1
- package/dist/src/tss/dkls-vrf/dkg.d.ts +91 -0
- package/dist/src/tss/dkls-vrf/dkg.d.ts.map +1 -0
- package/dist/src/tss/dkls-vrf/dkg.js +278 -0
- package/dist/src/tss/dkls-vrf/index.d.ts +4 -0
- package/dist/src/tss/dkls-vrf/index.d.ts.map +1 -0
- package/dist/src/tss/dkls-vrf/index.js +40 -0
- package/dist/src/tss/dkls-vrf/types.d.ts +28 -0
- package/dist/src/tss/dkls-vrf/types.d.ts.map +1 -0
- package/dist/src/tss/dkls-vrf/types.js +23 -0
- package/dist/src/tss/dkls-vrf/util.d.ts +63 -0
- package/dist/src/tss/dkls-vrf/util.d.ts.map +1 -0
- package/dist/src/tss/dkls-vrf/util.js +200 -0
- package/dist/src/tss/ecdsa/index.js +23 -9
- package/dist/src/tss/ecdsa/paillierproof.js +10 -10
- package/dist/src/tss/ecdsa/rangeproof.d.ts +1 -2
- package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/rangeproof.js +108 -118
- package/dist/src/tss/ecdsa/types.d.ts +28 -17
- package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/types.js +29 -31
- package/dist/src/tss/ecdsa/zkVProof.d.ts +0 -1
- package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -1
- package/dist/src/tss/ecdsa/zkVProof.js +9 -10
- package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts +69 -0
- package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/commsLayer.js +268 -0
- package/dist/src/tss/ecdsa-dkls/derive.d.ts +111 -0
- package/dist/src/tss/ecdsa-dkls/derive.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/derive.js +329 -0
- package/dist/src/tss/ecdsa-dkls/dkg.d.ts +64 -0
- package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/dkg.js +309 -0
- package/dist/src/tss/ecdsa-dkls/dsg.d.ts +47 -0
- package/dist/src/tss/ecdsa-dkls/dsg.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/dsg.js +271 -0
- package/dist/src/tss/ecdsa-dkls/index.d.ts +7 -0
- package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/index.js +43 -0
- package/dist/src/tss/ecdsa-dkls/types.d.ts +163 -0
- package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/types.js +215 -0
- package/dist/src/tss/ecdsa-dkls/util.d.ts +26 -0
- package/dist/src/tss/ecdsa-dkls/util.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/util.js +276 -0
- package/dist/src/tss/eddsa-mps/commsLayer.d.ts +30 -0
- package/dist/src/tss/eddsa-mps/commsLayer.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/commsLayer.js +96 -0
- package/dist/src/tss/eddsa-mps/derive.d.ts +34 -0
- package/dist/src/tss/eddsa-mps/derive.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/derive.js +198 -0
- package/dist/src/tss/eddsa-mps/dkg.d.ts +109 -0
- package/dist/src/tss/eddsa-mps/dkg.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/dkg.js +304 -0
- package/dist/src/tss/eddsa-mps/dsg.d.ts +96 -0
- package/dist/src/tss/eddsa-mps/dsg.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/dsg.js +346 -0
- package/dist/src/tss/eddsa-mps/index.d.ts +8 -0
- package/dist/src/tss/eddsa-mps/index.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/index.js +43 -0
- package/dist/src/tss/eddsa-mps/types.d.ts +76 -0
- package/dist/src/tss/eddsa-mps/types.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/types.js +105 -0
- package/dist/src/tss/eddsa-mps/util.d.ts +33 -0
- package/dist/src/tss/eddsa-mps/util.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps/util.js +94 -0
- package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts +65 -0
- package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps-vrf/dkg.js +246 -0
- package/dist/src/tss/eddsa-mps-vrf/index.d.ts +4 -0
- package/dist/src/tss/eddsa-mps-vrf/index.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps-vrf/index.js +40 -0
- package/dist/src/tss/eddsa-mps-vrf/types.d.ts +31 -0
- package/dist/src/tss/eddsa-mps-vrf/types.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps-vrf/types.js +97 -0
- package/dist/src/tss/eddsa-mps-vrf/util.d.ts +29 -0
- package/dist/src/tss/eddsa-mps-vrf/util.d.ts.map +1 -0
- package/dist/src/tss/eddsa-mps-vrf/util.js +75 -0
- package/dist/src/tss/index.d.ts +5 -0
- package/dist/src/tss/index.d.ts.map +1 -1
- package/dist/src/tss/index.js +11 -2
- package/dist/src/tss/redpallas-mps/commsLayer.d.ts +34 -0
- package/dist/src/tss/redpallas-mps/commsLayer.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/commsLayer.js +100 -0
- package/dist/src/tss/redpallas-mps/dkg.d.ts +103 -0
- package/dist/src/tss/redpallas-mps/dkg.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/dkg.js +285 -0
- package/dist/src/tss/redpallas-mps/dsg.d.ts +130 -0
- package/dist/src/tss/redpallas-mps/dsg.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/dsg.js +376 -0
- package/dist/src/tss/redpallas-mps/index.d.ts +8 -0
- package/dist/src/tss/redpallas-mps/index.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/index.js +43 -0
- package/dist/src/tss/redpallas-mps/rerand.d.ts +110 -0
- package/dist/src/tss/redpallas-mps/rerand.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/rerand.js +330 -0
- package/dist/src/tss/redpallas-mps/types.d.ts +120 -0
- package/dist/src/tss/redpallas-mps/types.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/types.js +133 -0
- package/dist/src/tss/redpallas-mps/util.d.ts +56 -0
- package/dist/src/tss/redpallas-mps/util.d.ts.map +1 -0
- package/dist/src/tss/redpallas-mps/util.js +173 -0
- package/dist/src/types.d.ts +0 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/util.d.ts +0 -1
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +21 -22
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +42 -5
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -356
- package/dist/src/openssl/opensslbytes.d.ts +0 -4
- package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
- package/dist/src/openssl/opensslbytes.js +0 -20
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateVrfDKGKeyShares = generateVrfDKGKeyShares;
|
|
4
|
+
exports.generateHardDerivedKeyShares = generateHardDerivedKeyShares;
|
|
5
|
+
exports.buildSafeMpcDerivePath = buildSafeMpcDerivePath;
|
|
6
|
+
exports.deriveSafeEcdsaMpcChild = deriveSafeEcdsaMpcChild;
|
|
7
|
+
const buffer_1 = require("buffer");
|
|
8
|
+
const cbor_x_1 = require("cbor-x");
|
|
9
|
+
const derive_1 = require("../ecdsa-dkls/derive");
|
|
10
|
+
const types_1 = require("../ecdsa-dkls/types");
|
|
11
|
+
const dkg_1 = require("./dkg");
|
|
12
|
+
/**
|
|
13
|
+
* Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
|
|
14
|
+
* returns the three completed VrfDkg sessions, mirroring `generateDKGKeyShares` from
|
|
15
|
+
* `ecdsa-dkls/util.ts` so VRF tests read like the existing DKLS ones.
|
|
16
|
+
*/
|
|
17
|
+
async function generateVrfDKGKeyShares(seedUser, seedBackup, seedBitgo) {
|
|
18
|
+
const user = new dkg_1.VrfDkg(3, 2, 0, seedUser);
|
|
19
|
+
const backup = new dkg_1.VrfDkg(3, 2, 1, seedBackup);
|
|
20
|
+
const bitgo = new dkg_1.VrfDkg(3, 2, 2, seedBitgo);
|
|
21
|
+
// #region round 1
|
|
22
|
+
const userRound1Messages = await user.initDkg();
|
|
23
|
+
const backupRound1Messages = await backup.initDkg();
|
|
24
|
+
const bitgoRound1Messages = await bitgo.initDkg();
|
|
25
|
+
const bitgoRound2Messages = await bitgo.handleIncomingMessages({
|
|
26
|
+
p2pMessages: [],
|
|
27
|
+
broadcastMessages: [...userRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
|
|
28
|
+
});
|
|
29
|
+
// #endregion
|
|
30
|
+
// #region round 2
|
|
31
|
+
const userRound2Messages = await user.handleIncomingMessages({
|
|
32
|
+
p2pMessages: [],
|
|
33
|
+
broadcastMessages: [...bitgoRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
|
|
34
|
+
});
|
|
35
|
+
const backupRound2Messages = await backup.handleIncomingMessages({
|
|
36
|
+
p2pMessages: [],
|
|
37
|
+
broadcastMessages: [...userRound1Messages.broadcastMessages, ...bitgoRound1Messages.broadcastMessages],
|
|
38
|
+
});
|
|
39
|
+
await bitgo.handleIncomingMessages({
|
|
40
|
+
p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
|
|
41
|
+
.flatMap((m) => m.p2pMessages)
|
|
42
|
+
.filter((m) => m.to === 2),
|
|
43
|
+
broadcastMessages: [],
|
|
44
|
+
});
|
|
45
|
+
await user.handleIncomingMessages({
|
|
46
|
+
p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
|
|
47
|
+
.flatMap((m) => m.p2pMessages)
|
|
48
|
+
.filter((m) => m.to === 0),
|
|
49
|
+
broadcastMessages: [],
|
|
50
|
+
});
|
|
51
|
+
await backup.handleIncomingMessages({
|
|
52
|
+
p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
|
|
53
|
+
.flatMap((m) => m.p2pMessages)
|
|
54
|
+
.filter((m) => m.to === 1),
|
|
55
|
+
broadcastMessages: [],
|
|
56
|
+
});
|
|
57
|
+
return [user, backup, bitgo];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
|
|
61
|
+
* hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
|
|
62
|
+
* session with a second fresh BitGo session. The hard-derive wasm session is a
|
|
63
|
+
* 2-party threshold protocol per instance, so the BitGo server side runs two
|
|
64
|
+
* sessions — one per SDK party. All four derived keyshares agree on the child
|
|
65
|
+
* public key; the two BitGo shares are distinct private shares of that same key.
|
|
66
|
+
*
|
|
67
|
+
* @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
|
|
68
|
+
* index with the hardened bit set)
|
|
69
|
+
* @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
|
|
70
|
+
*/
|
|
71
|
+
async function generateHardDerivedKeyShares(userRoot, backupRoot, bitgoRoot, userVrf, backupVrf, bitgoVrf, path, seedUser, seedBackup) {
|
|
72
|
+
const user = new derive_1.Derive(3, 2, 0, userRoot.getKeyShare(), userVrf.getKeyShare(), path, seedUser);
|
|
73
|
+
const backup = new derive_1.Derive(3, 2, 1, backupRoot.getKeyShare(), backupVrf.getKeyShare(), path, seedBackup);
|
|
74
|
+
const bitgoUserPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
|
|
75
|
+
const bitgoBackupPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
|
|
76
|
+
// #region round 1
|
|
77
|
+
const userMsg1 = await user.initDerive();
|
|
78
|
+
const backupMsg1 = await backup.initDerive();
|
|
79
|
+
const bitgoUserPairMsg1 = await bitgoUserPair.initDerive();
|
|
80
|
+
const bitgoBackupPairMsg1 = await bitgoBackupPair.initDerive();
|
|
81
|
+
const userMsg2 = user.handleIncomingMessages({
|
|
82
|
+
p2pMessages: [],
|
|
83
|
+
broadcastMessages: [{ payload: bitgoUserPairMsg1.payload, from: bitgoUserPairMsg1.from }],
|
|
84
|
+
});
|
|
85
|
+
const bitgoUserPairMsg2 = bitgoUserPair.handleIncomingMessages({
|
|
86
|
+
p2pMessages: [],
|
|
87
|
+
broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
|
|
88
|
+
});
|
|
89
|
+
const backupMsg2 = backup.handleIncomingMessages({
|
|
90
|
+
p2pMessages: [],
|
|
91
|
+
broadcastMessages: [{ payload: bitgoBackupPairMsg1.payload, from: bitgoBackupPairMsg1.from }],
|
|
92
|
+
});
|
|
93
|
+
const bitgoBackupPairMsg2 = bitgoBackupPair.handleIncomingMessages({
|
|
94
|
+
p2pMessages: [],
|
|
95
|
+
broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
|
|
96
|
+
});
|
|
97
|
+
// #endregion
|
|
98
|
+
// #region round 2
|
|
99
|
+
user.handleIncomingMessages({
|
|
100
|
+
p2pMessages: [],
|
|
101
|
+
broadcastMessages: [{ payload: bitgoUserPairMsg2.broadcastMessages[0].payload, from: 2 }],
|
|
102
|
+
});
|
|
103
|
+
bitgoUserPair.handleIncomingMessages({
|
|
104
|
+
p2pMessages: [],
|
|
105
|
+
broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: 0 }],
|
|
106
|
+
});
|
|
107
|
+
backup.handleIncomingMessages({
|
|
108
|
+
p2pMessages: [],
|
|
109
|
+
broadcastMessages: [{ payload: bitgoBackupPairMsg2.broadcastMessages[0].payload, from: 2 }],
|
|
110
|
+
});
|
|
111
|
+
bitgoBackupPair.handleIncomingMessages({
|
|
112
|
+
p2pMessages: [],
|
|
113
|
+
broadcastMessages: [{ payload: backupMsg2.broadcastMessages[0].payload, from: 1 }],
|
|
114
|
+
});
|
|
115
|
+
// #endregion
|
|
116
|
+
return [user, backup, bitgoUserPair, bitgoBackupPair];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Builds the multi-level hardened derivation path for a Safe MPC child wallet:
|
|
120
|
+
* `m/44'/<coinType>'/<safeSlotOrdinal>'/<accountIndex>'`, encoded as the byte
|
|
121
|
+
* sequence the DKLS VRF hard-derive wasm expects — four 4-byte big-endian u32s,
|
|
122
|
+
* each with the hardened bit (0x80000000) set, concatenated in order.
|
|
123
|
+
*
|
|
124
|
+
*/
|
|
125
|
+
function buildSafeMpcDerivePath(params) {
|
|
126
|
+
const { coinType, safeSlotOrdinal, accountIndex } = params;
|
|
127
|
+
const segments = [44, coinType, safeSlotOrdinal, accountIndex];
|
|
128
|
+
const path = new Uint8Array(segments.length * 4);
|
|
129
|
+
segments.forEach((segment, i) => {
|
|
130
|
+
if (!Number.isInteger(segment) || segment < 0 || segment > 0x7fffffff) {
|
|
131
|
+
throw new Error(`Invalid BIP44 path segment at index ${i}: ${segment}`);
|
|
132
|
+
}
|
|
133
|
+
path.set([0x80 | (segment >>> 24), (segment >>> 16) & 0xff, (segment >>> 8) & 0xff, segment & 0xff], i * 4);
|
|
134
|
+
});
|
|
135
|
+
return path;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Derives the Safe ecdsaMpc child wallet key for a given account, fully offline, from the
|
|
139
|
+
* user and backup reduced roots on the keycard: rebuild both as 3-party keyshares, run the
|
|
140
|
+
* user↔backup hard-derive ceremony at
|
|
141
|
+
* `m/44'/<coinType>'/<safeSlotOrdinal>'/<account>'`, then return the child common keychain
|
|
142
|
+
* and both reduced child shares.
|
|
143
|
+
*/
|
|
144
|
+
async function deriveSafeEcdsaMpcChild(params) {
|
|
145
|
+
const reduceRootToDklsKeyShare = (reducedRoot, partyIdx) => {
|
|
146
|
+
const xShare = {
|
|
147
|
+
x: buffer_1.Buffer.from(reducedRoot.prv).toString('hex'),
|
|
148
|
+
y: buffer_1.Buffer.from(reducedRoot.pub).toString('hex'),
|
|
149
|
+
chaincode: buffer_1.Buffer.from(reducedRoot.rootChainCode).toString('hex'),
|
|
150
|
+
};
|
|
151
|
+
return buffer_1.Buffer.from((0, cbor_x_1.encode)((0, types_1.buildDklsKeyShare)({ xShare, n: 3, t: 2, partyIdx, xiList: reducedRoot.xList })));
|
|
152
|
+
};
|
|
153
|
+
const { userRoot, backupRoot, account, coinType, safeSlotOrdinal } = params;
|
|
154
|
+
const userReduced = (0, types_1.getDecodedReducedKeyShare)(userRoot.signing);
|
|
155
|
+
const backupReduced = (0, types_1.getDecodedReducedKeyShare)(backupRoot.signing);
|
|
156
|
+
const userKeyShare = reduceRootToDklsKeyShare(userReduced, 0);
|
|
157
|
+
const backupKeyShare = reduceRootToDklsKeyShare(backupReduced, 1);
|
|
158
|
+
const path = buildSafeMpcDerivePath({ coinType, safeSlotOrdinal, accountIndex: account });
|
|
159
|
+
/**
|
|
160
|
+
* Derive User and Backup keys - 2 Rounds
|
|
161
|
+
*/
|
|
162
|
+
const user = new derive_1.Derive(3, 2, 0, userKeyShare, userRoot.vrf, path);
|
|
163
|
+
const backup = new derive_1.Derive(3, 2, 1, backupKeyShare, backupRoot.vrf, path);
|
|
164
|
+
// #region round 1
|
|
165
|
+
const userMsg1 = await user.initDerive();
|
|
166
|
+
const backupMsg1 = await backup.initDerive();
|
|
167
|
+
const userMsg2 = user.handleIncomingMessages({
|
|
168
|
+
p2pMessages: [],
|
|
169
|
+
broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
|
|
170
|
+
});
|
|
171
|
+
const backupMsg2 = backup.handleIncomingMessages({
|
|
172
|
+
p2pMessages: [],
|
|
173
|
+
broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
|
|
174
|
+
});
|
|
175
|
+
// #endregion
|
|
176
|
+
// #region round 2
|
|
177
|
+
user.handleIncomingMessages({
|
|
178
|
+
p2pMessages: [],
|
|
179
|
+
broadcastMessages: [
|
|
180
|
+
{ payload: backupMsg2.broadcastMessages[0].payload, from: backupMsg2.broadcastMessages[0].from },
|
|
181
|
+
],
|
|
182
|
+
});
|
|
183
|
+
backup.handleIncomingMessages({
|
|
184
|
+
p2pMessages: [],
|
|
185
|
+
broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: userMsg2.broadcastMessages[0].from }],
|
|
186
|
+
});
|
|
187
|
+
// #endregion
|
|
188
|
+
const commonKeychain = (0, types_1.getCommonKeychain)(user.getKeyShare());
|
|
189
|
+
// Guard: the derived child must never equal the root
|
|
190
|
+
const rootCommonKeychain = buffer_1.Buffer.from(userReduced.pub).toString('hex') + buffer_1.Buffer.from(userReduced.rootChainCode).toString('hex');
|
|
191
|
+
if (commonKeychain === rootCommonKeychain) {
|
|
192
|
+
throw new Error('deriveSafeEcdsaMpcChild: derived child keychain equals the root keychain');
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
commonKeychain,
|
|
196
|
+
userChild: user.getReducedKeyShare().toString('base64'),
|
|
197
|
+
backupChild: backup.getReducedKeyShare().toString('base64'),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZGtscy12cmYvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLDBEQThDQztBQWNELG9FQTREQztBQVNELHdEQWVDO0FBV0QsMERBeUVDO0FBL09ELG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFDaEMsaURBQThDO0FBQzlDLCtDQUF1SDtBQUN2SCwrQkFBK0I7QUFFL0I7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsUUFBaUIsRUFDakIsVUFBbUIsRUFDbkIsU0FBa0I7SUFFbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0Msa0JBQWtCO0lBQ2xCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDN0QsV0FBVyxFQUFFLEVBQUU7UUFDZixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQztLQUN4RyxDQUFDLENBQUM7SUFDSCxhQUFhO0lB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LEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2xILENBQUMsQ0FBQztJQUNILGFBQWE7SUFFYixNQUFNLGNBQWMsR0FBRyxJQUFBLHlCQUFpQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRTdELHFEQUFxRDtJQUNyRCxNQUFNLGtCQUFrQixHQUN0QixlQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hHLElBQUksY0FBYyxLQUFLLGtCQUFrQixFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxPQUFPO1FBQ0wsY0FBYztRQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZELFdBQVcsRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0tBQzVELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGVuY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgeyBEZXJpdmUgfSBmcm9tICcuLi9lY2RzYS1ka2xzL2Rlcml2ZSc7XG5pbXBvcnQgeyBSZWR1Y2VkS2V5U2hhcmUsIGJ1aWxkRGtsc0tleVNoYXJlLCBnZXRDb21tb25LZXljaGFpbiwgZ2V0RGVjb2RlZFJlZHVjZWRLZXlTaGFyZSB9IGZyb20gJy4uL2VjZHNhLWRrbHMvdHlwZXMnO1xuaW1wb3J0IHsgVnJmRGtnIH0gZnJvbSAnLi9ka2cnO1xuXG4vKipcbiAqIFJ1bnMgYSBsb2NhbCAyLW9mLTMgVlJGIERLRyBhY3Jvc3MgdXNlciAoMCksIGJhY2t1cCAoMSkgYW5kIGJpdGdvICgyKSBwYXJ0aWVzIGFuZFxuICogcmV0dXJucyB0aGUgdGhyZWUgY29tcGxldGVkIFZyZkRrZyBzZXNzaW9ucywgbWlycm9yaW5nIGBnZW5lcmF0ZURLR0tleVNoYXJlc2AgZnJvbVxuICogYGVjZHNhLWRrbHMvdXRpbC50c2Agc28gVlJGIHRlc3RzIHJlYWQgbGlrZSB0aGUgZXhpc3RpbmcgREtMUyBvbmVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVWcmZES0dLZXlTaGFyZXMoXG4gIHNlZWRVc2VyPzogQnVmZmVyLFxuICBzZWVkQmFja3VwPzogQnVmZmVyLFxuICBzZWVkQml0Z28/OiBCdWZmZXJcbik6IFByb21pc2U8W1ZyZkRrZywgVnJmRGtnLCBWcmZEa2ddPiB7XG4gIGNvbnN0IHVzZXIgPSBuZXcgVnJmRGtnKDMsIDIsIDAsIHNlZWRVc2VyKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IFZyZkRrZygzLCAyLCAxLCBzZWVkQmFja3VwKTtcbiAgY29uc3QgYml0Z28gPSBuZXcgVnJmRGtnKDMsIDIsIDIsIHNlZWRCaXRnbyk7XG4gIC8vICNyZWdpb24gcm91bmQgMVxuICBjb25zdCB1c2VyUm91bmQxTWVzc2FnZXMgPSBhd2FpdCB1c2VyLmluaXREa2coKTtcbiAgY29uc3QgYmFja3VwUm91bmQxTWVzc2FnZXMgPSBhd2FpdCBiYWNrdXAuaW5pdERrZygpO1xuICBjb25zdCBiaXRnb1JvdW5kMU1lc3NhZ2VzID0gYXdhaXQgYml0Z28uaW5pdERrZygpO1xuICBjb25zdCBiaXRnb1JvdW5kMk1lc3NhZ2VzID0gYXdhaXQgYml0Z28uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4udXNlclJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLCAuLi5iYWNrdXBSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlc10sXG4gIH0pO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiByb3VuZCAyXG4gIGNvbnN0IHVzZXJSb3VuZDJNZXNzYWdlcyA9IGF3YWl0IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4uYml0Z29Sb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYmFja3VwUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXNdLFxuICB9KTtcbiAgY29uc3QgYmFja3VwUm91bmQyTWVzc2FnZXMgPSBhd2FpdCBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbLi4udXNlclJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLCAuLi5iaXRnb1JvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzXSxcbiAgfSk7XG4gIGF3YWl0IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbYml0Z29Sb3VuZDJNZXNzYWdlcywgdXNlclJvdW5kMk1lc3NhZ2VzLCBiYWNrdXBSb3VuZDJNZXNzYWdlc11cbiAgICAgIC5mbGF0TWFwKChtKSA9PiBtLnAycE1lc3NhZ2VzKVxuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMiksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgYXdhaXQgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGF3YWl0IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDEpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb107XG59XG5cbi8qKlxuICogUnVucyB0aGUgaGFyZC1kZXJpdmF0aW9uIGNlcmVtb255IG9uIHRvcCBvZiBjb21wbGV0ZWQgcm9vdCBzZXNzaW9uczogdGhlIHVzZXIgKDApXG4gKiBoYXJkLWRlcml2ZSBzZXNzaW9uIHBhaXJzIHdpdGggYSBmcmVzaCBCaXRHbyAoMikgc2Vzc2lvbiwgYW5kIHRoZSBiYWNrdXAgKDEpXG4gKiBzZXNzaW9uIHdpdGggYSBzZWNvbmQgZnJlc2ggQml0R28gc2Vzc2lvbi4gVGhlIGhhcmQtZGVyaXZlIHdhc20gc2Vzc2lvbiBpcyBhXG4gKiAyLXBhcnR5IHRocmVzaG9sZCBwcm90b2NvbCBwZXIgaW5zdGFuY2UsIHNvIHRoZSBCaXRHbyBzZXJ2ZXIgc2lkZSBydW5zIHR3b1xuICogc2Vzc2lvbnMg4oCUIG9uZSBwZXIgU0RLIHBhcnR5LiBBbGwgZm91ciBkZXJpdmVkIGtleXNoYXJlcyBhZ3JlZSBvbiB0aGUgY2hpbGRcbiAqIHB1YmxpYyBrZXk7IHRoZSB0d28gQml0R28gc2hhcmVzIGFyZSBkaXN0aW5jdCBwcml2YXRlIHNoYXJlcyBvZiB0aGF0IHNhbWUga2V5LlxuICpcbiAqIEBwYXJhbSBwYXRoIGhhcmRlbmVkIGRlcml2YXRpb24gcGF0aCBieXRlcyAoZS5nLiBgbS8wJ2AgYXMgYSA0LWJ5dGUgYmlnLWVuZGlhblxuICogICBpbmRleCB3aXRoIHRoZSBoYXJkZW5lZCBiaXQgc2V0KVxuICogQHJldHVybnMgW3VzZXIsIGJhY2t1cCwgYml0Z29Vc2VyUGFpciwgYml0Z29CYWNrdXBQYWlyXSBjb21wbGV0ZWQgRGVyaXZlIHNlc3Npb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUhhcmREZXJpdmVkS2V5U2hhcmVzKFxuICB1c2VyUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgYmFja3VwUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgYml0Z29Sb290OiB7IGdldEtleVNoYXJlKCk6IEJ1ZmZlciB9LFxuICB1c2VyVnJmOiBWcmZEa2csXG4gIGJhY2t1cFZyZjogVnJmRGtnLFxuICBiaXRnb1ZyZjogVnJmRGtnLFxuICBwYXRoOiBVaW50OEFycmF5LFxuICBzZWVkVXNlcj86IEJ1ZmZlcixcbiAgc2VlZEJhY2t1cD86IEJ1ZmZlclxuKTogUHJvbWlzZTxbRGVyaXZlLCBEZXJpdmUsIERlcml2ZSwgRGVyaXZlXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IERlcml2ZSgzLCAyLCAwLCB1c2VyUm9vdC5nZXRLZXlTaGFyZSgpLCB1c2VyVnJmLmdldEtleVNoYXJlKCksIHBhdGgsIHNlZWRVc2VyKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IERlcml2ZSgzLCAyLCAxLCBiYWNrdXBSb290LmdldEtleVNoYXJlKCksIGJhY2t1cFZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoLCBzZWVkQmFja3VwKTtcbiAgY29uc3QgYml0Z29Vc2VyUGFpciA9IG5ldyBEZXJpdmUoMywgMiwgMiwgYml0Z29Sb290LmdldEtleVNoYXJlKCksIGJpdGdvVnJmLmdldEtleVNoYXJlKCksIHBhdGgpO1xuICBjb25zdCBiaXRnb0JhY2t1cFBhaXIgPSBuZXcgRGVyaXZlKDMsIDIsIDIsIGJpdGdvUm9vdC5nZXRLZXlTaGFyZSgpLCBiaXRnb1ZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoKTtcblxuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlck1zZzEgPSBhd2FpdCB1c2VyLmluaXREZXJpdmUoKTtcbiAgY29uc3QgYmFja3VwTXNnMSA9IGF3YWl0IGJhY2t1cC5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJpdGdvVXNlclBhaXJNc2cxID0gYXdhaXQgYml0Z29Vc2VyUGFpci5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJpdGdvQmFja3VwUGFpck1zZzEgPSBhd2FpdCBiaXRnb0JhY2t1cFBhaXIuaW5pdERlcml2ZSgpO1xuXG4gIGNvbnN0IHVzZXJNc2cyID0gdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvVXNlclBhaXJNc2cxLnBheWxvYWQsIGZyb206IGJpdGdvVXNlclBhaXJNc2cxLmZyb20gfV0sXG4gIH0pO1xuICBjb25zdCBiaXRnb1VzZXJQYWlyTXNnMiA9IGJpdGdvVXNlclBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiB1c2VyTXNnMS5wYXlsb2FkLCBmcm9tOiB1c2VyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYmFja3VwTXNnMiA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvQmFja3VwUGFpck1zZzEucGF5bG9hZCwgZnJvbTogYml0Z29CYWNrdXBQYWlyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYml0Z29CYWNrdXBQYWlyTXNnMiA9IGJpdGdvQmFja3VwUGFpci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJhY2t1cE1zZzEucGF5bG9hZCwgZnJvbTogYmFja3VwTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gcm91bmQgMlxuICB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYml0Z29Vc2VyUGFpck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMiB9XSxcbiAgfSk7XG4gIGJpdGdvVXNlclBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiB1c2VyTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAwIH1dLFxuICB9KTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYml0Z29CYWNrdXBQYWlyTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAyIH1dLFxuICB9KTtcbiAgYml0Z29CYWNrdXBQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYmFja3VwTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiAxIH1dLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb1VzZXJQYWlyLCBiaXRnb0JhY2t1cFBhaXJdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbXVsdGktbGV2ZWwgaGFyZGVuZWQgZGVyaXZhdGlvbiBwYXRoIGZvciBhIFNhZmUgTVBDIGNoaWxkIHdhbGxldDpcbiAqIGBtLzQ0Jy88Y29pblR5cGU+Jy88c2FmZVNsb3RPcmRpbmFsPicvPGFjY291bnRJbmRleD4nYCwgZW5jb2RlZCBhcyB0aGUgYnl0ZVxuICogc2VxdWVuY2UgdGhlIERLTFMgVlJGIGhhcmQtZGVyaXZlIHdhc20gZXhwZWN0cyDigJQgZm91ciA0LWJ5dGUgYmlnLWVuZGlhbiB1MzJzLFxuICogZWFjaCB3aXRoIHRoZSBoYXJkZW5lZCBiaXQgKDB4ODAwMDAwMDApIHNldCwgY29uY2F0ZW5hdGVkIGluIG9yZGVyLlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2FmZU1wY0Rlcml2ZVBhdGgocGFyYW1zOiB7XG4gIGNvaW5UeXBlOiBudW1iZXI7XG4gIHNhZmVTbG90T3JkaW5hbDogbnVtYmVyO1xuICBhY2NvdW50SW5kZXg6IG51bWJlcjtcbn0pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgeyBjb2luVHlwZSwgc2FmZVNsb3RPcmRpbmFsLCBhY2NvdW50SW5kZXggfSA9IHBhcmFtcztcbiAgY29uc3Qgc2VnbWVudHMgPSBbNDQsIGNvaW5UeXBlLCBzYWZlU2xvdE9yZGluYWwsIGFjY291bnRJbmRleF07XG4gIGNvbnN0IHBhdGggPSBuZXcgVWludDhBcnJheShzZWdtZW50cy5sZW5ndGggKiA0KTtcbiAgc2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCwgaSkgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzZWdtZW50KSB8fCBzZWdtZW50IDwgMCB8fCBzZWdtZW50ID4gMHg3ZmZmZmZmZikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEJJUDQ0IHBhdGggc2VnbWVudCBhdCBpbmRleCAke2l9OiAke3NlZ21lbnR9YCk7XG4gICAgfVxuICAgIHBhdGguc2V0KFsweDgwIHwgKHNlZ21lbnQgPj4+IDI0KSwgKHNlZ21lbnQgPj4+IDE2KSAmIDB4ZmYsIChzZWdtZW50ID4+PiA4KSAmIDB4ZmYsIHNlZ21lbnQgJiAweGZmXSwgaSAqIDQpO1xuICB9KTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCB0eXBlIE1wY1Jvb3RTaGFyZSA9IHsgc2lnbmluZzogQnVmZmVyOyB2cmY6IEJ1ZmZlciB9O1xuXG4vKipcbiAqIERlcml2ZXMgdGhlIFNhZmUgZWNkc2FNcGMgY2hpbGQgd2FsbGV0IGtleSBmb3IgYSBnaXZlbiBhY2NvdW50LCBmdWxseSBvZmZsaW5lLCBmcm9tIHRoZVxuICogdXNlciBhbmQgYmFja3VwIHJlZHVjZWQgcm9vdHMgb24gdGhlIGtleWNhcmQ6IHJlYnVpbGQgYm90aCBhcyAzLXBhcnR5IGtleXNoYXJlcywgcnVuIHRoZVxuICogdXNlcuKGlGJhY2t1cCBoYXJkLWRlcml2ZSBjZXJlbW9ueSBhdFxuICogYG0vNDQnLzxjb2luVHlwZT4nLzxzYWZlU2xvdE9yZGluYWw+Jy88YWNjb3VudD4nYCwgdGhlbiByZXR1cm4gdGhlIGNoaWxkIGNvbW1vbiBrZXljaGFpblxuICogYW5kIGJvdGggcmVkdWNlZCBjaGlsZCBzaGFyZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXJpdmVTYWZlRWNkc2FNcGNDaGlsZChwYXJhbXM6IHtcbiAgdXNlclJvb3Q6IE1wY1Jvb3RTaGFyZTtcbiAgYmFja3VwUm9vdDogTXBjUm9vdFNoYXJlO1xuICBhY2NvdW50OiBudW1iZXI7XG4gIGNvaW5UeXBlOiBudW1iZXI7XG4gIHNhZmVTbG90T3JkaW5hbDogbnVtYmVyO1xufSk6IFByb21pc2U8eyBjb21tb25LZXljaGFpbjogc3RyaW5nOyB1c2VyQ2hpbGQ6IHN0cmluZzsgYmFja3VwQ2hpbGQ6IHN0cmluZyB9PiB7XG4gIGNvbnN0IHJlZHVjZVJvb3RUb0RrbHNLZXlTaGFyZSA9IChyZWR1Y2VkUm9vdDogUmVkdWNlZEtleVNoYXJlLCBwYXJ0eUlkeDogbnVtYmVyKTogQnVmZmVyID0+IHtcbiAgICBjb25zdCB4U2hhcmUgPSB7XG4gICAgICB4OiBCdWZmZXIuZnJvbShyZWR1Y2VkUm9vdC5wcnYpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHk6IEJ1ZmZlci5mcm9tKHJlZHVjZWRSb290LnB1YikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBCdWZmZXIuZnJvbShyZWR1Y2VkUm9vdC5yb290Q2hhaW5Db2RlKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZW5jb2RlKGJ1aWxkRGtsc0tleVNoYXJlKHsgeFNoYXJlLCBuOiAzLCB0OiAyLCBwYXJ0eUlkeCwgeGlMaXN0OiByZWR1Y2VkUm9vdC54TGlzdCB9KSkpO1xuICB9O1xuXG4gIGNvbnN0IHsgdXNlclJvb3QsIGJhY2t1cFJvb3QsIGFjY291bnQsIGNvaW5UeXBlLCBzYWZlU2xvdE9yZGluYWwgfSA9IHBhcmFtcztcblxuICBjb25zdCB1c2VyUmVkdWNlZCA9IGdldERlY29kZWRSZWR1Y2VkS2V5U2hhcmUodXNlclJvb3Quc2lnbmluZyk7XG4gIGNvbnN0IGJhY2t1cFJlZHVjZWQgPSBnZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKGJhY2t1cFJvb3Quc2lnbmluZyk7XG5cbiAgY29uc3QgdXNlcktleVNoYXJlID0gcmVkdWNlUm9vdFRvRGtsc0tleVNoYXJlKHVzZXJSZWR1Y2VkLCAwKTtcbiAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSByZWR1Y2VSb290VG9Ea2xzS2V5U2hhcmUoYmFja3VwUmVkdWNlZCwgMSk7XG5cbiAgY29uc3QgcGF0aCA9IGJ1aWxkU2FmZU1wY0Rlcml2ZVBhdGgoeyBjb2luVHlwZSwgc2FmZVNsb3RPcmRpbmFsLCBhY2NvdW50SW5kZXg6IGFjY291bnQgfSk7XG5cbiAgLyoqXG4gICAqIERlcml2ZSBVc2VyIGFuZCBCYWNrdXAga2V5cyAtIDIgUm91bmRzXG4gICAqL1xuICBjb25zdCB1c2VyID0gbmV3IERlcml2ZSgzLCAyLCAwLCB1c2VyS2V5U2hhcmUsIHVzZXJSb290LnZyZiwgcGF0aCk7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBEZXJpdmUoMywgMiwgMSwgYmFja3VwS2V5U2hhcmUsIGJhY2t1cFJvb3QudnJmLCBwYXRoKTtcblxuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlck1zZzEgPSBhd2FpdCB1c2VyLmluaXREZXJpdmUoKTtcbiAgY29uc3QgYmFja3VwTXNnMSA9IGF3YWl0IGJhY2t1cC5pbml0RGVyaXZlKCk7XG5cbiAgY29uc3QgdXNlck1zZzIgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogYmFja3VwTXNnMS5wYXlsb2FkLCBmcm9tOiBiYWNrdXBNc2cxLmZyb20gfV0sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBNc2cyID0gYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzEucGF5bG9hZCwgZnJvbTogdXNlck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIHJvdW5kIDJcbiAgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgIHsgcGF5bG9hZDogYmFja3VwTXNnMi5icm9hZGNhc3RNZXNzYWdlc1swXS5wYXlsb2FkLCBmcm9tOiBiYWNrdXBNc2cyLmJyb2FkY2FzdE1lc3NhZ2VzWzBdLmZyb20gfSxcbiAgICBdLFxuICB9KTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0uZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICBjb25zdCBjb21tb25LZXljaGFpbiA9IGdldENvbW1vbktleWNoYWluKHVzZXIuZ2V0S2V5U2hhcmUoKSk7XG5cbiAgLy8gR3VhcmQ6IHRoZSBkZXJpdmVkIGNoaWxkIG11c3QgbmV2ZXIgZXF1YWwgdGhlIHJvb3RcbiAgY29uc3Qgcm9vdENvbW1vbktleWNoYWluID1cbiAgICBCdWZmZXIuZnJvbSh1c2VyUmVkdWNlZC5wdWIpLnRvU3RyaW5nKCdoZXgnKSArIEJ1ZmZlci5mcm9tKHVzZXJSZWR1Y2VkLnJvb3RDaGFpbkNvZGUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgaWYgKGNvbW1vbktleWNoYWluID09PSByb290Q29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlcml2ZVNhZmVFY2RzYU1wY0NoaWxkOiBkZXJpdmVkIGNoaWxkIGtleWNoYWluIGVxdWFscyB0aGUgcm9vdCBrZXljaGFpbicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb21tb25LZXljaGFpbixcbiAgICB1c2VyQ2hpbGQ6IHVzZXIuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIGJhY2t1cENoaWxkOiBiYWNrdXAuZ2V0UmVkdWNlZEtleVNoYXJlKCkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICB9O1xufVxuIl19
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
11
15
|
}) : function(o, v) {
|
|
12
16
|
o["default"] = v;
|
|
13
17
|
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
21
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
36
|
exports.minModulusBitLength = exports.EcdsaZkVProof = exports.EcdsaPaillierProof = exports.EcdsaRangeProof = exports.EcdsaTypes = void 0;
|
|
23
37
|
exports.EcdsaTypes = __importStar(require("./types"));
|
|
@@ -25,4 +39,4 @@ exports.EcdsaRangeProof = __importStar(require("./rangeproof"));
|
|
|
25
39
|
exports.EcdsaPaillierProof = __importStar(require("./paillierproof"));
|
|
26
40
|
exports.EcdsaZkVProof = __importStar(require("./zkVProof"));
|
|
27
41
|
exports.minModulusBitLength = 3072;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzQztBQUN0QyxnRUFBZ0Q7QUFDaEQsc0VBQXNEO0FBQ3RELDREQUE0QztBQUUvQixRQUFBLG1CQUFtQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIEVjZHNhVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBFY2RzYVJhbmdlUHJvb2YgZnJvbSAnLi9yYW5nZXByb29mJztcbmV4cG9ydCAqIGFzIEVjZHNhUGFpbGxpZXJQcm9vZiBmcm9tICcuL3BhaWxsaWVycHJvb2YnO1xuZXhwb3J0ICogYXMgRWNkc2Faa1ZQcm9vZiBmcm9tICcuL3prVlByb29mJztcblxuZXhwb3J0IGNvbnN0IG1pbk1vZHVsdXNCaXRMZW5ndGggPSAzMDcyO1xuIl19
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.m = exports.alpha = void 0;
|
|
4
|
+
exports.generateP = generateP;
|
|
5
|
+
exports.prove = prove;
|
|
6
|
+
exports.verify = verify;
|
|
4
7
|
const bigint_crypto_utils_1 = require("bigint-crypto-utils");
|
|
5
8
|
const bigint_mod_arith_1 = require("bigint-mod-arith");
|
|
6
9
|
const util_1 = require("../../util");
|
|
@@ -18,14 +21,13 @@ exports.m = Math.ceil(k / Math.log2(exports.alpha));
|
|
|
18
21
|
* @returns {Promise<Array<bigint>>} - array of challenges $p_i$
|
|
19
22
|
*/
|
|
20
23
|
async function generateP(n) {
|
|
21
|
-
if (bigint_crypto_utils_1.bitLength(n) < index_1.minModulusBitLength) {
|
|
24
|
+
if ((0, bigint_crypto_utils_1.bitLength)(n) < index_1.minModulusBitLength) {
|
|
22
25
|
throw new Error(`modulus n must have a bit length larger than or equal to ${index_1.minModulusBitLength}`);
|
|
23
26
|
}
|
|
24
27
|
return Promise.all(Array(exports.m)
|
|
25
28
|
.fill(null)
|
|
26
|
-
.map(() => util_1.randomPositiveCoPrimeLessThan(n)));
|
|
29
|
+
.map(() => (0, util_1.randomPositiveCoPrimeLessThan)(n)));
|
|
27
30
|
}
|
|
28
|
-
exports.generateP = generateP;
|
|
29
31
|
/**
|
|
30
32
|
* Generate a set of proofs $sigma$ for a given set of challenges $p$ using the paillier public key modulus $n$ and the private key $\lambda$.
|
|
31
33
|
* @param n - paillier public key modulus $n$
|
|
@@ -37,10 +39,9 @@ function prove(n, lambda, p) {
|
|
|
37
39
|
if (!p.every((p_i) => p_i > 0)) {
|
|
38
40
|
throw new Error('All paillier challenge values must be positive.');
|
|
39
41
|
}
|
|
40
|
-
const n_inv = bigint_mod_arith_1.modInv(n, lambda);
|
|
41
|
-
return p.map((p_i) => bigint_mod_arith_1.modPow(p_i, n_inv, n));
|
|
42
|
+
const n_inv = (0, bigint_mod_arith_1.modInv)(n, lambda);
|
|
43
|
+
return p.map((p_i) => (0, bigint_mod_arith_1.modPow)(p_i, n_inv, n));
|
|
42
44
|
}
|
|
43
|
-
exports.prove = prove;
|
|
44
45
|
/**
|
|
45
46
|
* Verify a set of proofs $\sigma$ on the modulus $n$ using the challenges $p$ that were provided to the prover to generate the proofs.
|
|
46
47
|
* @param n - paillier public key modulus $n$
|
|
@@ -76,11 +77,10 @@ function verify(n, p, sigma) {
|
|
|
76
77
|
}
|
|
77
78
|
// c) Verify that $p_i = \sigma_i^N \mod N$ for $i = 1...m$.
|
|
78
79
|
for (let i = 0; i < exports.m; i++) {
|
|
79
|
-
if (p[i] !== bigint_mod_arith_1.modPow(sigma[i], n, n)) {
|
|
80
|
+
if (p[i] !== (0, bigint_mod_arith_1.modPow)(sigma[i], n, n)) {
|
|
80
81
|
return false;
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
return true;
|
|
84
85
|
}
|
|
85
|
-
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbGxpZXJwcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EvcGFpbGxpZXJwcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBZ0Q7QUFDaEQsdURBQWtEO0FBRWxELHFDQUEyRDtBQUMzRCxtQ0FBOEM7QUFDOUMscUNBQW1EO0FBRW5ELHVCQUF1QjtBQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDZCwrQ0FBK0M7QUFDL0Msb0VBQW9FO0FBQ3ZELFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNmLFFBQUEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLENBQUMsQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxDQUFTO0lBQ3ZDLElBQUksK0JBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRywyQkFBbUIsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCwyQkFBbUIsRUFBRSxDQUFDLENBQUM7S0FDcEc7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxTQUFDLENBQUM7U0FDTCxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLG9DQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDO0FBVEQsOEJBU0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUyxFQUFFLE1BQWMsRUFBRSxDQUFnQjtJQUMvRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztLQUNwRTtJQUNELE1BQU0sS0FBSyxHQUFHLHlCQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMseUJBQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQU5ELHNCQU1DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixNQUFNLENBQUMsQ0FBUyxFQUFFLENBQWdCLEVBQUUsS0FBb0I7SUFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7S0FDcEU7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztLQUMxRTtJQUNELHNFQUFzRTtJQUN0RSxpQ0FBaUM7SUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksYUFBSyxLQUFLLE1BQU0sRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUM7SUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGdDQUF1QixFQUFFO1FBQzNDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0lBQ0QsOERBQThEO0lBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFDLEVBQUU7UUFDdEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDMUMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELDREQUE0RDtJQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLHlCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFsQ0Qsd0JBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYml0TGVuZ3RoIH0gZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgeyBtb2RJbnYsIG1vZFBvdyB9IGZyb20gJ2JpZ2ludC1tb2QtYXJpdGgnO1xuXG5pbXBvcnQgeyByYW5kb21Qb3NpdGl2ZUNvUHJpbWVMZXNzVGhhbiB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgbWluTW9kdWx1c0JpdExlbmd0aCB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgcHJpbWVzU21hbGxlclRoYW4zMTk1NjcgfSBmcm9tICcuL3ByaW1lcyc7XG5cbi8vIFNlY3VyaXR5IHBhcmFtZXRlcnMuXG5jb25zdCBrID0gMTI4O1xuLy8gZXByaW50LmlhY3Iub3JnLzIwMTgvMDU3LnBkZiNwYWdlNiBzZWN0aW9uIDVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9CaXRHb0pTL3B1bGwvMzUwMiNkaXNjdXNzaW9uX3IxMjAzMDcwMzkyXG5leHBvcnQgY29uc3QgYWxwaGEgPSAzMTk1Njc7XG5leHBvcnQgY29uc3QgbSA9IE1hdGguY2VpbChrIC8gTWF0aC5sb2cyKGFscGhhKSk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZXQgb2YgY2hhbGxlbmdlcyAkcCQgZm9yIGEgZ2l2ZW4gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJC5cbiAqIEBwYXJhbSBuIC0gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxiaWdpbnQ+Pn0gLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwX2kkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVAobjogYmlnaW50KTogUHJvbWlzZTxBcnJheTxiaWdpbnQ+PiB7XG4gIGlmIChiaXRMZW5ndGgobikgPCBtaW5Nb2R1bHVzQml0TGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtb2R1bHVzIG4gbXVzdCBoYXZlIGEgYml0IGxlbmd0aCBsYXJnZXIgdGhhbiBvciBlcXVhbCB0byAke21pbk1vZHVsdXNCaXRMZW5ndGh9YCk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIEFycmF5KG0pXG4gICAgICAuZmlsbChudWxsKVxuICAgICAgLm1hcCgoKSA9PiByYW5kb21Qb3NpdGl2ZUNvUHJpbWVMZXNzVGhhbihuKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNldCBvZiBwcm9vZnMgJHNpZ21hJCBmb3IgYSBnaXZlbiBzZXQgb2YgY2hhbGxlbmdlcyAkcCQgdXNpbmcgdGhlIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiQgYW5kIHRoZSBwcml2YXRlIGtleSAkXFxsYW1iZGEkLlxuICogQHBhcmFtIG4gLSBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXMgJG4kXG4gKiBAcGFyYW0gbGFtYmRhIC0gcHJpdmF0ZSBrZXkgJFxcbGFtYmRhLCAgd2hpY2ggaXMgdGhlICRcXGV1bGVyKE4pID0gKHAtMSkocS0xKSRcbiAqIEBwYXJhbSBwIC0gYXJyYXkgb2YgY2hhbGxlbmdlcyAkcCRcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGJpZ2ludD4+fSAtIGFycmF5IG9mIHByb29mcyAkXFxzaWdtYSRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZlKG46IGJpZ2ludCwgbGFtYmRhOiBiaWdpbnQsIHA6IEFycmF5PGJpZ2ludD4pOiBiaWdpbnRbXSB7XG4gIGlmICghcC5ldmVyeSgocF9pKSA9PiBwX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICBjb25zdCBuX2ludiA9IG1vZEludihuLCBsYW1iZGEpO1xuICByZXR1cm4gcC5tYXAoKHBfaSkgPT4gbW9kUG93KHBfaSwgbl9pbnYsIG4pKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBzZXQgb2YgcHJvb2ZzICRcXHNpZ21hJCBvbiB0aGUgbW9kdWx1cyAkbiQgdXNpbmcgdGhlIGNoYWxsZW5nZXMgJHAkIHRoYXQgd2VyZSBwcm92aWRlZCB0byB0aGUgcHJvdmVyIHRvIGdlbmVyYXRlIHRoZSBwcm9vZnMuXG4gKiBAcGFyYW0gbiAtIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiRcbiAqIEBwYXJhbSBwIC0gYXJyYXkgb2YgY2hhbGxlbmdlcyAkcCRcbiAqIEBwYXJhbSBzaWdtYSAtIGFycmF5IG9mIHByb29mcyAkXFxzaWdtYSRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeShuOiBiaWdpbnQsIHA6IEFycmF5PGJpZ2ludD4sIHNpZ21hOiBBcnJheTxiaWdpbnQ+KTogYm9vbGVhbiB7XG4gIGlmICghcC5ldmVyeSgocF9pKSA9PiBwX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICBpZiAoIXNpZ21hLmV2ZXJ5KChzaWdtYV9pKSA9PiBzaWdtYV9pID4gMCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FsbCBwYWlsbGllciBjaGFsbGVuZ2UgcHJvb2YgdmFsdWVzIG11c3QgYmUgcG9zaXRpdmUuJyk7XG4gIH1cbiAgLy8gYSkgQ2hlY2sgdGhhdCAkTiQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCBpcyBub3QgZGl2aXNpYmxlIGJ5IGFsbFxuICAvLyB0aGUgcHJpbWVzIGxlc3MgdGhhbiAkXFxhbHBoYSQuXG4gIGlmIChuIDw9IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGFscGhhICE9PSAzMTk1NjcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIGFscGhhIHZhbHVlJyk7XG4gIH1cbiAgZm9yIChjb25zdCBwcmltZSBvZiBwcmltZXNTbWFsbGVyVGhhbjMxOTU2Nykge1xuICAgIGlmIChuICUgQmlnSW50KHByaW1lKSA9PT0gQmlnSW50KDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIGIpIENoZWNrIHRoYXQgJFxcc2lnbWFfaSQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyICRpID0gMS4uLm0kLlxuICBpZiAoc2lnbWEubGVuZ3RoICE9PSBtKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghc2lnbWEuZXZlcnkoKHNpZ21hX2kpID0+IHNpZ21hX2kgPiAwKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBjKSBWZXJpZnkgdGhhdCAkcF9pID0gXFxzaWdtYV9pXk4gXFxtb2QgTiQgZm9yICRpID0gMS4uLm0kLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGlmIChwW2ldICE9PSBtb2RQb3coc2lnbWFbaV0sIG4sIG4pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl19
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbGxpZXJwcm9vZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EvcGFpbGxpZXJwcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQkEsOEJBU0M7QUFTRCxzQkFNQztBQVFELHdCQWtDQztBQXJGRCw2REFBZ0Q7QUFDaEQsdURBQWtEO0FBRWxELHFDQUEyRDtBQUMzRCxtQ0FBOEM7QUFDOUMscUNBQW1EO0FBRW5ELHVCQUF1QjtBQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDZCwrQ0FBK0M7QUFDL0Msb0VBQW9FO0FBQ3ZELFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNmLFFBQUEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLENBQUMsQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxDQUFTO0lBQ3ZDLElBQUksSUFBQSwrQkFBUyxFQUFDLENBQUMsQ0FBQyxHQUFHLDJCQUFtQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsMkJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLEtBQUssQ0FBQyxTQUFDLENBQUM7U0FDTCxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEsb0NBQTZCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBUyxFQUFFLE1BQWMsRUFBRSxDQUFnQjtJQUMvRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxJQUFBLHlCQUFNLEVBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixNQUFNLENBQUMsQ0FBUyxFQUFFLENBQWdCLEVBQUUsS0FBb0I7SUFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0Qsc0VBQXNFO0lBQ3RFLGlDQUFpQztJQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksYUFBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxnQ0FBdUIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsOERBQThEO0lBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsNERBQTREO0lBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFBLHlCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXRMZW5ndGggfSBmcm9tICdiaWdpbnQtY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IG1vZEludiwgbW9kUG93IH0gZnJvbSAnYmlnaW50LW1vZC1hcml0aCc7XG5cbmltcG9ydCB7IHJhbmRvbVBvc2l0aXZlQ29QcmltZUxlc3NUaGFuIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBtaW5Nb2R1bHVzQml0TGVuZ3RoIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBwcmltZXNTbWFsbGVyVGhhbjMxOTU2NyB9IGZyb20gJy4vcHJpbWVzJztcblxuLy8gU2VjdXJpdHkgcGFyYW1ldGVycy5cbmNvbnN0IGsgPSAxMjg7XG4vLyBlcHJpbnQuaWFjci5vcmcvMjAxOC8wNTcucGRmI3BhZ2U2IHNlY3Rpb24gNVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL0JpdEdvSlMvcHVsbC8zNTAyI2Rpc2N1c3Npb25fcjEyMDMwNzAzOTJcbmV4cG9ydCBjb25zdCBhbHBoYSA9IDMxOTU2NztcbmV4cG9ydCBjb25zdCBtID0gTWF0aC5jZWlsKGsgLyBNYXRoLmxvZzIoYWxwaGEpKTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNldCBvZiBjaGFsbGVuZ2VzICRwJCBmb3IgYSBnaXZlbiBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXMgJG4kLlxuICogQHBhcmFtIG4gLSBwYWlsbGllciBwdWJsaWMga2V5IG1vZHVsdXNcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGJpZ2ludD4+fSAtIGFycmF5IG9mIGNoYWxsZW5nZXMgJHBfaSRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUChuOiBiaWdpbnQpOiBQcm9taXNlPEFycmF5PGJpZ2ludD4+IHtcbiAgaWYgKGJpdExlbmd0aChuKSA8IG1pbk1vZHVsdXNCaXRMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG1vZHVsdXMgbiBtdXN0IGhhdmUgYSBiaXQgbGVuZ3RoIGxhcmdlciB0aGFuIG9yIGVxdWFsIHRvICR7bWluTW9kdWx1c0JpdExlbmd0aH1gKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgQXJyYXkobSlcbiAgICAgIC5maWxsKG51bGwpXG4gICAgICAubWFwKCgpID0+IHJhbmRvbVBvc2l0aXZlQ29QcmltZUxlc3NUaGFuKG4pKVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2V0IG9mIHByb29mcyAkc2lnbWEkIGZvciBhIGdpdmVuIHNldCBvZiBjaGFsbGVuZ2VzICRwJCB1c2luZyB0aGUgcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJCBhbmQgdGhlIHByaXZhdGUga2V5ICRcXGxhbWJkYSQuXG4gKiBAcGFyYW0gbiAtIHBhaWxsaWVyIHB1YmxpYyBrZXkgbW9kdWx1cyAkbiRcbiAqIEBwYXJhbSBsYW1iZGEgLSBwcml2YXRlIGtleSAkXFxsYW1iZGEsICB3aGljaCBpcyB0aGUgJFxcZXVsZXIoTikgPSAocC0xKShxLTEpJFxuICogQHBhcmFtIHAgLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwJFxuICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8YmlnaW50Pj59IC0gYXJyYXkgb2YgcHJvb2ZzICRcXHNpZ21hJFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmUobjogYmlnaW50LCBsYW1iZGE6IGJpZ2ludCwgcDogQXJyYXk8YmlnaW50Pik6IGJpZ2ludFtdIHtcbiAgaWYgKCFwLmV2ZXJ5KChwX2kpID0+IHBfaSA+IDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbGwgcGFpbGxpZXIgY2hhbGxlbmdlIHZhbHVlcyBtdXN0IGJlIHBvc2l0aXZlLicpO1xuICB9XG4gIGNvbnN0IG5faW52ID0gbW9kSW52KG4sIGxhbWJkYSk7XG4gIHJldHVybiBwLm1hcCgocF9pKSA9PiBtb2RQb3cocF9pLCBuX2ludiwgbikpO1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIHNldCBvZiBwcm9vZnMgJFxcc2lnbWEkIG9uIHRoZSBtb2R1bHVzICRuJCB1c2luZyB0aGUgY2hhbGxlbmdlcyAkcCQgdGhhdCB3ZXJlIHByb3ZpZGVkIHRvIHRoZSBwcm92ZXIgdG8gZ2VuZXJhdGUgdGhlIHByb29mcy5cbiAqIEBwYXJhbSBuIC0gcGFpbGxpZXIgcHVibGljIGtleSBtb2R1bHVzICRuJFxuICogQHBhcmFtIHAgLSBhcnJheSBvZiBjaGFsbGVuZ2VzICRwJFxuICogQHBhcmFtIHNpZ21hIC0gYXJyYXkgb2YgcHJvb2ZzICRcXHNpZ21hJFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5KG46IGJpZ2ludCwgcDogQXJyYXk8YmlnaW50Piwgc2lnbWE6IEFycmF5PGJpZ2ludD4pOiBib29sZWFuIHtcbiAgaWYgKCFwLmV2ZXJ5KChwX2kpID0+IHBfaSA+IDApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbGwgcGFpbGxpZXIgY2hhbGxlbmdlIHZhbHVlcyBtdXN0IGJlIHBvc2l0aXZlLicpO1xuICB9XG4gIGlmICghc2lnbWEuZXZlcnkoKHNpZ21hX2kpID0+IHNpZ21hX2kgPiAwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWxsIHBhaWxsaWVyIGNoYWxsZW5nZSBwcm9vZiB2YWx1ZXMgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgfVxuICAvLyBhKSBDaGVjayB0aGF0ICROJCBpcyBhIHBvc2l0aXZlIGludGVnZXIgYW5kIGlzIG5vdCBkaXZpc2libGUgYnkgYWxsXG4gIC8vIHRoZSBwcmltZXMgbGVzcyB0aGFuICRcXGFscGhhJC5cbiAgaWYgKG4gPD0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYWxwaGEgIT09IDMxOTU2Nykge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgYWxwaGEgdmFsdWUnKTtcbiAgfVxuICBmb3IgKGNvbnN0IHByaW1lIG9mIHByaW1lc1NtYWxsZXJUaGFuMzE5NTY3KSB7XG4gICAgaWYgKG4gJSBCaWdJbnQocHJpbWUpID09PSBCaWdJbnQoMCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gYikgQ2hlY2sgdGhhdCAkXFxzaWdtYV9pJCBpcyBhIHBvc2l0aXZlIGludGVnZXIgJGkgPSAxLi4ubSQuXG4gIGlmIChzaWdtYS5sZW5ndGggIT09IG0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFzaWdtYS5ldmVyeSgoc2lnbWFfaSkgPT4gc2lnbWFfaSA+IDApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGMpIFZlcmlmeSB0aGF0ICRwX2kgPSBcXHNpZ21hX2leTiBcXG1vZCBOJCBmb3IgJGkgPSAxLi4ubSQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgaWYgKHBbaV0gIT09IG1vZFBvdyhzaWdtYVtpXSwgbiwgbikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { BaseCurve } from '../../curves';
|
|
2
2
|
import { PublicKey } from 'paillier-bigint';
|
|
3
3
|
import { DeserializedNtilde, DeserializedNtildeProof, RangeProof, RangeProofWithCheck, DeserializedNtildeWithProofs } from './types';
|
|
4
|
-
export declare function generateSafePrimes(bitLengths: number[]): Promise<bigint[]>;
|
|
5
4
|
/**
|
|
6
5
|
* Generate "challenge" values for range proofs.
|
|
7
6
|
* @param {number} bitlength The bit length of the modulus to generate. This should
|
|
8
7
|
* be the same as the bit length of the paillier public keys used for MtA.
|
|
9
8
|
* @returns {DeserializedNtilde} The generated Ntilde values.
|
|
10
9
|
*/
|
|
11
|
-
export declare function generateNtilde(bitlength?: number): Promise<DeserializedNtildeWithProofs>;
|
|
10
|
+
export declare function generateNtilde(openSSLBytes: Uint8Array, bitlength?: number): Promise<DeserializedNtildeWithProofs>;
|
|
12
11
|
/**
|
|
13
12
|
* Generate iterations of Ntilde, h1, h2 discrete log proofs.
|
|
14
13
|
* @param {DeserializedNtilde} ntilde Ntilde, h1, h2 to generate the proofs for.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rangeproof.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/rangeproof.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAEvB,UAAU,EACV,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rangeproof.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/rangeproof.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAEvB,UAAU,EACV,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAkCjB;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,UAAU,EACxB,SAAS,SAAsB,GAC9B,OAAO,CAAC,4BAA4B,CAAC,CA2CvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,uBAAuB,CAAC,CAsBlC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,uBAAuB,GACnC,OAAO,CAAC,OAAO,CAAC,CA0ClB;AACD;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,UAAU,EACjB,CAAC,EAAE,MAAM,GACR,OAAO,CAmCT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,mBAAmB,CAAC,CAoD9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,mBAAmB,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,OAAO,CAiET"}
|