@bsv/sdk 1.6.19 → 1.6.22

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 (51) hide show
  1. package/dist/cjs/package.json +3 -3
  2. package/dist/cjs/src/primitives/ECDSA.js +43 -42
  3. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  4. package/dist/cjs/src/primitives/Point.js +70 -91
  5. package/dist/cjs/src/primitives/Point.js.map +1 -1
  6. package/dist/cjs/src/primitives/PrivateKey.js +31 -1
  7. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  8. package/dist/cjs/src/script/ScriptEvaluationError.js +27 -0
  9. package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -0
  10. package/dist/cjs/src/script/Spend.js +13 -7
  11. package/dist/cjs/src/script/Spend.js.map +1 -1
  12. package/dist/cjs/src/script/index.js +3 -1
  13. package/dist/cjs/src/script/index.js.map +1 -1
  14. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  15. package/dist/esm/src/primitives/ECDSA.js +43 -42
  16. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  17. package/dist/esm/src/primitives/Point.js +67 -90
  18. package/dist/esm/src/primitives/Point.js.map +1 -1
  19. package/dist/esm/src/primitives/PrivateKey.js +32 -2
  20. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  21. package/dist/esm/src/script/ScriptEvaluationError.js +33 -0
  22. package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -0
  23. package/dist/esm/src/script/Spend.js +14 -8
  24. package/dist/esm/src/script/Spend.js.map +1 -1
  25. package/dist/esm/src/script/index.js +1 -0
  26. package/dist/esm/src/script/index.js.map +1 -1
  27. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  28. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  29. package/dist/types/src/primitives/Point.d.ts +3 -5
  30. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  31. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  32. package/dist/types/src/script/ScriptEvaluationError.d.ts +24 -0
  33. package/dist/types/src/script/ScriptEvaluationError.d.ts.map +1 -0
  34. package/dist/types/src/script/Spend.d.ts.map +1 -1
  35. package/dist/types/src/script/index.d.ts +1 -0
  36. package/dist/types/src/script/index.d.ts.map +1 -1
  37. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  38. package/dist/umd/bundle.js +5 -5
  39. package/dist/umd/bundle.js.map +1 -1
  40. package/docs/reference/auth.md +1 -1
  41. package/docs/reference/messages.md +8 -6
  42. package/docs/reference/overlay-tools.md +3 -0
  43. package/docs/reference/primitives.md +513 -283
  44. package/docs/reference/script.md +32 -0
  45. package/package.json +3 -3
  46. package/src/primitives/ECDSA.ts +50 -49
  47. package/src/primitives/Point.ts +65 -99
  48. package/src/primitives/PrivateKey.ts +34 -2
  49. package/src/script/ScriptEvaluationError.ts +44 -0
  50. package/src/script/Spend.ts +14 -12
  51. package/src/script/index.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.6.19",
3
+ "version": "1.6.22",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -45,6 +45,7 @@
45
45
  "devDependencies": {
46
46
  "@eslint/js": "^9.23.0",
47
47
  "@jest/globals": "^29.7.0",
48
+ "@rspack/cli": "^1.4.9",
48
49
  "@types/jest": "^29.5.14",
49
50
  "@types/node": "^22.13.14",
50
51
  "eslint": "^9.23.0",
@@ -57,8 +58,7 @@
57
58
  "ts2md": "^0.2.8",
58
59
  "tsconfig-to-dual-package": "^1.2.0",
59
60
  "typescript": "5.1",
60
- "typescript-eslint": "^8.29.0",
61
- "@rspack/cli": "^0.4.4"
61
+ "typescript-eslint": "^8.29.0"
62
62
  },
63
63
  "ts-standard": {
64
64
  "project": "tsconfig.eslint.json",
@@ -40,6 +40,10 @@ function truncateToN(msg, truncOnly, curve = new Curve_js_1.default()) {
40
40
  return msg;
41
41
  }
42
42
  }
