o1js 2.0.0 → 2.1.0

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 (48) hide show
  1. package/dist/node/bindings/crypto/elliptic-curve-endomorphism.d.ts +2 -2
  2. package/dist/node/bindings/crypto/elliptic-curve-endomorphism.js +14 -14
  3. package/dist/node/bindings/crypto/elliptic-curve-endomorphism.js.map +1 -1
  4. package/dist/node/bindings/crypto/elliptic-curve-examples.d.ts +1 -0
  5. package/dist/node/bindings/crypto/elliptic-curve-examples.js +12 -0
  6. package/dist/node/bindings/crypto/elliptic-curve-examples.js.map +1 -1
  7. package/dist/node/bindings/crypto/elliptic-curve.d.ts +15 -6
  8. package/dist/node/bindings/crypto/elliptic-curve.js +87 -41
  9. package/dist/node/bindings/crypto/elliptic-curve.js.map +1 -1
  10. package/dist/node/bindings/crypto/finite-field-examples.d.ts +28 -0
  11. package/dist/node/bindings/crypto/finite-field-examples.js +1 -0
  12. package/dist/node/bindings/crypto/finite-field-examples.js.map +1 -1
  13. package/dist/node/index.cjs +96 -53
  14. package/dist/node/lib/provable/crypto/crypto.d.ts +1 -0
  15. package/dist/node/lib/provable/gadgets/basic.js +1 -1
  16. package/dist/node/lib/provable/gadgets/basic.js.map +1 -1
  17. package/dist/node/lib/provable/gadgets/elliptic-curve.d.ts +1 -0
  18. package/dist/node/lib/provable/gadgets/elliptic-curve.js +3 -3
  19. package/dist/node/lib/provable/gadgets/elliptic-curve.js.map +1 -1
  20. package/dist/web/bindings/crypto/elliptic-curve-endomorphism.d.ts +2 -2
  21. package/dist/web/bindings/crypto/elliptic-curve-endomorphism.js +14 -14
  22. package/dist/web/bindings/crypto/elliptic-curve-endomorphism.js.map +1 -1
  23. package/dist/web/bindings/crypto/elliptic-curve-examples.d.ts +1 -0
  24. package/dist/web/bindings/crypto/elliptic-curve-examples.js +12 -0
  25. package/dist/web/bindings/crypto/elliptic-curve-examples.js.map +1 -1
  26. package/dist/web/bindings/crypto/elliptic-curve.d.ts +15 -6
  27. package/dist/web/bindings/crypto/elliptic-curve.js +87 -41
  28. package/dist/web/bindings/crypto/elliptic-curve.js.map +1 -1
  29. package/dist/web/bindings/crypto/finite-field-examples.d.ts +28 -0
  30. package/dist/web/bindings/crypto/finite-field-examples.js +1 -0
  31. package/dist/web/bindings/crypto/finite-field-examples.js.map +1 -1
  32. package/dist/web/index.js +59 -59
  33. package/dist/web/lib/provable/crypto/crypto.d.ts +1 -0
  34. package/dist/web/lib/provable/gadgets/basic.js +1 -1
  35. package/dist/web/lib/provable/gadgets/basic.js.map +1 -1
  36. package/dist/web/lib/provable/gadgets/elliptic-curve.d.ts +1 -0
  37. package/dist/web/lib/provable/gadgets/elliptic-curve.js +3 -3
  38. package/dist/web/lib/provable/gadgets/elliptic-curve.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/bindings/crypto/elliptic-curve-endomorphism.ts +16 -12
  41. package/src/bindings/crypto/elliptic-curve-examples.ts +13 -0
  42. package/src/bindings/crypto/elliptic-curve.ts +130 -39
  43. package/src/bindings/crypto/elliptic-curve.unit-test.ts +58 -19
  44. package/src/bindings/crypto/finite-field-examples.ts +4 -0
  45. package/src/lib/provable/gadgets/basic.ts +1 -1
  46. package/src/lib/provable/gadgets/elliptic-curve.ts +4 -5
  47. package/src/lib/provable/test/ecdsa.unit-test.ts +92 -1
  48. package/src/lib/provable/test/elliptic-curve.unit-test.ts +2 -1
@@ -1,18 +1,17 @@
1
1
  import { assert } from '../../lib/util/errors.js';
2
2
  import { abs, bigIntToBits, log2, max, sign } from './bigint-helpers.js';
