@bitgo-beta/sdk-lib-mpc 8.2.0-beta.21 → 8.2.0-beta.2100

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.
Files changed (167) hide show
  1. package/dist/src/curves/constant.d.ts +2 -0
  2. package/dist/src/curves/constant.d.ts.map +1 -0
  3. package/dist/src/curves/constant.js +6 -0
  4. package/dist/src/curves/{baseCurve.d.ts → ed25519.d.ts} +9 -8
  5. package/dist/src/curves/ed25519.d.ts.map +1 -0
  6. package/dist/src/curves/ed25519.js +72 -0
  7. package/dist/src/curves/ed25519Bip32HdTree.d.ts +10 -0
  8. package/dist/src/curves/ed25519Bip32HdTree.d.ts.map +1 -0
  9. package/dist/src/curves/ed25519Bip32HdTree.js +85 -0
  10. package/dist/src/curves/index.d.ts +6 -1
  11. package/dist/src/curves/index.d.ts.map +1 -1
  12. package/dist/src/curves/index.js +12 -3
  13. package/dist/src/curves/secp256k1.d.ts +3 -2
  14. package/dist/src/curves/secp256k1.d.ts.map +1 -1
  15. package/dist/src/curves/secp256k1.js +29 -38
  16. package/dist/src/curves/secp256k1Bip32HdTree.d.ts +8 -0
  17. package/dist/src/curves/secp256k1Bip32HdTree.d.ts.map +1 -0
  18. package/dist/src/curves/secp256k1Bip32HdTree.js +54 -0
  19. package/dist/src/curves/types.d.ts +35 -0
  20. package/dist/src/curves/types.d.ts.map +1 -0
  21. package/dist/src/curves/types.js +3 -0
  22. package/dist/src/curves/util.d.ts +4 -0
  23. package/dist/src/curves/util.d.ts.map +1 -0
  24. package/dist/src/curves/util.js +42 -0
  25. package/dist/src/hashCommitment.d.ts +16 -0
  26. package/dist/src/hashCommitment.d.ts.map +1 -0
  27. package/dist/src/hashCommitment.js +44 -0
  28. package/dist/src/index.d.ts +6 -2
  29. package/dist/src/index.d.ts.map +1 -1
  30. package/dist/src/index.js +35 -4
  31. package/dist/src/openssl/index.js +6 -2
  32. package/dist/src/openssl/openssl.d.ts +1 -2
  33. package/dist/src/openssl/openssl.d.ts.map +1 -1
  34. package/dist/src/openssl/openssl.js +4 -12
  35. package/dist/src/safePrime.d.ts +3 -0
  36. package/dist/src/safePrime.d.ts.map +1 -0
  37. package/dist/src/safePrime.js +19 -0
  38. package/dist/src/schnorrProof.d.ts +21 -0
  39. package/dist/src/schnorrProof.d.ts.map +1 -0
  40. package/dist/src/schnorrProof.js +61 -0
  41. package/dist/src/shamir/index.d.ts +3 -0
  42. package/dist/src/shamir/index.d.ts.map +1 -0
  43. package/dist/src/shamir/index.js +19 -0
  44. package/dist/src/shamir/shamir.d.ts +38 -0
  45. package/dist/src/shamir/shamir.d.ts.map +1 -0
  46. package/dist/src/shamir/shamir.js +136 -0
  47. package/dist/src/shamir/types.d.ts +5 -0
  48. package/dist/src/shamir/types.d.ts.map +1 -0
  49. package/dist/src/shamir/types.js +3 -0
  50. package/dist/src/tss/dkls-vrf/dkg.d.ts +91 -0
  51. package/dist/src/tss/dkls-vrf/dkg.d.ts.map +1 -0
  52. package/dist/src/tss/dkls-vrf/dkg.js +278 -0
  53. package/dist/src/tss/dkls-vrf/index.d.ts +4 -0
  54. package/dist/src/tss/dkls-vrf/index.d.ts.map +1 -0
  55. package/dist/src/tss/dkls-vrf/index.js +40 -0
  56. package/dist/src/tss/dkls-vrf/types.d.ts +28 -0
  57. package/dist/src/tss/dkls-vrf/types.d.ts.map +1 -0
  58. package/dist/src/tss/dkls-vrf/types.js +23 -0
  59. package/dist/src/tss/dkls-vrf/util.d.ts +29 -0
  60. package/dist/src/tss/dkls-vrf/util.d.ts.map +1 -0
  61. package/dist/src/tss/dkls-vrf/util.js +113 -0
  62. package/dist/src/tss/ecdsa/index.d.ts +1 -0
  63. package/dist/src/tss/ecdsa/index.d.ts.map +1 -1
  64. package/dist/src/tss/ecdsa/index.js +25 -10
  65. package/dist/src/tss/ecdsa/paillierproof.js +10 -10
  66. package/dist/src/tss/ecdsa/rangeproof.d.ts +1 -2
  67. package/dist/src/tss/ecdsa/rangeproof.d.ts.map +1 -1
  68. package/dist/src/tss/ecdsa/rangeproof.js +111 -118
  69. package/dist/src/tss/ecdsa/types.d.ts +33 -17
  70. package/dist/src/tss/ecdsa/types.d.ts.map +1 -1
  71. package/dist/src/tss/ecdsa/types.js +29 -31
  72. package/dist/src/tss/ecdsa/zkVProof.d.ts +24 -0
  73. package/dist/src/tss/ecdsa/zkVProof.d.ts.map +1 -0
  74. package/dist/src/tss/ecdsa/zkVProof.js +70 -0
  75. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts +69 -0
  76. package/dist/src/tss/ecdsa-dkls/commsLayer.d.ts.map +1 -0
  77. package/dist/src/tss/ecdsa-dkls/commsLayer.js +268 -0
  78. package/dist/src/tss/ecdsa-dkls/derive.d.ts +111 -0
  79. package/dist/src/tss/ecdsa-dkls/derive.d.ts.map +1 -0
  80. package/dist/src/tss/ecdsa-dkls/derive.js +329 -0
  81. package/dist/src/tss/ecdsa-dkls/dkg.d.ts +64 -0
  82. package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -0
  83. package/dist/src/tss/ecdsa-dkls/dkg.js +334 -0
  84. package/dist/src/tss/ecdsa-dkls/dsg.d.ts +47 -0
  85. package/dist/src/tss/ecdsa-dkls/dsg.d.ts.map +1 -0
  86. package/dist/src/tss/ecdsa-dkls/dsg.js +271 -0
  87. package/dist/src/tss/ecdsa-dkls/index.d.ts +7 -0
  88. package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -0
  89. package/dist/src/tss/ecdsa-dkls/index.js +43 -0
  90. package/dist/src/tss/ecdsa-dkls/types.d.ts +128 -0
  91. package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -0
  92. package/dist/src/tss/ecdsa-dkls/types.js +175 -0
  93. package/dist/src/tss/ecdsa-dkls/util.d.ts +26 -0
  94. package/dist/src/tss/ecdsa-dkls/util.d.ts.map +1 -0
  95. package/dist/src/tss/ecdsa-dkls/util.js +276 -0
  96. package/dist/src/tss/eddsa-mps/commsLayer.d.ts +30 -0
  97. package/dist/src/tss/eddsa-mps/commsLayer.d.ts.map +1 -0
  98. package/dist/src/tss/eddsa-mps/commsLayer.js +96 -0
  99. package/dist/src/tss/eddsa-mps/derive.d.ts +34 -0
  100. package/dist/src/tss/eddsa-mps/derive.d.ts.map +1 -0
  101. package/dist/src/tss/eddsa-mps/derive.js +198 -0
  102. package/dist/src/tss/eddsa-mps/dkg.d.ts +109 -0
  103. package/dist/src/tss/eddsa-mps/dkg.d.ts.map +1 -0
  104. package/dist/src/tss/eddsa-mps/dkg.js +303 -0
  105. package/dist/src/tss/eddsa-mps/dsg.d.ts +96 -0
  106. package/dist/src/tss/eddsa-mps/dsg.d.ts.map +1 -0
  107. package/dist/src/tss/eddsa-mps/dsg.js +346 -0
  108. package/dist/src/tss/eddsa-mps/index.d.ts +8 -0
  109. package/dist/src/tss/eddsa-mps/index.d.ts.map +1 -0
  110. package/dist/src/tss/eddsa-mps/index.js +43 -0
  111. package/dist/src/tss/eddsa-mps/types.d.ts +76 -0
  112. package/dist/src/tss/eddsa-mps/types.d.ts.map +1 -0
  113. package/dist/src/tss/eddsa-mps/types.js +105 -0
  114. package/dist/src/tss/eddsa-mps/util.d.ts +33 -0
  115. package/dist/src/tss/eddsa-mps/util.d.ts.map +1 -0
  116. package/dist/src/tss/eddsa-mps/util.js +94 -0
  117. package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts +65 -0
  118. package/dist/src/tss/eddsa-mps-vrf/dkg.d.ts.map +1 -0
  119. package/dist/src/tss/eddsa-mps-vrf/dkg.js +246 -0
  120. package/dist/src/tss/eddsa-mps-vrf/index.d.ts +4 -0
  121. package/dist/src/tss/eddsa-mps-vrf/index.d.ts.map +1 -0
  122. package/dist/src/tss/eddsa-mps-vrf/index.js +40 -0
  123. package/dist/src/tss/eddsa-mps-vrf/types.d.ts +31 -0
  124. package/dist/src/tss/eddsa-mps-vrf/types.d.ts.map +1 -0
  125. package/dist/src/tss/eddsa-mps-vrf/types.js +97 -0
  126. package/dist/src/tss/eddsa-mps-vrf/util.d.ts +9 -0
  127. package/dist/src/tss/eddsa-mps-vrf/util.d.ts.map +1 -0
  128. package/dist/src/tss/eddsa-mps-vrf/util.js +36 -0
  129. package/dist/src/tss/index.d.ts +5 -0
  130. package/dist/src/tss/index.d.ts.map +1 -1
  131. package/dist/src/tss/index.js +11 -2
  132. package/dist/src/tss/redpallas-mps/commsLayer.d.ts +34 -0
  133. package/dist/src/tss/redpallas-mps/commsLayer.d.ts.map +1 -0
  134. package/dist/src/tss/redpallas-mps/commsLayer.js +100 -0
  135. package/dist/src/tss/redpallas-mps/dkg.d.ts +103 -0
  136. package/dist/src/tss/redpallas-mps/dkg.d.ts.map +1 -0
  137. package/dist/src/tss/redpallas-mps/dkg.js +285 -0
  138. package/dist/src/tss/redpallas-mps/dsg.d.ts +130 -0
  139. package/dist/src/tss/redpallas-mps/dsg.d.ts.map +1 -0
  140. package/dist/src/tss/redpallas-mps/dsg.js +376 -0
  141. package/dist/src/tss/redpallas-mps/index.d.ts +8 -0
  142. package/dist/src/tss/redpallas-mps/index.d.ts.map +1 -0
  143. package/dist/src/tss/redpallas-mps/index.js +43 -0
  144. package/dist/src/tss/redpallas-mps/rerand.d.ts +110 -0
  145. package/dist/src/tss/redpallas-mps/rerand.d.ts.map +1 -0
  146. package/dist/src/tss/redpallas-mps/rerand.js +330 -0
  147. package/dist/src/tss/redpallas-mps/types.d.ts +120 -0
  148. package/dist/src/tss/redpallas-mps/types.d.ts.map +1 -0
  149. package/dist/src/tss/redpallas-mps/types.js +133 -0
  150. package/dist/src/tss/redpallas-mps/util.d.ts +56 -0
  151. package/dist/src/tss/redpallas-mps/util.d.ts.map +1 -0
  152. package/dist/src/tss/redpallas-mps/util.js +173 -0
  153. package/dist/src/types.d.ts +13 -0
  154. package/dist/src/types.d.ts.map +1 -0
  155. package/dist/src/types.js +3 -0
  156. package/dist/src/util.d.ts +8 -3
  157. package/dist/src/util.d.ts.map +1 -1
  158. package/dist/src/util.js +48 -27
  159. package/dist/tsconfig.tsbuildinfo +1 -3645
  160. package/package.json +44 -7
  161. package/.eslintignore +0 -5
  162. package/CHANGELOG.md +0 -32
  163. package/dist/src/curves/baseCurve.d.ts.map +0 -1
  164. package/dist/src/curves/baseCurve.js +0 -6
  165. package/dist/src/openssl/opensslbytes.d.ts +0 -4
  166. package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
  167. package/dist/src/openssl/opensslbytes.js +0 -20
