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
@@ -4,7 +4,7 @@ export { Endomorphism, decompose, computeEndoConstants, computeGlvData, GlvData,
4
4
  /**
5
5
  * Define methods leveraging a curve endomorphism
6
6
  */
7
- declare function Endomorphism(name: string, Field: FiniteField, Scalar: FiniteField, generator: GroupAffine, endoScalar?: bigint, endoBase?: bigint): {
7
+ declare function Endomorphism(Field: FiniteField, Scalar: FiniteField, generator: GroupAffine, a: bigint, endoScalar?: bigint, endoBase?: bigint): {
8
8
  scalar: bigint;
9
9
  base: bigint;
10
10
  decomposeMaxBits: number;
@@ -75,7 +75,7 @@ declare function decompose(s: bigint, data: GlvData): readonly [{
75
75
  *
76
76
  * Throws if conditions for a cube root-based endomorphism are not met.
77
77
  */
78
- declare function computeEndoConstants(Field: FiniteField, Scalar: FiniteField, G: GroupAffine): {
78
+ declare function computeEndoConstants(Field: FiniteField, Scalar: FiniteField, G: GroupAffine, a: bigint): {
79
79
  endoScalar: bigint;
80
80
  endoBase: bigint;
81
81
  };
@@ -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;