43
+ const curve = new Curve_js_1.default();
44
+ const bytes = curve.n.byteLength();
45
+ const ns1 = curve.n.subn(1);
46
+ const halfN = Point_js_1.N_BIGINT >> 1n;
43
47
  /**
44
48
  * Generates a digital signature for a given message.
45
49
  *
@@ -56,71 +60,68 @@ function truncateToN(msg, truncOnly, curve = new Curve_js_1.default()) {
56
60
  * const signature = sign(msg, key)
57
61
  */
58
62
  const sign = (msg, key, forceLowS = false, customK) => {
59
- const curve = new Curve_js_1.default();
63
+ // —— prepare inputs ────────────────────────────────────────────────────────
60
64
  msg = truncateToN(msg);
61
- // Zero-extend key to provide enough entropy
62
- const bytes = curve.n.byteLength();
65
+ const msgBig = BigInt('0x' + msg.toString(16));
66
+ const keyBig = BigInt('0x' + key.toString(16));
67
+ // DRBG seeding identical to previous implementation
63
68
  const bkey = key.toArray('be', bytes);
64
- // Zero-extend nonce to have the same byte size as N
65
69
  const nonce = msg.toArray('be', bytes);
66
- // Instantiate Hmac_DRBG
67
70
  const drbg = new DRBG_js_1.default(bkey, nonce);
68
- // Number of bytes to generate
69
- const ns1 = curve.n.subn(1);
70
71
  for (let iter = 0;; iter++) {
71
- // Compute the k-value
72
- let k = typeof customK === 'function'
72
+ // —— k generation & basic validity checks ───────────────────────────────
73
+ let kBN = typeof customK === 'function'
73
74
  ? customK(iter)
74
75
  : BigNumber_js_1.default.isBN(customK)
75
76
  ? customK
76
77
  : new BigNumber_js_1.default(drbg.generate(bytes), 16);
77
- if (k != null) {
78
- k = truncateToN(k, true);
79
- }
80
- else {
78
+ if (kBN == null)
81
79
  throw new Error('k is undefined');
82
- }
83
- if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) {
80
+ kBN = truncateToN(kBN, true);
81
+ if (kBN.cmpn(1) <= 0 || kBN.cmp(ns1) >= 0) {
84
82
  if (BigNumber_js_1.default.isBN(customK)) {
85
- throw new Error('Invalid fixed custom K value (must be more than 1 and less than N-1)');
86
- }
87
- else {
88
- continue;
83
+ throw new Error('Invalid fixed custom K value (must be >1 and <N1)');
89
84
  }
85
+ continue;
90
86
  }
91
- const kp = curve.g.mul(k);
92
- if (kp.isInfinity()) {
87
+ const kBig = BigInt('0x' + kBN.toString(16));
88
+ // —— R = k·G (Jacobian, window‑NAF) ──────────────────────────────────────
89
+ const R = (0, Point_js_1.scalarMultiplyWNAF)(kBig, { x: Point_js_1.GX_BIGINT, y: Point_js_1.GY_BIGINT });
90
+ if (R.Z === 0n) { // point at infinity – should never happen for valid k
93
91
  if (BigNumber_js_1.default.isBN(customK)) {
94
- throw new Error('Invalid fixed custom K value (must not create a point at infinity when multiplied by the generator point)');
95
- }
96
- else {
97
- continue;
92
+ throw new Error('Invalid fixed custom K value (k·G at infinity)');
98
93
  }
94
+ continue;
99
95
  }
100
- const kpX = kp.getX();
101
- const r = kpX.umod(curve.n);
102
- if (r.cmpn(0) === 0) {
96
+ // affine X coordinate of R
97
+ const zInv = (0, Point_js_1.biModInv)(R.Z);
98
+ const zInv2 = (0, Point_js_1.biModMul)(zInv, zInv);
99
+ const xAff = (0, Point_js_1.biModMul)(R.X, zInv2);
100
+ const rBig = (0, Point_js_1.modN)(xAff);
101
+ if (rBig === 0n) {
103
102
  if (BigNumber_js_1.default.isBN(customK)) {
104
- throw new Error('Invalid fixed custom K value (when multiplied by G, the resulting x coordinate mod N must not be zero)');
105
- }
106
- else {
107
- continue;
103
+ throw new Error('Invalid fixed custom K value (r == 0)');
108
104
  }
105
+ continue;
109
106
  }
110
- let s = k.invm(curve.n).mul(r.mul(key).iadd(msg));
111
- s = s.umod(curve.n);
112
- if (s.cmpn(0) === 0) {
107
+ // —— s = k⁻¹ · (msg + r·key) mod n ─────────────────────────────────────
108
+ const kInv = (0, Point_js_1.modInvN)(kBig);
109
+ const rTimesKey = (0, Point_js_1.modMulN)(rBig, keyBig);
110
+ const sum = (0, Point_js_1.modN)(msgBig + rTimesKey);
111
+ let sBig = (0, Point_js_1.modMulN)(kInv, sum);
112
+ if (sBig === 0n) {
113
113
  if (BigNumber_js_1.default.isBN(customK)) {
114
- throw new Error('Invalid fixed custom K value (when used with the key, it cannot create a zero value for S)');
115
- }
116
- else {
117
- continue;
114
+ throw new Error('Invalid fixed custom K value (s == 0)');
118
115
  }
116
+ continue;
119
117
  }
120
- // Use complement of `s`, if it is > `n / 2`
121
- if (forceLowS && s.cmp(curve.n.ushrn(1)) > 0) {
122
- s = curve.n.sub(s);
118
+ // low‑S mitigation (BIP‑62/BIP‑340 style)
119
+ if (forceLowS && sBig > halfN) {
120
+ sBig = Point_js_1.N_BIGINT - sBig;
123
121
  }
122
+ // —— convert back to BigNumber & return ─────────────────────────────────
123
+ const r = new BigNumber_js_1.default(rBig.toString(16), 16);
124
+ const s = new BigNumber_js_1.default(sBig.toString(16), 16);
124
125
  return new Signature_js_1.default(r, s);
125
126
  }
126
127
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ECDSA.js","sourceRoot":"","sources":["../../../../src/primitives/ECDSA.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ECDSA.js","sourceRoot":"","sources":["../../../../src/primitives/ECDSA.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAsC;AACtC,kEAAsC;AACtC,0DAA8B;AAC9B,yCAAkJ;AAClJ,wDAA4B;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,WAAW,CAClB,GAAc,EACd,SAAmB,EACnB,KAAK,GAAG,IAAI,kBAAK,EAAE;IAEnB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACxD,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAClB;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACxB;SAAM;QACL,OAAO,GAAG,CAAA;KACX;AACH,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,kBAAK,EAAE,CAAA;AACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;AAClC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC3B,MAAM,KAAK,GAAG,mBAAQ,IAAI,EAAE,CAAA;AAE5B;;;;;;;;;;;;;;GAcG;AACI,MAAM,IAAI,GAAG,CAClB,GAAc,EACd,GAAc,EACd,YAAqB,KAAK,EAC1B,OAAmD,EACxC,EAAE;IACb,6EAA6E;IAC7E,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAE9C,oDAAoD;IACpD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,iBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAElC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,EAAE,EAAE;QAC3B,0EAA0E;QAC1E,IAAI,GAAG,GACL,OAAO,OAAO,KAAK,UAAU;YAC3B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,sBAAS,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,sBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAE/C,IAAI,GAAG,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAClD,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAE5B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,sBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;aACtE;YACD,SAAQ;SACT;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QAE5C,2EAA2E;QAC3E,MAAM,CAAC,GAAG,IAAA,6BAAkB,EAAC,IAAI,EAAE,EAAE,CAAC,EAAE,oBAAS,EAAE,CAAC,EAAE,oBAAS,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,sDAAsD;YACtE,IAAI,sBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;aAClE;YACD,SAAQ;SACT;QAED,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,IAAA,eAAI,EAAC,IAAI,CAAC,CAAA;QAEvB,IAAI,IAAI,KAAK,EAAE,EAAE;YACf,IAAI,sBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;aACzD;YACD,SAAQ;SACT;QAED,0EAA0E;QAC1E,MAAM,IAAI,GAAG,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,SAAS,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,IAAA,eAAI,EAAC,MAAM,GAAG,SAAS,CAAC,CAAA;QACpC,IAAI,IAAI,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAE7B,IAAI,IAAI,KAAK,EAAE,EAAE;YACf,IAAI,sBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;aACzD;YACD,SAAQ;SACT;QAED,0CAA0C;QAC1C,IAAI,SAAS,IAAI,IAAI,GAAG,KAAK,EAAE;YAC7B,IAAI,GAAG,mBAAQ,GAAG,IAAI,CAAA;SACvB;QAED,0EAA0E;QAC1E,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9C,OAAO,IAAI,sBAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAC3B;AACH,CAAC,CAAA;AAlFY,QAAA,IAAI,QAkFhB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,MAAM,GAAG,CAAC,GAAc,EAAE,GAAc,EAAE,GAAU,EAAW,EAAE;IAC9E,2BAA2B;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;IAED,MAAM,SAAS,GAAG;QAChB,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IACD,MAAM,SAAS,GAAG;QAChB,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrC,CAAA;IAED,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAA;IAEd,kCAAkC;IAClC,IAAI,CAAC,IAAI,kBAAO,IAAI,CAAC,IAAI,mBAAQ,IAAI,CAAC,IAAI,kBAAO,IAAI,CAAC,IAAI,mBAAQ,EAAE;QAClE,OAAO,KAAK,CAAA;KACb;IAED,6EAA6E;IAC7E,MAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,CAAC,CAAC,CAAA,CAAC,YAAY;IACjC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA,CAAC,sBAAsB;IACjD,MAAM,EAAE,GAAG,IAAA,kBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,EAAE,GAAG,IAAA,kBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAExB,4EAA4E;IAC5E,MAAM,EAAE,GAAG,IAAA,6BAAkB,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,oBAAS,EAAE,CAAC,EAAE,oBAAS,EAAE,CAAC,CAAA;IACjE,MAAM,EAAE,GAAG,IAAA,6BAAkB,EAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,IAAA,gBAAK,EAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACvB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA,CAAC,oBAAoB;IAEjD,6EAA6E;IAC7E,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,cAAc;IACzC,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,MAAM;IACzC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA,CAAC,gBAAgB;IAElD,6EAA6E;IAC7E,MAAM,CAAC,GAAG,IAAA,eAAI,EAAC,IAAI,CAAC,CAAA;IACpB,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA;AA5CY,QAAA,MAAM,UA4ClB"}
@@ -3,12 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.modInvN = exports.modMulN = exports.modN = exports.scalarMultiplyWNAF = exports.jpNeg = exports.jpAdd = exports.jpDouble = exports.GY_BIGINT = exports.GX_BIGINT = exports.biModSqr = exports.biModInv = exports.biModAdd = exports.biModMul = exports.biModSub = exports.biMod = exports.red = exports.MASK_256 = exports.N_BIGINT = exports.P_BIGINT = exports.BI_EIGHT = exports.BI_FOUR = exports.BI_THREE = exports.BI_TWO = exports.BI_ONE = exports.BI_ZERO = void 0;
6
+ exports.modInvN = exports.modMulN = exports.modN = exports.scalarMultiplyWNAF = exports.jpNeg = exports.jpAdd = exports.jpDouble = exports.GY_BIGINT = exports.GX_BIGINT = exports.biModSqrt = exports.P_PLUS1_DIV4 = exports.biModPow = exports.biModSqr = exports.biModInv = exports.biModAdd = exports.biModMul = exports.biModSub = exports.biMod = exports.red = exports.MASK_256 = exports.N_BIGINT = exports.P_BIGINT = exports.BI_EIGHT = exports.BI_FOUR = exports.BI_THREE = exports.BI_TWO = exports.BI_ONE = exports.BI_ZERO = void 0;
7
7
  const BasePoint_js_1 = __importDefault(require("./BasePoint.js"));
8
8
  const JacobianPoint_js_1 = __importDefault(require("./JacobianPoint.js"));
9
9
  const BigNumber_js_1 = __importDefault(require("./BigNumber.js"));
10
10
  const utils_js_1 = require("./utils.js");
11
- const ReductionContext_js_1 = __importDefault(require("./ReductionContext.js"));
12
11
  // -----------------------------------------------------------------------------
13
12
  // BigInt helpers & constants (secp256k1) – hoisted so we don't recreate them on
14
13
  // every Point.mul() call.
@@ -58,6 +57,34 @@ const biModInv = (a) => {
58
57
  exports.biModInv = biModInv;
59
58
  const biModSqr = (a) => (0, exports.biModMul)(a, a);
60
59
  exports.biModSqr = biModSqr;
60
+ const biModPow = (base, exp) => {
61
+ let result = exports.BI_ONE;
62
+ base = (0, exports.biMod)(base);
63
+ let e = exp;
64
+ while (e > exports.BI_ZERO) {
65
+ if ((e & exports.BI_ONE) === exports.BI_ONE)
66
+ result = (0, exports.biModMul)(result, base);
67
+ base = (0, exports.biModMul)(base, base);
68
+ e >>= exports.BI_ONE;
69
+ }
70
+ return result;
71
+ };
72
+ exports.biModPow = biModPow;
73
+ exports.P_PLUS1_DIV4 = (exports.P_BIGINT + 1n) >> 2n;
74
+ const biModSqrt = (a) => {
75
+ const r = (0, exports.biModPow)(a, exports.P_PLUS1_DIV4);
76
+ return (0, exports.biModMul)(r, r) === (0, exports.biMod)(a) ? r : null;
77
+ };
78
+ exports.biModSqrt = biModSqrt;
79
+ const toBigInt = (x) => {
80
+ if (BigNumber_js_1.default.isBN(x))
81
+ return BigInt('0x' + x.toString(16));
82
+ if (typeof x === 'string')
83
+ return BigInt('0x' + x);
84
+ if (Array.isArray(x))
85
+ return BigInt('0x' + (0, utils_js_1.toHex)(x));
86
+ return BigInt(x);
87
+ };
61
88
  // Generator point coordinates as bigint constants
62
89
  exports.GX_BIGINT = BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798');
63
90
  exports.GY_BIGINT = BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8');
@@ -260,12 +287,6 @@ class Point extends BasePoint_js_1.default {
260
287
  const bytes = (0, utils_js_1.toArray)(str, 'hex');
261
288
  return Point.fromDER(bytes);
262
289
  }
263
- static redSqrtOptimized(y2) {
264
- const red = Point.red;
265
- const p = red.m; // The modulus
266
- const exponent = p.addn(1).iushrn(2); // (p + 1) / 4
267
- return y2.redPow(exponent);
268
- }
269
290
  /**
270
291
  * Generates a point from an x coordinate and a boolean indicating whether the corresponding
271
292
  * y coordinate is odd.
@@ -282,62 +303,18 @@ class Point extends BasePoint_js_1.default {
282
303
  * const point = Point.fromX(xCoordinate, true);
283
304
  */
284
305
  static fromX(x, odd) {
285
- function mod(a, n) {
286
- return ((a % n) + n) % n;
287
- }
288
- function modPow(base, exponent, modulus) {
289
- let result = BigInt(1);
290
- base = mod(base, modulus);
291
- while (exponent > BigInt(0)) {
292
- if ((exponent & BigInt(1)) === BigInt(1)) {
293
- result = mod(result * base, modulus);
294
- }
295
- exponent >>= BigInt(1);
296
- base = mod(base * base, modulus);
297
- }
298
- return result;
299
- }
300
- function sqrtMod(a, p) {
301
- const exponent = (p + BigInt(1)) >> BigInt(2);
302
- const sqrtCandidate = modPow(a, exponent, p);
303
- if (mod(sqrtCandidate * sqrtCandidate, p) === mod(a, p)) {
304
- return sqrtCandidate;
305
- }
306
- else {
307
- return null;
308
- }
309
- }
310
- // Curve parameters for secp256k1
311
- const p = BigInt('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F');
312
- const b = BigInt(7);
313
- let xBigInt;
314
- if (x instanceof BigNumber_js_1.default) {
315
- xBigInt = BigInt('0x' + x.toString(16));
316
- }
317
- else if (typeof x === 'string') {
318
- xBigInt = BigInt('0x' + x);
319
- }
320
- else if (Array.isArray(x)) {
321
- xBigInt = BigInt('0x' + (0, utils_js_1.toHex)(x).padStart(64, '0'));
322
- }
323
- else if (typeof x === 'number') {
324
- xBigInt = BigInt(x);
325
- }
326
- else {
327
- throw new Error('Invalid x-coordinate type');
328
- }
329
- xBigInt = mod(xBigInt, p);
330
- const y2 = mod(modPow(xBigInt, BigInt(3), p) + b, p);
331
- let y = sqrtMod(y2, p);
332
- if (y === null) {
306
+ let xBigInt = toBigInt(x);
307
+ xBigInt = (0, exports.biMod)(xBigInt);
308
+ const y2 = (0, exports.biModAdd)((0, exports.biModMul)((0, exports.biModSqr)(xBigInt), xBigInt), 7n);
309
+ const y = (0, exports.biModSqrt)(y2);
310
+ if (y === null)
333
311
  throw new Error('Invalid point');
334
- }
335
- const isYOdd = y % BigInt(2) === BigInt(1);
336
- if ((odd && !isYOdd) || (!odd && isYOdd)) {
337
- y = p - y;
312
+ let yBig = y;
313
+ if ((yBig & exports.BI_ONE) !== (odd ? exports.BI_ONE : exports.BI_ZERO)) {
314
+ yBig = (0, exports.biModSub)(exports.P_BIGINT, yBig);
338
315
  }
339
316
  const xBN = new BigNumber_js_1.default(xBigInt.toString(16), 16);
340
- const yBN = new BigNumber_js_1.default(y.toString(16), 16);
317
+ const yBN = new BigNumber_js_1.default(yBig.toString(16), 16);
341
318
  return new Point(xBN, yBN);
342
319
  }
343
320
  /**
@@ -579,24 +556,30 @@ class Point extends BasePoint_js_1.default {
579
556
  }
580
557
  // P + (-P) = O
581
558
  if (this.neg().eq(p)) {
582
- return new Point(new BigNumber_js_1.default(0), new BigNumber_js_1.default(0));
559
+ return new Point(null, null);
583
560
  }
584
561
  // P + Q = O
585
562
  if (this.x?.cmp(p.x ?? new BigNumber_js_1.default(0)) === 0) {
586
- return new Point(new BigNumber_js_1.default(0), new BigNumber_js_1.default(0));
563
+ return new Point(null, null);
587
564
  }
588
- const q = {
589
- x: BigInt('0x' + p.x.fromRed().toString(16)),
590
- y: BigInt('0x' + p.y.fromRed().toString(16))
565
+ const P1 = {
566
+ X: BigInt('0x' + this.x.fromRed().toString(16)),
567
+ Y: BigInt('0x' + this.y.fromRed().toString(16)),
568
+ Z: exports.BI_ONE
591
569
  };
592
- const t = {
593
- x: BigInt('0x' + this.x.fromRed().toString(16)),
594
- y: BigInt('0x' + this.y.fromRed().toString(16))
570
+ const Q1 = {
571
+ X: BigInt('0x' + p.x.fromRed().toString(16)),
572
+ Y: BigInt('0x' + p.y.fromRed().toString(16)),
573
+ Z: exports.BI_ONE
595
574
  };
596
- const λ = (0, exports.biModMul)((0, exports.biModSub)(q.y, t.y), (0, exports.biModInv)((0, exports.biModSub)(q.x, t.x)));
597
- const rx = (0, exports.biModSub)((0, exports.biModSub)((0, exports.biModSqr)(λ), t.x), q.x);
598
- const ry = (0, exports.biModSub)((0, exports.biModMul)(λ, (0, exports.biModSub)(t.x, rx)), t.y);
599
- return new Point(rx.toString(16), ry.toString(16));
575
+ const R = (0, exports.jpAdd)(P1, Q1);
576
+ if (R.Z === exports.BI_ZERO)
577
+ return new Point(null, null);
578
+ const zInv = (0, exports.biModInv)(R.Z);
579
+ const zInv2 = (0, exports.biModMul)(zInv, zInv);
580
+ const xRes = (0, exports.biModMul)(R.X, zInv2);
581
+ const yRes = (0, exports.biModMul)(R.Y, (0, exports.biModMul)(zInv2, zInv));
582
+ return new Point(xRes.toString(16), yRes.toString(16));
600
583
  }
601
584
  /**
602
585
  * Doubles the current point.
@@ -608,21 +591,21 @@ class Point extends BasePoint_js_1.default {
608
591
  * const result = P.dbl();
609
592
  * */
610
593
  dbl() {
611
- if (this.inf) {
594
+ if (this.inf)
612
595
  return this;
596
+ if (this.x === null || this.y === null) {
597
+ throw new Error('Point coordinates cannot be null');
613
598
  }
614
- // 2P = O
615
- const ys1 = (this.y ?? new BigNumber_js_1.default(0)).redAdd(this.y ?? new BigNumber_js_1.default(0));
616
- if (ys1.cmpn(0) === 0) {
617
- return new Point(new BigNumber_js_1.default(0), new BigNumber_js_1.default(0));
618
- }
619
- const a = this.curve.a;
620
- const x2 = (this.x ?? new BigNumber_js_1.default(0)).redSqr();
621
- const dyinv = ys1.redInvm();
622
- const c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
623
- const nx = c.redSqr().redISub((this.x ?? new BigNumber_js_1.default(0)).redAdd(this.x ?? new BigNumber_js_1.default(0)));
624
- const ny = c.redMul((this.x ?? new BigNumber_js_1.default(0)).redSub(nx)).redISub(this.y ?? new BigNumber_js_1.default(0));
625
- return new Point(nx, ny);
599
+ const X = BigInt('0x' + this.x.fromRed().toString(16));
600
+ const Y = BigInt('0x' + this.y.fromRed().toString(16));
601
+ if (Y === exports.BI_ZERO)
602
+ return new Point(null, null);
603
+ const R = (0, exports.jpDouble)({ X, Y, Z: exports.BI_ONE });
604
+ const zInv = (0, exports.biModInv)(R.Z);
605
+ const zInv2 = (0, exports.biModMul)(zInv, zInv);
606
+ const xRes = (0, exports.biModMul)(R.X, zInv2);
607
+ const yRes = (0, exports.biModMul)(R.Y, (0, exports.biModMul)(zInv2, zInv));
608
+ return new Point(xRes.toString(16), yRes.toString(16));
626
609
  }
627
610
  /**
628
611
  * Returns X coordinate of point
@@ -1032,7 +1015,7 @@ class Point extends BasePoint_js_1.default {
1032
1015
  for (i = 0; i < points.length; i++) {
1033
1016
  const split = this.curve._endoSplit(coeffs[i]);
1034
1017
  let p = points[i];
1035
- let beta = p._getBeta() ?? new Point(new BigNumber_js_1.default(0), new BigNumber_js_1.default(0));
1018
+ let beta = p._getBeta() ?? new Point(null, null);
1036
1019
  if (split.k1.negative !== 0) {
1037
1020
  split.k1.ineg();
1038
1021
  p = p.neg(true);
@@ -1106,9 +1089,5 @@ class Point extends BasePoint_js_1.default {
1106
1089
  };
1107
1090
  }
1108
1091
  }
1109
- Point.red = new ReductionContext_js_1.default('k256');
1110
- Point.a = new BigNumber_js_1.default(0).toRed(Point.red);
1111
- Point.b = new BigNumber_js_1.default(7).toRed(Point.red);
1112
- Point.zero = new BigNumber_js_1.default(0).toRed(Point.red);
1113
1092
  exports.default = Point;
1114
1093
  //# sourceMappingURL=Point.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Point.js","sourceRoot":"","sources":["../../../../src/primitives/Point.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Point.js","sourceRoot":"","sources":["../../../../src/primitives/Point.ts"],"names":[],"mappings":"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"}
@@ -402,8 +402,38 @@ class PrivateKey extends BigNumber_js_1.default {
402
402
  }
403
403
  const poly = Polynomial_js_1.default.fromPrivateKey(this, threshold);
404
404
  const points = [];
405
+ const usedXCoordinates = new Set();
406
+ const curve = new Curve_js_1.default();
407
+ /**
408
+ * Cryptographically secure x-coordinate generation for Shamir's Secret Sharing (toKeyShares)
409
+ *
410
+ * - Each x-coordinate is derived using a master seed (Random(64)) as the HMAC key and a per-attempt counter array as the message.
411
+ * - The counter array includes the share index, the attempt number (to handle rare collisions), and 32 bytes of fresh randomness for each attempt.
412
+ * - This ensures:
413
+ * 1. **Non-determinism**: Each split is unique, even for the same key and parameters, due to the per-attempt randomness.
414
+ * 2. **Uniqueness**: x-coordinates are checked for zero and duplication; retry logic ensures no repeats or invalid values.
415
+ * 3. **Cryptographic strength**: HMAC-SHA-512 is robust, and combining deterministic and random values protects against RNG compromise or bias.
416
+ * 4. **Defensive programming**: Attempts are capped (5 per share) to prevent infinite loops in pathological cases.
417
+ *
418
+ * This approach is robust against all practical attacks and is suitable for high-security environments where deterministic splits are not desired.
419
+ */
420
+ const seed = (0, Random_js_1.default)(64);
405
421
  for (let i = 0; i < totalShares; i++) {
406
- const x = new BigNumber_js_1.default(PrivateKey.fromRandom().toArray());
422
+ let x;
423
+ let attempts = 0;
424
+ do {
425
+ // To ensure no two points are ever the same, even if the system RNG is compromised,
426
+ // we'll use a different counter value for each point and use SHA-512 HMAC.
427
+ const counter = [i, attempts, ...(0, Random_js_1.default)(32)];
428
+ const h = (0, Hash_js_1.sha512hmac)(seed, counter);
429
+ x = new BigNumber_js_1.default(h).umod(curve.p);
430
+ // repeat generation if x is zero or has already been used (insanely unlikely)
431
+ attempts++;
432
+ if (attempts > 5) {
433
+ throw new Error('Failed to generate unique x coordinate after 5 attempts');
434
+ }
435
+ } while (x.isZero() || usedXCoordinates.has(x.toString()));
436
+ usedXCoordinates.add(x.toString());
407
437
  const y = poly.valueAt(x);
408
438
  points.push(new Polynomial_js_1.PointInFiniteField(x, y));
409
439
  }