@@ -0,0 +1,28 @@
1
+ /**
2
+ * States of the VRF DKG state machine: a two-round, commit-then-open distributed
3
+ * key generation. Kept separate from `ecdsa-dkls`'s `DkgState` because the round
4
+ * counts differ (2 vs 4).
5
+ *
6
+ * The wasm session bytes embed a round tag (`Init` / `WaitMsg1` / `WaitMsg2` /
7
+ * `{Share: …}`); `VrfDkg` re-derives this state from the bytes rather than
8
+ * trusting a caller-supplied value.
9
+ */
10
+ export declare enum VrfDkgState {
11
+ Uninitialized = 0,
12
+ /** Commitment created and broadcast; waiting for the other parties' VrfKeygenMsg1. */
13
+ Round1 = 1,
14
+ /** Openings created and broadcast; waiting for the other parties' VrfKeygenMsg2. */
15
+ Round2 = 2,
16
+ Complete = 3,
17
+ InvalidState = 4
18
+ }
19
+ export interface VrfDkgSessionData {
20
+ /**
21
+ * Serialized wasm session. Secret key material — it carries the party's
22
+ * secret polynomial share. Never log it or persist it in the clear.
23
+ */
24
+ vrfSessionBytes: Uint8Array;
25
+ vrfState: VrfDkgState;
26
+ keyShareBuff?: Buffer;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tss/dkls-vrf/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,oBAAY,WAAW;IACrB,aAAa,IAAI;IACjB,sFAAsF;IACtF,MAAM,IAAA;IACN,oFAAoF;IACpF,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,EAAE,UAAU,CAAC;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VrfDkgState = void 0;
4
+ /**
5
+ * States of the VRF DKG state machine: a two-round, commit-then-open distributed
6
+ * key generation. Kept separate from `ecdsa-dkls`'s `DkgState` because the round
7
+ * counts differ (2 vs 4).
8
+ *
9
+ * The wasm session bytes embed a round tag (`Init` / `WaitMsg1` / `WaitMsg2` /
10
+ * `{Share: …}`); `VrfDkg` re-derives this state from the bytes rather than
11
+ * trusting a caller-supplied value.
12
+ */
13
+ var VrfDkgState;
14
+ (function (VrfDkgState) {
15
+ VrfDkgState[VrfDkgState["Uninitialized"] = 0] = "Uninitialized";
16
+ /** Commitment created and broadcast; waiting for the other parties' VrfKeygenMsg1. */
17
+ VrfDkgState[VrfDkgState["Round1"] = 1] = "Round1";
18
+ /** Openings created and broadcast; waiting for the other parties' VrfKeygenMsg2. */
19
+ VrfDkgState[VrfDkgState["Round2"] = 2] = "Round2";
20
+ VrfDkgState[VrfDkgState["Complete"] = 3] = "Complete";
21
+ VrfDkgState[VrfDkgState["InvalidState"] = 4] = "InvalidState";
22
+ })(VrfDkgState || (exports.VrfDkgState = VrfDkgState = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2RrbHMtdnJmL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsSUFBWSxXQVFYO0FBUkQsV0FBWSxXQUFXO0lBQ3JCLCtEQUFpQixDQUFBO0lBQ2pCLHNGQUFzRjtJQUN0RixpREFBTSxDQUFBO0lBQ04sb0ZBQW9GO0lBQ3BGLGlEQUFNLENBQUE7SUFDTixxREFBUSxDQUFBO0lBQ1IsNkRBQVksQ0FBQTtBQUNkLENBQUMsRUFSVyxXQUFXLDJCQUFYLFdBQVcsUUFRdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YXRlcyBvZiB0aGUgVlJGIERLRyBzdGF0ZSBtYWNoaW5lOiBhIHR3by1yb3VuZCwgY29tbWl0LXRoZW4tb3BlbiBkaXN0cmlidXRlZFxuICoga2V5IGdlbmVyYXRpb24uIEtlcHQgc2VwYXJhdGUgZnJvbSBgZWNkc2EtZGtsc2AncyBgRGtnU3RhdGVgIGJlY2F1c2UgdGhlIHJvdW5kXG4gKiBjb3VudHMgZGlmZmVyICgyIHZzIDQpLlxuICpcbiAqIFRoZSB3YXNtIHNlc3Npb24gYnl0ZXMgZW1iZWQgYSByb3VuZCB0YWcgKGBJbml0YCAvIGBXYWl0TXNnMWAgLyBgV2FpdE1zZzJgIC9cbiAqIGB7U2hhcmU6IOKApn1gKTsgYFZyZkRrZ2AgcmUtZGVyaXZlcyB0aGlzIHN0YXRlIGZyb20gdGhlIGJ5dGVzIHJhdGhlciB0aGFuXG4gKiB0cnVzdGluZyBhIGNhbGxlci1zdXBwbGllZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGVudW0gVnJmRGtnU3RhdGUge1xuICBVbmluaXRpYWxpemVkID0gMCxcbiAgLyoqIENvbW1pdG1lbnQgY3JlYXRlZCBhbmQgYnJvYWRjYXN0OyB3YWl0aW5nIGZvciB0aGUgb3RoZXIgcGFydGllcycgVnJmS2V5Z2VuTXNnMS4gKi9cbiAgUm91bmQxLFxuICAvKiogT3BlbmluZ3MgY3JlYXRlZCBhbmQgYnJvYWRjYXN0OyB3YWl0aW5nIGZvciB0aGUgb3RoZXIgcGFydGllcycgVnJmS2V5Z2VuTXNnMi4gKi9cbiAgUm91bmQyLFxuICBDb21wbGV0ZSxcbiAgSW52YWxpZFN0YXRlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZyZkRrZ1Nlc3Npb25EYXRhIHtcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZWQgd2FzbSBzZXNzaW9uLiBTZWNyZXQga2V5IG1hdGVyaWFsIOKAlCBpdCBjYXJyaWVzIHRoZSBwYXJ0eSdzXG4gICAqIHNlY3JldCBwb2x5bm9taWFsIHNoYXJlLiBOZXZlciBsb2cgaXQgb3IgcGVyc2lzdCBpdCBpbiB0aGUgY2xlYXIuXG4gICAqL1xuICB2cmZTZXNzaW9uQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHZyZlN0YXRlOiBWcmZEa2dTdGF0ZTtcbiAga2V5U2hhcmVCdWZmPzogQnVmZmVyO1xufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { Buffer } from 'buffer';
2
+ import { Derive } from '../ecdsa-dkls/derive';
3
+ import { VrfDkg } from './dkg';
4
+ /**
5
+ * Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
6
+ * returns the three completed VrfDkg sessions, mirroring `generateDKGKeyShares` from
7
+ * `ecdsa-dkls/util.ts` so VRF tests read like the existing DKLS ones.
8
+ */
9
+ export declare function generateVrfDKGKeyShares(seedUser?: Buffer, seedBackup?: Buffer, seedBitgo?: Buffer): Promise<[VrfDkg, VrfDkg, VrfDkg]>;
10
+ /**
11
+ * Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
12
+ * hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
13
+ * session with a second fresh BitGo session. The hard-derive wasm session is a
14
+ * 2-party threshold protocol per instance, so the BitGo server side runs two
15
+ * sessions — one per SDK party. All four derived keyshares agree on the child
16
+ * public key; the two BitGo shares are distinct private shares of that same key.
17
+ *
18
+ * @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
19
+ * index with the hardened bit set)
20
+ * @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
21
+ */
22
+ export declare function generateHardDerivedKeyShares(userRoot: {
23
+ getKeyShare(): Buffer;
24
+ }, backupRoot: {
25
+ getKeyShare(): Buffer;
26
+ }, bitgoRoot: {
27
+ getKeyShare(): Buffer;
28
+ }, userVrf: VrfDkg, backupVrf: VrfDkg, bitgoVrf: VrfDkg, path: Uint8Array, seedUser?: Buffer, seedBackup?: Buffer): Promise<[Derive, Derive, Derive, Derive]>;
29
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/dkls-vrf/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CA0CnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACnC,UAAU,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACrC,SAAS,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAkD3C"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateVrfDKGKeyShares = generateVrfDKGKeyShares;
4
+ exports.generateHardDerivedKeyShares = generateHardDerivedKeyShares;
5
+ const derive_1 = require("../ecdsa-dkls/derive");
6
+ const dkg_1 = require("./dkg");
7
+ /**
8
+ * Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
9
+ * returns the three completed VrfDkg sessions, mirroring `generateDKGKeyShares` from
10
+ * `ecdsa-dkls/util.ts` so VRF tests read like the existing DKLS ones.
11
+ */
12
+ async function generateVrfDKGKeyShares(seedUser, seedBackup, seedBitgo) {
13
+ const user = new dkg_1.VrfDkg(3, 2, 0, seedUser);
14
+ const backup = new dkg_1.VrfDkg(3, 2, 1, seedBackup);
15
+ const bitgo = new dkg_1.VrfDkg(3, 2, 2, seedBitgo);
16
+ // #region round 1
17
+ const userRound1Messages = await user.initDkg();
18
+ const backupRound1Messages = await backup.initDkg();
19
+ const bitgoRound1Messages = await bitgo.initDkg();
20
+ const bitgoRound2Messages = await bitgo.handleIncomingMessages({
21
+ p2pMessages: [],
22
+ broadcastMessages: [...userRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
23
+ });
24
+ // #endregion
25
+ // #region round 2
26
+ const userRound2Messages = await user.handleIncomingMessages({
27
+ p2pMessages: [],
28
+ broadcastMessages: [...bitgoRound1Messages.broadcastMessages, ...backupRound1Messages.broadcastMessages],
29
+ });
30
+ const backupRound2Messages = await backup.handleIncomingMessages({
31
+ p2pMessages: [],
32
+ broadcastMessages: [...userRound1Messages.broadcastMessages, ...bitgoRound1Messages.broadcastMessages],
33
+ });
34
+ await bitgo.handleIncomingMessages({
35
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
36
+ .flatMap((m) => m.p2pMessages)
37
+ .filter((m) => m.to === 2),
38
+ broadcastMessages: [],
39
+ });
40
+ await user.handleIncomingMessages({
41
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
42
+ .flatMap((m) => m.p2pMessages)
43
+ .filter((m) => m.to === 0),
44
+ broadcastMessages: [],
45
+ });
46
+ await backup.handleIncomingMessages({
47
+ p2pMessages: [bitgoRound2Messages, userRound2Messages, backupRound2Messages]
48
+ .flatMap((m) => m.p2pMessages)
49
+ .filter((m) => m.to === 1),
50
+ broadcastMessages: [],
51
+ });
52
+ return [user, backup, bitgo];
53
+ }
54
+ /**
55
+ * Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
56
+ * hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
57
+ * session with a second fresh BitGo session. The hard-derive wasm session is a
58
+ * 2-party threshold protocol per instance, so the BitGo server side runs two
59
+ * sessions — one per SDK party. All four derived keyshares agree on the child
60
+ * public key; the two BitGo shares are distinct private shares of that same key.
61
+ *
62
+ * @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
63
+ * index with the hardened bit set)
64
+ * @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
65
+ */
66
+ async function generateHardDerivedKeyShares(userRoot, backupRoot, bitgoRoot, userVrf, backupVrf, bitgoVrf, path, seedUser, seedBackup) {
67
+ const user = new derive_1.Derive(3, 2, 0, userRoot.getKeyShare(), userVrf.getKeyShare(), path, seedUser);
68
+ const backup = new derive_1.Derive(3, 2, 1, backupRoot.getKeyShare(), backupVrf.getKeyShare(), path, seedBackup);
69
+ const bitgoUserPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
70
+ const bitgoBackupPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
71
+ // #region round 1
72
+ const userMsg1 = await user.initDerive();
73
+ const backupMsg1 = await backup.initDerive();
74
+ const bitgoUserPairMsg1 = await bitgoUserPair.initDerive();
75
+ const bitgoBackupPairMsg1 = await bitgoBackupPair.initDerive();
76
+ const userMsg2 = user.handleIncomingMessages({
77
+ p2pMessages: [],
78
+ broadcastMessages: [{ payload: bitgoUserPairMsg1.payload, from: bitgoUserPairMsg1.from }],
79
+ });
80
+ const bitgoUserPairMsg2 = bitgoUserPair.handleIncomingMessages({
81
+ p2pMessages: [],
82
+ broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
83
+ });
84
+ const backupMsg2 = backup.handleIncomingMessages({
85
+ p2pMessages: [],
86
+ broadcastMessages: [{ payload: bitgoBackupPairMsg1.payload, from: bitgoBackupPairMsg1.from }],
87
+ });
88
+ const bitgoBackupPairMsg2 = bitgoBackupPair.handleIncomingMessages({
89
+ p2pMessages: [],
90
+ broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
91
+ });
92
+ // #endregion
93
+ // #region round 2
94
+ user.handleIncomingMessages({
95
+ p2pMessages: [],
96
+ broadcastMessages: [{ payload: bitgoUserPairMsg2.broadcastMessages[0].payload, from: 2 }],
97
+ });
98
+ bitgoUserPair.handleIncomingMessages({
99
+ p2pMessages: [],
100
+ broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: 0 }],
101
+ });
102
+ backup.handleIncomingMessages({
103
+ p2pMessages: [],
104
+ broadcastMessages: [{ payload: bitgoBackupPairMsg2.broadcastMessages[0].payload, from: 2 }],
105
+ });
106
+ bitgoBackupPair.handleIncomingMessages({
107
+ p2pMessages: [],
108
+ broadcastMessages: [{ payload: backupMsg2.broadcastMessages[0].payload, from: 1 }],
109
+ });
110
+ // #endregion
111
+ return [user, backup, bitgoUserPair, bitgoBackupPair];
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZGtscy12cmYvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDBEQThDQztBQWNELG9FQTREQztBQWhJRCxpREFBOEM7QUFDOUMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFFBQWlCLEVBQ2pCLFVBQW1CLEVBQ25CLFNBQWtCO0lBRWxCLE1BQU0sSUFBSSxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLGtCQUFrQjtJQUNsQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQzdELFdBQVcsRUFBRSxFQUFFO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUM7S0FDeEcsQ0FBQyxDQUFDO0lBQ0gsYUFBYTtJQUViLGtCQUFrQjtJQUNsQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FB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ZSB9IGZyb20gJy4uL2VjZHNhLWRrbHMvZGVyaXZlJztcbmltcG9ydCB7IFZyZkRrZyB9IGZyb20gJy4vZGtnJztcblxuLyoqXG4gKiBSdW5zIGEgbG9jYWwgMi1vZi0zIFZSRiBES0cgYWNyb3NzIHVzZXIgKDApLCBiYWNrdXAgKDEpIGFuZCBiaXRnbyAoMikgcGFydGllcyBhbmRcbiAqIHJldHVybnMgdGhlIHRocmVlIGNvbXBsZXRlZCBWcmZEa2cgc2Vzc2lvbnMsIG1pcnJvcmluZyBgZ2VuZXJhdGVES0dLZXlTaGFyZXNgIGZyb21cbiAqIGBlY2RzYS1ka2xzL3V0aWwudHNgIHNvIFZSRiB0ZXN0cyByZWFkIGxpa2UgdGhlIGV4aXN0aW5nIERLTFMgb25lcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlVnJmREtHS2V5U2hhcmVzKFxuICBzZWVkVXNlcj86IEJ1ZmZlcixcbiAgc2VlZEJhY2t1cD86IEJ1ZmZlcixcbiAgc2VlZEJpdGdvPzogQnVmZmVyXG4pOiBQcm9taXNlPFtWcmZEa2csIFZyZkRrZywgVnJmRGtnXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IFZyZkRrZygzLCAyLCAwLCBzZWVkVXNlcik7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBWcmZEa2coMywgMiwgMSwgc2VlZEJhY2t1cCk7XG4gIGNvbnN0IGJpdGdvID0gbmV3IFZyZkRrZygzLCAyLCAyLCBzZWVkQml0Z28pO1xuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlclJvdW5kMU1lc3NhZ2VzID0gYXdhaXQgdXNlci5pbml0RGtnKCk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMU1lc3NhZ2VzID0gYXdhaXQgYmFja3VwLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDFNZXNzYWdlcyA9IGF3YWl0IGJpdGdvLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDJNZXNzYWdlcyA9IGF3YWl0IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLnVzZXJSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYmFja3VwUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXNdLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gcm91bmQgMlxuICBjb25zdCB1c2VyUm91bmQyTWVzc2FnZXMgPSBhd2FpdCB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLmJpdGdvUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsIC4uLmJhY2t1cFJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzXSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMk1lc3NhZ2VzID0gYXdhaXQgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLnVzZXJSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYml0Z29Sb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlc10sXG4gIH0pO1xuICBhd2FpdCBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGF3YWl0IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtiaXRnb1JvdW5kMk1lc3NhZ2VzLCB1c2VyUm91bmQyTWVzc2FnZXMsIGJhY2t1cFJvdW5kMk1lc3NhZ2VzXVxuICAgICAgLmZsYXRNYXAoKG0pID0+IG0ucDJwTWVzc2FnZXMpXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAwKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBhd2FpdCBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtiaXRnb1JvdW5kMk1lc3NhZ2VzLCB1c2VyUm91bmQyTWVzc2FnZXMsIGJhY2t1cFJvdW5kMk1lc3NhZ2VzXVxuICAgICAgLmZsYXRNYXAoKG0pID0+IG0ucDJwTWVzc2FnZXMpXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29dO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGhhcmQtZGVyaXZhdGlvbiBjZXJlbW9ueSBvbiB0b3Agb2YgY29tcGxldGVkIHJvb3Qgc2Vzc2lvbnM6IHRoZSB1c2VyICgwKVxuICogaGFyZC1kZXJpdmUgc2Vzc2lvbiBwYWlycyB3aXRoIGEgZnJlc2ggQml0R28gKDIpIHNlc3Npb24sIGFuZCB0aGUgYmFja3VwICgxKVxuICogc2Vzc2lvbiB3aXRoIGEgc2Vjb25kIGZyZXNoIEJpdEdvIHNlc3Npb24uIFRoZSBoYXJkLWRlcml2ZSB3YXNtIHNlc3Npb24gaXMgYVxuICogMi1wYXJ0eSB0aHJlc2hvbGQgcHJvdG9jb2wgcGVyIGluc3RhbmNlLCBzbyB0aGUgQml0R28gc2VydmVyIHNpZGUgcnVucyB0d29cbiAqIHNlc3Npb25zIOKAlCBvbmUgcGVyIFNESyBwYXJ0eS4gQWxsIGZvdXIgZGVyaXZlZCBrZXlzaGFyZXMgYWdyZWUgb24gdGhlIGNoaWxkXG4gKiBwdWJsaWMga2V5OyB0aGUgdHdvIEJpdEdvIHNoYXJlcyBhcmUgZGlzdGluY3QgcHJpdmF0ZSBzaGFyZXMgb2YgdGhhdCBzYW1lIGtleS5cbiAqXG4gKiBAcGFyYW0gcGF0aCBoYXJkZW5lZCBkZXJpdmF0aW9uIHBhdGggYnl0ZXMgKGUuZy4gYG0vMCdgIGFzIGEgNC1ieXRlIGJpZy1lbmRpYW5cbiAqICAgaW5kZXggd2l0aCB0aGUgaGFyZGVuZWQgYml0IHNldClcbiAqIEByZXR1cm5zIFt1c2VyLCBiYWNrdXAsIGJpdGdvVXNlclBhaXIsIGJpdGdvQmFja3VwUGFpcl0gY29tcGxldGVkIERlcml2ZSBzZXNzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVIYXJkRGVyaXZlZEtleVNoYXJlcyhcbiAgdXNlclJvb3Q6IHsgZ2V0S2V5U2hhcmUoKTogQnVmZmVyIH0sXG4gIGJhY2t1cFJvb3Q6IHsgZ2V0S2V5U2hhcmUoKTogQnVmZmVyIH0sXG4gIGJpdGdvUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgdXNlclZyZjogVnJmRGtnLFxuICBiYWNrdXBWcmY6IFZyZkRrZyxcbiAgYml0Z29WcmY6IFZyZkRrZyxcbiAgcGF0aDogVWludDhBcnJheSxcbiAgc2VlZFVzZXI/OiBCdWZmZXIsXG4gIHNlZWRCYWNrdXA/OiBCdWZmZXJcbik6IFByb21pc2U8W0Rlcml2ZSwgRGVyaXZlLCBEZXJpdmUsIERlcml2ZV0+IHtcbiAgY29uc3QgdXNlciA9IG5ldyBEZXJpdmUoMywgMiwgMCwgdXNlclJvb3QuZ2V0S2V5U2hhcmUoKSwgdXNlclZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoLCBzZWVkVXNlcik7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBEZXJpdmUoMywgMiwgMSwgYmFja3VwUm9vdC5nZXRLZXlTaGFyZSgpLCBiYWNrdXBWcmYuZ2V0S2V5U2hhcmUoKSwgcGF0aCwgc2VlZEJhY2t1cCk7XG4gIGNvbnN0IGJpdGdvVXNlclBhaXIgPSBuZXcgRGVyaXZlKDMsIDIsIDIsIGJpdGdvUm9vdC5nZXRLZXlTaGFyZSgpLCBiaXRnb1ZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoKTtcbiAgY29uc3QgYml0Z29CYWNrdXBQYWlyID0gbmV3IERlcml2ZSgzLCAyLCAyLCBiaXRnb1Jvb3QuZ2V0S2V5U2hhcmUoKSwgYml0Z29WcmYuZ2V0S2V5U2hhcmUoKSwgcGF0aCk7XG5cbiAgLy8gI3JlZ2lvbiByb3VuZCAxXG4gIGNvbnN0IHVzZXJNc2cxID0gYXdhaXQgdXNlci5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJhY2t1cE1zZzEgPSBhd2FpdCBiYWNrdXAuaW5pdERlcml2ZSgpO1xuICBjb25zdCBiaXRnb1VzZXJQYWlyTXNnMSA9IGF3YWl0IGJpdGdvVXNlclBhaXIuaW5pdERlcml2ZSgpO1xuICBjb25zdCBiaXRnb0JhY2t1cFBhaXJNc2cxID0gYXdhaXQgYml0Z29CYWNrdXBQYWlyLmluaXREZXJpdmUoKTtcblxuICBjb25zdCB1c2VyTXNnMiA9IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiaXRnb1VzZXJQYWlyTXNnMS5wYXlsb2FkLCBmcm9tOiBiaXRnb1VzZXJQYWlyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYml0Z29Vc2VyUGFpck1zZzIgPSBiaXRnb1VzZXJQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzEucGF5bG9hZCwgZnJvbTogdXNlck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cE1zZzIgPSBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiaXRnb0JhY2t1cFBhaXJNc2cxLnBheWxvYWQsIGZyb206IGJpdGdvQmFja3VwUGFpck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvQmFja3VwUGFpck1zZzIgPSBiaXRnb0JhY2t1cFBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiYWNrdXBNc2cxLnBheWxvYWQsIGZyb206IGJhY2t1cE1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIHJvdW5kIDJcbiAgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvVXNlclBhaXJNc2cyLmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnBheWxvYWQsIGZyb206IDIgfV0sXG4gIH0pO1xuICBiaXRnb1VzZXJQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMCB9XSxcbiAgfSk7XG4gIGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvQmFja3VwUGFpck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMiB9XSxcbiAgfSk7XG4gIGJpdGdvQmFja3VwUGFpci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJhY2t1cE1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29Vc2VyUGFpciwgYml0Z29CYWNrdXBQYWlyXTtcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  export * as EcdsaTypes from './types';
2
2
  export * as EcdsaRangeProof from './rangeproof';
3
3
  export * as EcdsaPaillierProof from './paillierproof';
4
+ export * as EcdsaZkVProof from './zkVProof';
4
5
  export declare const minModulusBitLength = 3072;
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,eAAe,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,kBAAkB,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,eAAe,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,kBAAkB,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
@@ -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.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
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,17 +15,28 @@ 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 (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
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
- exports.minModulusBitLength = exports.EcdsaPaillierProof = exports.EcdsaRangeProof = exports.EcdsaTypes = void 0;
36
+ exports.minModulusBitLength = exports.EcdsaZkVProof = exports.EcdsaPaillierProof = exports.EcdsaRangeProof = exports.EcdsaTypes = void 0;
23
37
  exports.EcdsaTypes = __importStar(require("./types"));
24
38
  exports.EcdsaRangeProof = __importStar(require("./rangeproof"));
25
39
  exports.EcdsaPaillierProof = __importStar(require("./paillierproof"));
40
+ exports.EcdsaZkVProof = __importStar(require("./zkVProof"));
26
41
  exports.minModulusBitLength = 3072;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBc0M7QUFDdEMsZ0VBQWdEO0FBQ2hELHNFQUFzRDtBQUV6QyxRQUFBLG1CQUFtQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIEVjZHNhVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBFY2RzYVJhbmdlUHJvb2YgZnJvbSAnLi9yYW5nZXByb29mJztcbmV4cG9ydCAqIGFzIEVjZHNhUGFpbGxpZXJQcm9vZiBmcm9tICcuL3BhaWxsaWVycHJvb2YnO1xuXG5leHBvcnQgY29uc3QgbWluTW9kdWx1c0JpdExlbmd0aCA9IDMwNzI7XG4iXX0=
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.verify = exports.prove = exports.generateP = exports.m = exports.alpha = void 0;
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
- exports.verify = verify;
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;AAQjB,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhF;AAwBD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,SAAsB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA2C3G;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,CAgCT;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"}
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"}