3
- import { affineScale, projectiveAdd, projectiveDouble, projectiveFromAffine, projectiveNeg, projectiveToAffine, projectiveZero, } from './elliptic-curve.js';
3
+ import { affineScale, projectiveAdd, getProjectiveDouble, projectiveFromAffine, projectiveNeg, projectiveToAffine, projectiveZero, } from './elliptic-curve.js';
4
4
  import { mod } from './finite-field.js';
5
5
  export { Endomorphism, decompose, computeEndoConstants, computeGlvData, };
6
6
  /**
7
7
  * Define methods leveraging a curve endomorphism
8
8
  */
9
- function Endomorphism(name, Field, Scalar, generator, endoScalar, endoBase) {
9
+ function Endomorphism(Field, Scalar, generator, a, endoScalar, endoBase) {
10
10
  if (endoScalar === undefined || endoBase === undefined) {
11
11
  try {
12
- ({ endoScalar, endoBase } = computeEndoConstants(Field, Scalar, generator));
12
+ ({ endoScalar, endoBase } = computeEndoConstants(Field, Scalar, generator, a));
13
13
  }
14
14
  catch (e) {
15
- console.log(`Warning: no endomorphism for ${name}`, e?.message);
16
15
  return undefined;
17
16
  }
18
17
  }
@@ -29,11 +28,11 @@ function Endomorphism(name, Field, Scalar, generator, endoScalar, endoBase) {
29
28
  return endomorphism(P, endoBase_, Field.modulus);
30
29
  },
31
30
  scaleProjective(g, s) {
32
- return glvScaleProjective(g, s, Field.modulus, endoBase_, glvData);
31
+ return glvScaleProjective(g, s, Field.modulus, a, endoBase_, glvData);
33
32
  },
34
33
  scale(g, s) {
35
34
  let gProj = projectiveFromAffine(g);
36
- let sGProj = glvScaleProjective(gProj, s, Field.modulus, endoBase_, glvData);
35
+ let sGProj = glvScaleProjective(gProj, s, Field.modulus, a, endoBase_, glvData);
37
36
  return projectiveToAffine(sGProj, Field.modulus);
38
37
  },
39
38
  };
@@ -103,8 +102,9 @@ function endomorphismProjective(P, endoBase, p) {
103
102
  * Because we can do doubling on both points at once, we save half the double()` operations,
104
103
  * while the number of `add()` operations stays the same.
105
104
  */
106
- function glvScaleProjective(g, s, p, endoBase, data) {
105
+ function glvScaleProjective(g, s, p, a, endoBase, data) {
107
106
  let endoG = endomorphismProjective(g, endoBase, p);
107
+ let double = getProjectiveDouble(p, a);
108
108
  let [s0, s1] = decompose(s, data);
109
109
  let S0 = bigIntToBits(s0.abs);
110
110
  let S1 = bigIntToBits(s1.abs);
@@ -115,12 +115,12 @@ function glvScaleProjective(g, s, p, endoBase, data) {
115
115
  let h = projectiveZero;
116
116
  for (let i = data.maxBits - 1; i >= 0; i--) {
117
117
  if (S0[i])
118
- h = projectiveAdd(h, g, p);
118
+ h = projectiveAdd(h, g, p, a);
119
119
  if (S1[i])
120
- h = projectiveAdd(h, endoG, p);
120
+ h = projectiveAdd(h, endoG, p, a);
121
121
  if (i === 0)
122
122
  break;
123
- h = projectiveDouble(h, p);
123
+ h = double(h, p);
124
124
  }
125
125
  return h;
126
126
  }
@@ -129,7 +129,7 @@ function glvScaleProjective(g, s, p, endoBase, data) {
129
129
  *
130
130
  * Throws if conditions for a cube root-based endomorphism are not met.
131
131
  */
132
- function computeEndoConstants(Field, Scalar, G) {
132
+ function computeEndoConstants(Field, Scalar, G, a) {
133
133
  let p = Field.modulus;
134
134
  let q = Scalar.modulus;
135
135
  // if there is a cube root of unity, it generates a subgroup of order 3
@@ -147,7 +147,7 @@ function computeEndoConstants(Field, Scalar, G) {
147
147
  assert(Scalar.power(lambda, 3n) === 1n, 'lambda is a cube root');
148
148
  assert(lambda !== 1n, 'lambda is not 1');
149
149
  // compute beta such that lambda * (x, y) = (beta * x, y) (endo base)
150
- let lambdaG = affineScale(G, lambda, p);
150
+ let lambdaG = affineScale(G, lambda, p, a);
151
151
  assert(lambdaG.y === G.y, 'multiplication by lambda is a cheap endomorphism');
152
152
  let beta = Field.div(lambdaG.x, G.x);
153
153
  assert(beta !== undefined, 'Gx is invertible');
@@ -155,8 +155,8 @@ function computeEndoConstants(Field, Scalar, G) {
155
155
  assert(beta !== 1n, 'beta is not 1');
156
156
  // confirm endomorphism at random point
157
157
  // TODO would be nice to have some theory instead of this heuristic
158
- let R = affineScale(G, Scalar.random(), p);
159
- let lambdaR = affineScale(R, lambda, p);
158
+ let R = affineScale(G, Scalar.random(), p, a);
159
+ let lambdaR = affineScale(R, lambda, p, a);
160
160
  assert(lambdaR.x === Field.mul(beta, R.x), 'confirm endomorphism');
161
161
  assert(lambdaR.y === R.y, 'confirm endomorphism');
162
162
  return { endoScalar: lambda, endoBase: beta };
@@ -1 +1 @@
1
- {"version":3,"file":"elliptic-curve-endomorphism.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve-endomorphism.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elliptic-curve-endomorphism.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve-endomorphism.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { CurveParams } from './elliptic-curve.js';
2
2
  export { CurveParams };
3
3
  declare const CurveParams: {
4
4
  Secp256k1: CurveParams;
5
+ Secp256r1: CurveParams;
5
6
  Pallas: CurveParams;
6
7
  Vesta: CurveParams;
7
8
  };
@@ -12,6 +12,17 @@ const secp256k1Params = {
12
12
  y: 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n,
13
13
  },
14
14
  };
15
+ const secp256r1Params = {
16
+ name: 'secp256r1',
17
+ modulus: exampleFields.secp256r1.modulus,
18
+ order: 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n,
19
+ a: 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffcn,
20
+ b: 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604bn,
21
+ generator: {
22
+ x: 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296n,
23
+ y: 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5n,
24
+ },
25
+ };
15
26
  const pallasParams = {
16
27
  name: 'Pallas',
17
28
  modulus: Pallas.modulus,
@@ -34,6 +45,7 @@ const vestaParams = {
34
45
  };
35
46
  const CurveParams = {
36
47
  Secp256k1: secp256k1Params,
48
+ Secp256r1: secp256r1Params,
37
49
  Pallas: pallasParams,
38
50
  Vesta: vestaParams,
39
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"elliptic-curve-examples.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve-examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,eAAe,GAAgB;IACnC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO;IACxC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO;IACtC,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,SAAS,EAAE;QACT,CAAC,EAAE,mEAAmE;QACtE,CAAC,EAAE,mEAAmE;KACvE;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,UAAU,EAAE,MAAM,CAAC,UAAU;CAC9B,CAAC;AAEF,MAAM,WAAW,GAAgB;IAC/B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,SAAS,EAAE,KAAK,CAAC,GAAG;IACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,UAAU,EAAE,KAAK,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC"}
1
+ {"version":3,"file":"elliptic-curve-examples.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve-examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,eAAe,GAAgB;IACnC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO;IACxC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO;IACtC,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,SAAS,EAAE;QACT,CAAC,EAAE,mEAAmE;QACtE,CAAC,EAAE,mEAAmE;KACvE;CACF,CAAC;AAEF,MAAM,eAAe,GAAgB;IACnC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO;IACxC,KAAK,EAAE,mEAAmE;IAC1E,CAAC,EAAE,mEAAmE;IACtE,CAAC,EAAE,mEAAmE;IACtE,SAAS,EAAE;QACT,CAAC,EAAE,mEAAmE;QACtE,CAAC,EAAE,mEAAmE;KACvE;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,UAAU,EAAE,MAAM,CAAC,UAAU;CAC9B,CAAC;AAEF,MAAM,WAAW,GAAgB;IAC/B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,CAAC,EAAE,KAAK,CAAC,CAAC;IACV,SAAS,EAAE,KAAK,CAAC,GAAG;IACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,UAAU,EAAE,KAAK,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { Pallas, PallasAffine, Vesta, CurveParams, GroupAffine, GroupProjective, GroupMapPallas, createCurveProjective, createCurveAffine, CurveAffine, ProjectiveCurve, affineAdd, affineDouble, affineScale, projectiveFromAffine, projectiveToAffine, projectiveZero, projectiveAdd, projectiveDouble, projectiveNeg, };
1
+ export { Pallas, PallasAffine, Vesta, CurveParams, GroupAffine, GroupProjective, GroupMapPallas, createCurveProjective, createCurveAffine, CurveAffine, ProjectiveCurve, affineAdd, affineDouble, affineScale, projectiveFromAffine, projectiveToAffine, projectiveZero, projectiveAdd, getProjectiveDouble, projectiveNeg, };
2
2
  declare const projectiveZero: {
3
3
  x: bigint;
4
4
  y: bigint;
@@ -73,8 +73,14 @@ declare function projectiveNeg({ x, y, z }: GroupProjective, p: bigint): {
73
73
  y: bigint;
74
74
  z: bigint;
75
75
  };
76
- declare function projectiveAdd(g: GroupProjective, h: GroupProjective, p: bigint): GroupProjective;
77
- declare function projectiveDouble(g: GroupProjective, p: bigint): GroupProjective;
76
+ declare function projectiveAdd(g: GroupProjective, h: GroupProjective, p: bigint, a: bigint): GroupProjective;
77
+ /**
78
+ * Projective doubling in Jacobian coordinates, specialized to a=0
79
+ *
80
+ * Cost: 2M + 5S
81
+ */
82
+ declare function projectiveDoubleA0(g: GroupProjective, p: bigint): GroupProjective;
83
+ declare function getProjectiveDouble(p: bigint, a: bigint): typeof projectiveDoubleA0;
78
84
  declare function projectiveFromAffine({ x, y, infinity, }: GroupAffine): GroupProjective;
79
85
  declare function projectiveToAffine(g: GroupProjective, p: bigint): GroupAffine;
80
86
  /**
@@ -95,6 +101,7 @@ declare function createCurveProjective({ name, modulus: p, order, cofactor, gene
95
101
  x: bigint;
96
102
  y: bigint;
97
103
  };
104
+ hasEndomorphism: boolean;
98
105
  readonly endoBase: bigint;
99
106
  readonly endoScalar: bigint;
100
107
  a: bigint;
@@ -140,6 +147,7 @@ declare const Pallas: {
140
147
  x: bigint;
141
148
  y: bigint;
142
149
  };
150
+ hasEndomorphism: boolean;
143
151
  readonly endoBase: bigint;
144
152
  readonly endoScalar: bigint;
145
153
  a: bigint;
@@ -184,6 +192,7 @@ declare const Vesta: {
184
192
  x: bigint;
185
193
  y: bigint;
186
194
  };
195
+ hasEndomorphism: boolean;
187
196
  readonly endoBase: bigint;
188
197
  readonly endoScalar: bigint;
189
198
  a: bigint;
@@ -213,9 +222,9 @@ declare const Vesta: {
213
222
  toAffine(g: GroupProjective): GroupAffine;
214
223
  fromAffine(a: GroupAffine): GroupProjective;
215
224
  };
216
- declare function affineAdd(g: GroupAffine, h: GroupAffine, p: bigint): GroupAffine;
217
- declare function affineDouble({ x, y, infinity }: GroupAffine, p: bigint): GroupAffine;
218
- declare function affineScale(g: GroupAffine, s: bigint | boolean[], p: bigint): GroupAffine;
225
+ declare function affineAdd(g: GroupAffine, h: GroupAffine, p: bigint, a: bigint): GroupAffine;
226
+ declare function affineDouble({ x, y, infinity }: GroupAffine, p: bigint, a: bigint): GroupAffine;
227
+ declare function affineScale(g: GroupAffine, s: bigint | boolean[], p: bigint, a: bigint): GroupAffine;
219
228
  type CurveAffine = ReturnType<typeof createCurveAffine>;
220
229
  declare const PallasAffine: {
221
230
  name: string;
@@ -1,7 +1,7 @@
1
1
  import { bigIntToBits } from './bigint-helpers.js';
2
2
  import { Fp, createField, inverse, mod, p, q, } from './finite-field.js';
3
3
  import { Endomorphism } from './elliptic-curve-endomorphism.js';
4
- export { Pallas, PallasAffine, Vesta, GroupMapPallas, createCurveProjective, createCurveAffine, affineAdd, affineDouble, affineScale, projectiveFromAffine, projectiveToAffine, projectiveZero, projectiveAdd, projectiveDouble, projectiveNeg, };
4
+ export { Pallas, PallasAffine, Vesta, GroupMapPallas, createCurveProjective, createCurveAffine, affineAdd, affineDouble, affineScale, projectiveFromAffine, projectiveToAffine, projectiveZero, projectiveAdd, getProjectiveDouble, projectiveNeg, };
5
5
  // TODO: constants, like generator points and cube roots for endomorphisms, should be drawn from
6
6
  // a common source, i.e. generated from the Rust code
7
7
  const pallasGeneratorProjective = {
@@ -86,7 +86,7 @@ const GroupMapPallas = GroupMap.create(Fp, GroupMapParamsFp);
86
86
  function projectiveNeg({ x, y, z }, p) {
87
87
  return { x, y: y === 0n ? 0n : p - y, z };
88
88
  }
89
- function projectiveAdd(g, h, p) {
89
+ function projectiveAdd(g, h, p, a) {
90
90
  if (g.z === 0n)
91
91
  return h;
92
92
  if (h.z === 0n)
@@ -111,7 +111,7 @@ function projectiveAdd(g, h, p) {
111
111
  if (H === 0n) {
112
112
  // if S1 = S2 <==> y1 = y2, the points are equal, so we double instead
113
113
  if (S1 === S2)
114
- return projectiveDouble(g, p);
114
+ return projectiveDouble(g, p, a);
115
115
  // if S1 = -S2, the points are inverse, so return zero
116
116
  if (mod(S1 + S2, p) === 0n)
117
117
  return projectiveZero;
@@ -133,14 +133,18 @@ function projectiveAdd(g, h, p) {
133
133
  let Z3 = mod(((Z1 + Z2) * (Z1 + Z2) - Z1Z1 - Z2Z2) * H, p);
134
134
  return { x: X3, y: Y3, z: Z3 };
135
135
  }
136
- function projectiveDouble(g, p) {
136
+ /**
137
+ * Projective doubling in Jacobian coordinates, specialized to a=0
138
+ *
139
+ * Cost: 2M + 5S
140
+ */
141
+ function projectiveDoubleA0(g, p) {
137
142
  if (g.z === 0n)
138
143
  return g;
139
144
  let X1 = g.x, Y1 = g.y, Z1 = g.z;
140
145
  if (Y1 === 0n)
141
146
  throw Error('projectiveDouble: unhandled case');
142
147
  // http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#doubling-dbl-2009-l
143
- // !!! formula depends on a === 0 in the curve equation y^2 = x^3 + ax + b !!!
144
148
  // A = X1^2
145
149
  let A = mod(X1 * X1, p);
146
150
  // B = Y1^2
@@ -161,16 +165,60 @@ function projectiveDouble(g, p) {
161
165
  let Z3 = mod(2n * Y1 * Z1, p);
162
166
  return { x: X3, y: Y3, z: Z3 };
163
167
  }
164
- function projectiveSub(g, h, p) {
165
- return projectiveAdd(g, projectiveNeg(h, p), p);
168
+ /**
169
+ * Projective doubling in Jacobian coordinates, specialized to a=-3
170
+ *
171
+ * Cost: 3M + 5S
172
+ */
173
+ function projectiveDoubleAminus3(g, p) {
174
+ if (g.z === 0n)
175
+ return g;
176
+ let X1 = g.x, Y1 = g.y, Z1 = g.z;
177
+ if (Y1 === 0n)
178
+ throw Error('projectiveDouble: unhandled case');
179
+ // http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
180
+ // delta = Z1^2
181
+ let delta = mod(Z1 * Z1, p);
182
+ // gamma = Y1^2
183
+ let gamma = mod(Y1 * Y1, p);
184
+ // beta = X1*gamma
185
+ let beta = mod(X1 * gamma, p);
186
+ // alpha = 3*(X1-delta)*(X1+delta)
187
+ let alpha = mod((X1 - delta) * (X1 + delta), p);
188
+ alpha = alpha + alpha + alpha;
189
+ // X3 = alpha^2-8*beta
190
+ let X3 = mod(alpha * alpha - 8n * beta, p);
191
+ // Z3 = (Y1+Z1)^2-gamma-delta
192
+ let Z3 = mod((Y1 + Z1) * (Y1 + Z1) - gamma - delta, p);
193
+ // Y3 = alpha*(4*beta-X3)-8*gamma^2
194
+ let Y3 = mod(alpha * (4n * beta - X3) - 8n * gamma * gamma, p);
195
+ return { x: X3, y: Y3, z: Z3 };
196
+ }
197
+ function projectiveDouble(g, p, a) {
198
+ if (a === 0n)
199
+ return projectiveDoubleA0(g, p);
200
+ if (a + 3n === p)
201
+ return projectiveDoubleAminus3(g, p);
202
+ throw Error('Projective doubling is not implemented for general curve parameter a, only a = 0 and a = -3');
203
+ }
204
+ function getProjectiveDouble(p, a) {
205
+ if (a === 0n)
206
+ return projectiveDoubleA0;
207
+ if (a + 3n === p)
208
+ return projectiveDoubleAminus3;
209
+ throw Error('Projective doubling is not implemented for general curve parameter a, only a = 0 and a = -3');
210
+ }
211
+ function projectiveSub(g, h, p, a) {
212
+ return projectiveAdd(g, projectiveNeg(h, p), p, a);
166
213
  }
167
- function projectiveScale(g, x, p) {
214
+ function projectiveScale(g, x, p, a) {
215
+ let double = getProjectiveDouble(p, a);
168
216
  let bits = typeof x === 'bigint' ? bigIntToBits(x) : x;
169
217
  let h = projectiveZero;
170
218
  for (let bit of bits) {
171
219
  if (bit)
172
- h = projectiveAdd(h, g, p);
173
- g = projectiveDouble(g, p);
220
+ h = projectiveAdd(h, g, p, a);
221
+ g = double(g, p);
174
222
  }
175
223
  return h;
176
224
  }
@@ -213,27 +261,27 @@ function projectiveEqual(g, h, p) {
213
261
  let hz3 = mod(hz2 * h.z, p);
214
262
  return mod(g.y * hz3, p) === mod(h.y * gz3, p);
215
263
  }
216
- function projectiveOnCurve({ x, y, z }, p, b) {
264
+ function projectiveOnCurve({ x, y, z }, p, b, a) {
217
265
  // substitution x -> x/z^2 and y -> y/z^3 gives
218
- // the equation y^2 = x^3 + b*z^6
266
+ // the equation y^2 = x^3 + a*z^4 + b*z^6
219
267
  // (note: we allow a restricted set of x,y for z==0; this seems fine)
220
268
  let x3 = mod(mod(x * x, p) * x, p);
221
269
  let y2 = mod(y * y, p);
222
- let z3 = mod(mod(z * z, p) * z, p);
223
- let z6 = mod(z3 * z3, p);
224
- return mod(y2 - x3 - b * z6, p) === 0n;
270
+ let z2 = mod(z * z, p);
271
+ let z4 = mod(z2 * z2, p);
272
+ let z6 = mod(z4 * z2, p);
273
+ return mod(y2 - x3 - a * x * z4 - b * z6, p) === 0n;
225
274
  }
226
275
  // checks whether the elliptic curve point g is in the subgroup defined by [order]g = 0
227
- function projectiveInSubgroup(g, p, order) {
228
- let orderTimesG = projectiveScale(g, order, p);
276
+ function projectiveInSubgroup(g, p, order, a) {
277
+ let orderTimesG = projectiveScale(g, order, p, a);
229
278
  return projectiveEqual(orderTimesG, projectiveZero, p);
230
279
  }
231
280
  /**
232
281
  * Projective curve arithmetic in Jacobian coordinates
233
282
  */
234
283
  function createCurveProjective({ name, modulus: p, order, cofactor, generator, b, a, endoBase, endoScalar, }) {
235
- if (a !== 0n)
236
- throw Error('createCurveProjective only supports a = 0');
284
+ let double = getProjectiveDouble(p, a);
237
285
  cofactor ??= 1n;
238
286
  let hasCofactor = cofactor !== 1n;
239
287
  return {
@@ -243,6 +291,7 @@ function createCurveProjective({ name, modulus: p, order, cofactor, generator, b
243
291
  cofactor,
244
292
  zero: projectiveZero,
245
293
  one: { ...generator, z: 1n },
294
+ hasEndomorphism: endoBase !== undefined && endoScalar !== undefined,
246
295
  get endoBase() {
247
296
  if (endoBase === undefined)
248
297
  throw Error('`endoBase` for this curve was not provided.');
@@ -260,25 +309,25 @@ function createCurveProjective({ name, modulus: p, order, cofactor, generator, b
260
309
  return projectiveEqual(g, h, p);
261
310
  },
262
311
  isOnCurve(g) {
263
- return projectiveOnCurve(g, p, b);
312
+ return projectiveOnCurve(g, p, b, a);
264
313
  },
265
314
  isInSubgroup(g) {
266
- return projectiveInSubgroup(g, p, order);
315
+ return projectiveInSubgroup(g, p, order, a);
267
316
  },
268
317
  add(g, h) {
269
- return projectiveAdd(g, h, p);
318
+ return projectiveAdd(g, h, p, a);
270
319
  },
271
320
  double(g) {
272
- return projectiveDouble(g, p);
321
+ return double(g, p);
273
322
  },
274
323
  negate(g) {
275
324
  return projectiveNeg(g, p);
276
325
  },
277
326
  sub(g, h) {
278
- return projectiveSub(g, h, p);
327
+ return projectiveSub(g, h, p, a);
279
328
  },
280
329
  scale(g, s) {
281
- return projectiveScale(g, s, p);
330
+ return projectiveScale(g, s, p, a);
282
331
  },
283
332
  endomorphism({ x, y, z }) {
284
333
  if (endoBase === undefined)
@@ -321,7 +370,7 @@ function affineOnCurve({ x, y, infinity }, p, a, b) {
321
370
  let x2 = mod(x * x, p);
322
371
  return mod(y * y - x * x2 - a * x - b, p) === 0n;
323
372
  }
324
- function affineAdd(g, h, p) {
373
+ function affineAdd(g, h, p, a) {
325
374
  if (g.infinity)
326
375
  return h;
327
376
  if (h.infinity)
@@ -331,7 +380,7 @@ function affineAdd(g, h, p) {
331
380
  if (x1 === x2) {
332
381
  // g + g --> we double
333
382
  if (y1 === y2)
334
- return affineDouble(g, p);
383
+ return affineDouble(g, p, a);
335
384
  // g - g --> return zero
336
385
  return affineZero;
337
386
  }
@@ -346,14 +395,14 @@ function affineAdd(g, h, p) {
346
395
  let y3 = mod(m * (x1 - x3) - y1, p);
347
396
  return { x: x3, y: y3, infinity: false };
348
397
  }
349
- function affineDouble({ x, y, infinity }, p) {
398
+ function affineDouble({ x, y, infinity }, p, a) {
350
399
  if (infinity)
351
400
  return affineZero;
352
- // m = 3*x^2 / 2y
401
+ // m = (3*x^2 + a) / 2y
353
402
  let d = inverse(2n * y, p);
354
403
  if (d === undefined)
355
404
  throw Error('impossible');
356
- let m = mod(3n * x * x * d, p);
405
+ let m = mod((3n * x * x + a) * d, p);
357
406
  // x2 = m^2 - 2x
358
407
  let x2 = mod(m * m - 2n * x, p);
359
408
  // y2 = m*(x - x2) - y
@@ -365,9 +414,9 @@ function affineNegate({ x, y, infinity }, p) {
365
414
  return affineZero;
366
415
  return { x, y: y === 0n ? 0n : p - y, infinity };
367
416
  }
368
- function affineScale(g, s, p) {
417
+ function affineScale(g, s, p, a) {
369
418
  let gProj = projectiveFromAffine(g);
370
- let sgProj = projectiveScale(gProj, s, p);
419
+ let sgProj = projectiveScale(gProj, s, p, a);
371
420
  return projectiveToAffine(sgProj, p);
372
421
  }
373
422
  const PallasAffine = createCurveAffine({
@@ -381,14 +430,11 @@ const PallasAffine = createCurveAffine({
381
430
  endoScalar: pallasEndoScalar,
382
431
  });
383
432
  function createCurveAffine({ name, modulus: p, order, cofactor, generator, a, b, endoScalar, endoBase, }) {
384
- // TODO: lift this limitation by using other formulas (in projectiveScale) for a != 0
385
- if (a !== 0n)
386
- throw Error('createCurveAffine only supports a = 0');
387
433
  let hasCofactor = cofactor !== undefined && cofactor !== 1n;
388
434
  const Field = createField(p);
389
435
  const Scalar = createField(order);
390
436
  const one = { ...generator, infinity: false };
391
- const Endo = Endomorphism(name, Field, Scalar, one, endoScalar, endoBase);
437
+ const Endo = Endomorphism(Field, Scalar, one, a, endoScalar, endoBase);
392
438
  return {
393
439
  name,
394
440
  /**
@@ -439,22 +485,22 @@ function createCurveAffine({ name, modulus: p, order, cofactor, generator, a, b,
439
485
  return affineOnCurve(g, p, a, b);
440
486
  },
441
487
  isInSubgroup(g) {
442
- return projectiveInSubgroup(projectiveFromAffine(g), p, order);
488
+ return projectiveInSubgroup(projectiveFromAffine(g), p, order, a);
443
489
  },
444
490
  add(g, h) {
445
- return affineAdd(g, h, p);
491
+ return affineAdd(g, h, p, a);
446
492
  },
447
493
  double(g) {
448
- return affineDouble(g, p);
494
+ return affineDouble(g, p, a);
449
495
  },
450
496
  negate(g) {
451
497
  return affineNegate(g, p);
452
498
  },
453
499
  sub(g, h) {
454
- return affineAdd(g, affineNegate(h, p), p);
500
+ return affineAdd(g, affineNegate(h, p), p, a);
455
501
  },
456
502
  scale(g, s) {
457
- return affineScale(g, s, p);
503
+ return affineScale(g, s, p, a);
458
504
  },
459
505
  };
460
506
  }
@@ -1 +1 @@
1
- {"version":3,"file":"elliptic-curve.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elliptic-curve.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve.ts"],"names":[],"mappings":"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"}
@@ -224,6 +224,34 @@ declare let exampleFields: {
224
224
  leftShift(x: bigint, bits: number, maxBitSize?: number): bigint;
225
225
  rightShift(x: bigint, bits: number): bigint;
226
226
  };
227
+ secp256r1: {
228
+ modulus: bigint;
229
+ sizeInBits: number;
230
+ t: bigint;
231
+ M: bigint;
232
+ twoadicRoot: bigint;
233
+ mod(x: bigint): bigint;
234
+ add(x: bigint, y: bigint): bigint;
235
+ not(x: bigint, bits: number): bigint;
236
+ negate(x: bigint): bigint;
237
+ sub(x: bigint, y: bigint): bigint;
238
+ mul(x: bigint, y: bigint): bigint;
239
+ inverse: (x: bigint) => bigint | undefined;
240
+ div(x: bigint, y: bigint): bigint | undefined;
241
+ square(x: bigint): bigint;
242
+ isSquare(x: bigint): boolean;
243
+ sqrt(x: bigint): bigint | undefined;
244
+ power(x: bigint, n: bigint): bigint;
245
+ dot(x: bigint[], y: bigint[]): bigint;
246
+ equal(x: bigint, y: bigint): boolean;
247
+ isEven(x: bigint): boolean;
248
+ random(): bigint;
249
+ fromNumber(x: number): bigint;
250
+ fromBigint(x: bigint): bigint;
251
+ rot(x: bigint, bits: bigint, direction?: "left" | "right", maxBits?: bigint): bigint;
252
+ leftShift(x: bigint, bits: number, maxBitSize?: number): bigint;
253
+ rightShift(x: bigint, bits: number): bigint;
254
+ };
227
255
  bls12_381_base: {
228
256
  modulus: bigint;
229
257
  sizeInBits: number;
@@ -21,6 +21,7 @@ let exampleFields = {
21
21
  f25519: createField(p25519),
22
22
  secp256k1: createField(pSecp256k1),
23
23
  secq256k1: createField(pSecq256k1),
24
+ secp256r1: createField(0xffffffff00000001000000000000000000000000ffffffffffffffffffffffffn),
24
25
  bls12_381_base: createField(pBls12_381),
25
26
  bls12_381_scalar: createField(qBls12_381),
26
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"finite-field-examples.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/finite-field-examples.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,cAAc;AACd,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjC,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjD,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChC,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAa,CAAC;AAC5D,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,oCAAoC,CAAC;AACrE,IAAI,UAAU,GACZ,mGAAmG,CAAC;AACtG,IAAI,UAAU,GACZ,mEAAmE,CAAC;AAEtE,IAAI,aAAa,GAAG;IAClB,EAAE;IACF,EAAE;IACF,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC;IAChC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACpC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;IAClC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;IAClC,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;IACvC,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"finite-field-examples.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/finite-field-examples.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,cAAc;AACd,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjC,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjD,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChC,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAa,CAAC;AAC5D,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,oCAAoC,CAAC;AACrE,IAAI,UAAU,GACZ,mGAAmG,CAAC;AACtG,IAAI,UAAU,GACZ,mEAAmE,CAAC;AAEtE,IAAI,aAAa,GAAG;IAClB,EAAE;IACF,EAAE;IACF,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC;IAChC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACpC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;IAClC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;IAClC,SAAS,EACP,WAAW,CACT,mEAAmE,CACpE;IACH,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;IACvC,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC;CAC1C,CAAC"}