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.
- package/dist/node/bindings/crypto/elliptic-curve-endomorphism.d.ts +2 -2
- package/dist/node/bindings/crypto/elliptic-curve-endomorphism.js +14 -14
- package/dist/node/bindings/crypto/elliptic-curve-endomorphism.js.map +1 -1
- package/dist/node/bindings/crypto/elliptic-curve-examples.d.ts +1 -0
- package/dist/node/bindings/crypto/elliptic-curve-examples.js +12 -0
- package/dist/node/bindings/crypto/elliptic-curve-examples.js.map +1 -1
- package/dist/node/bindings/crypto/elliptic-curve.d.ts +15 -6
- package/dist/node/bindings/crypto/elliptic-curve.js +87 -41
- package/dist/node/bindings/crypto/elliptic-curve.js.map +1 -1
- package/dist/node/bindings/crypto/finite-field-examples.d.ts +28 -0
- package/dist/node/bindings/crypto/finite-field-examples.js +1 -0
- package/dist/node/bindings/crypto/finite-field-examples.js.map +1 -1
- package/dist/node/index.cjs +96 -53
- package/dist/node/lib/provable/crypto/crypto.d.ts +1 -0
- package/dist/node/lib/provable/gadgets/basic.js +1 -1
- package/dist/node/lib/provable/gadgets/basic.js.map +1 -1
- package/dist/node/lib/provable/gadgets/elliptic-curve.d.ts +1 -0
- package/dist/node/lib/provable/gadgets/elliptic-curve.js +3 -3
- package/dist/node/lib/provable/gadgets/elliptic-curve.js.map +1 -1
- package/dist/web/bindings/crypto/elliptic-curve-endomorphism.d.ts +2 -2
- package/dist/web/bindings/crypto/elliptic-curve-endomorphism.js +14 -14
- package/dist/web/bindings/crypto/elliptic-curve-endomorphism.js.map +1 -1
- package/dist/web/bindings/crypto/elliptic-curve-examples.d.ts +1 -0
- package/dist/web/bindings/crypto/elliptic-curve-examples.js +12 -0
- package/dist/web/bindings/crypto/elliptic-curve-examples.js.map +1 -1
- package/dist/web/bindings/crypto/elliptic-curve.d.ts +15 -6
- package/dist/web/bindings/crypto/elliptic-curve.js +87 -41
- package/dist/web/bindings/crypto/elliptic-curve.js.map +1 -1
- package/dist/web/bindings/crypto/finite-field-examples.d.ts +28 -0
- package/dist/web/bindings/crypto/finite-field-examples.js +1 -0
- package/dist/web/bindings/crypto/finite-field-examples.js.map +1 -1
- package/dist/web/index.js +59 -59
- package/dist/web/lib/provable/crypto/crypto.d.ts +1 -0
- package/dist/web/lib/provable/gadgets/basic.js +1 -1
- package/dist/web/lib/provable/gadgets/basic.js.map +1 -1
- package/dist/web/lib/provable/gadgets/elliptic-curve.d.ts +1 -0
- package/dist/web/lib/provable/gadgets/elliptic-curve.js +3 -3
- package/dist/web/lib/provable/gadgets/elliptic-curve.js.map +1 -1
- package/package.json +1 -1
- package/src/bindings/crypto/elliptic-curve-endomorphism.ts +16 -12
- package/src/bindings/crypto/elliptic-curve-examples.ts +13 -0
- package/src/bindings/crypto/elliptic-curve.ts +130 -39
- package/src/bindings/crypto/elliptic-curve.unit-test.ts +58 -19
- package/src/bindings/crypto/finite-field-examples.ts +4 -0
- package/src/lib/provable/gadgets/basic.ts +1 -1
- package/src/lib/provable/gadgets/elliptic-curve.ts +4 -5
- package/src/lib/provable/test/ecdsa.unit-test.ts +92 -1
- 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(
|
|
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,
|
|
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(
|
|
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 =
|
|
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAGL,WAAW,EACX,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"elliptic-curve-endomorphism.js","sourceRoot":"","sources":["../../../../src/bindings/crypto/elliptic-curve-endomorphism.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
165
|
-
|
|
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 =
|
|
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
|
|
223
|
-
let
|
|
224
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAEL,EAAE,EACF,WAAW,EACX,OAAO,EACP,GAAG,EACH,CAAC,EACD,CAAC,GACF,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EAIL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EAGjB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,CAAC;AAEF,gGAAgG;AAChG,qDAAqD;AACrD,MAAM,yBAAyB,GAAG;IAChC,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,8EAA8E;CAClF,CAAC;AACF,MAAM,wBAAwB,GAAG;IAC/B,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,8EAA8E;CAClF,CAAC;AACF,MAAM,aAAa,GACjB,6EAA6E,CAAC;AAChF,MAAM,cAAc,GAClB,8EAA8E,CAAC;AACjF,MAAM,eAAe,GACnB,6EAA6E,CAAC;AAChF,MAAM,gBAAgB,GACpB,8EAA8E,CAAC;AAEjF,oCAAoC;AACpC,MAAM,CAAC,GAAG,EAAE,CAAC;AACb,MAAM,CAAC,GAAG,EAAE,CAAC;AAEb,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AA6D/C,kIAAkI;AAClI,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,CAAC,CAAc,EAAE,MAAsB,EAAE,EAAE;QACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE;YAAE,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC1D,SAAS,SAAS,CAAC,CAAS;YAC1B,MAAM;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,4CAA4C;YAC5C,0BAA0B;YAE1B,sDAAsD;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEzB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YACrC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,CAAC;QAC9B,CAAC;QAED,SAAS,aAAa,CAAC,CAAS;YAC9B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,SAAS,UAAU,CAAC,CAAQ;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;QAED,SAAS,cAAc,CAAC,CAAS;YAC/B,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAEjD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAEpC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEnC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAExB,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,uBAAuB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAEvB,OAAO;gBACL,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBACf,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,6HAA6H;AAC7H,MAAM,gBAAgB,GAAG;IACvB,CAAC,EAAE,EAAE;IACL,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE;QAChB,CAAC,EAAE,8EAA8E;QACjF,CAAC,EAAE,EAAE;KACN;IACD,IAAI,EAAE;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAE7D,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAmB,EAAE,CAAS;IAC5D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,CAAkB,EAAE,CAAkB,EAAE,CAAS;IACtE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EACV,EAAE,GAAG,CAAC,CAAC,CAAC,EACR,EAAE,GAAG,CAAC,CAAC,CAAC,EACR,EAAE,GAAG,CAAC,CAAC,CAAC,EACR,EAAE,GAAG,CAAC,CAAC,CAAC,EACR,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACX,wFAAwF;IACxF,cAAc;IACd,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,cAAc;IACd,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3B,eAAe;IACf,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3B,eAAe;IACf,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3B,kBAAkB;IAClB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAChC,kBAAkB;IAClB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAChC,YAAY;IACZ,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxB,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,sEAAsE;QACtE,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,sDAAsD;QACtD,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE;YAAE,OAAO,cAAc,CAAC;QAClD,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IACD,cAAc;IACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9B,UAAU;IACV,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,gBAAgB;IAChB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACvB,WAAW;IACX,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,iBAAiB;IACjB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,uBAAuB;IACvB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,+BAA+B;IAC/B,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAkB,EAAE,CAAS;IACrD,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EACV,EAAE,GAAG,CAAC,CAAC,CAAC,EACR,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACX,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC/D,uFAAuF;IACvF,8EAA8E;IAC9E,WAAW;IACX,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxB,WAAW;IACX,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxB,UAAU;IACV,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,uBAAuB;IACvB,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,UAAU;IACV,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACf,UAAU;IACV,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,aAAa;IACb,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,oBAAoB;IACpB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,eAAe;IACf,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,CAAkB,EAAE,CAAkB,EAAE,CAAS;IACtE,OAAO,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,CAAkB,EAAE,CAAqB,EAAE,CAAS;IAC3E,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,cAAc,CAAC;IACvB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG;YAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,EAC5B,CAAC,EACD,CAAC,EACD,QAAQ,GACI;IACZ,IAAI,QAAQ;QAAE,OAAO,cAAc,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkB,EAAE,CAAS;IACvD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,WAAW;QACX,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,iCAAiC;QACjC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,4CAA4C;QACvE,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,QAAQ;QACR,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;QACnC,QAAQ;QACR,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAkB,EAAE,CAAkB,EAAE,CAAS;IACxE,wGAAwG;IACxG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,6BAA6B;IAC7B,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,4BAA4B;IAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAmB,EAAE,CAAS,EAAE,CAAS;IAC3E,+CAA+C;IAC/C,iCAAiC;IACjC,qEAAqE;IACrE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,uFAAuF;AACvF,SAAS,oBAAoB,CAAC,CAAkB,EAAE,CAAS,EAAE,KAAa;IACxE,IAAI,WAAW,GAAG,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,eAAe,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,EAC7B,IAAI,EACJ,OAAO,EAAE,CAAC,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,CAAC,EACD,CAAC,EACD,QAAQ,EACR,UAAU,GACE;IACZ,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACvE,QAAQ,KAAK,EAAE,CAAC;IAChB,IAAI,WAAW,GAAG,QAAQ,KAAK,EAAE,CAAC;IAClC,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,CAAC;QACV,KAAK;QACL,QAAQ;QACR,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;QAC5B,IAAI,QAAQ;YACV,IAAI,QAAQ,KAAK,SAAS;gBACxB,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,UAAU;YACZ,IAAI,UAAU,KAAK,SAAS;gBAC1B,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC/D,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,CAAC;QACD,CAAC;QACD,WAAW;QAEX,KAAK,CAAC,CAAkB,EAAE,CAAkB;YAC1C,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,CAAC,CAAkB;YAC1B,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,YAAY,CAAC,CAAkB;YAC7B,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,CAAkB,EAAE,CAAkB;YACxC,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,CAAkB;YACvB,OAAO,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,CAAkB;YACvB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,GAAG,CAAC,CAAkB,EAAE,CAAkB;YACxC,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,CAAkB,EAAE,CAAS;YACjC,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAmB;YACvC,IAAI,QAAQ,KAAK,SAAS;gBACxB,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QACD,QAAQ,CAAC,CAAkB;YACzB,OAAO,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,CAAC,CAAc;YACvB,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAID,MAAM,MAAM,GAAG,qBAAqB,CAAC;IACnC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,yBAAyB;IACpC,CAAC;IACD,CAAC;IACD,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,qBAAqB,CAAC;IAClC,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,wBAAwB;IACnC,CAAC;IACD,CAAC;IACD,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,eAAe;CAC5B,CAAC,CAAC;AAEH,MAAM,UAAU,GAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErE,SAAS,aAAa,CACpB,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAe,EAC/B,CAAS,EACT,CAAS,EACT,CAAS;IAET,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1B,qBAAqB;IACrB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,CAAc,EAAE,CAAc,EAAE,CAAS;IAC1D,IAAI,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IAEzB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAEzB,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,sBAAsB;QACtB,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,wBAAwB;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,0BAA0B;IAC1B,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,qBAAqB;IACrB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACjC,wBAAwB;IACxB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAe,EAAE,CAAS;IAC9D,IAAI,QAAQ;QAAE,OAAO,UAAU,CAAC;IAChC,iBAAiB;IACjB,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,gBAAgB;IAChB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,sBAAsB;IACtB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAe,EAAE,CAAS;IAC9D,IAAI,QAAQ;QAAE,OAAO,UAAU,CAAC;IAChC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,CAAc,EAAE,CAAqB,EAAE,CAAS;IACnE,IAAI,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAID,MAAM,YAAY,GAAG,iBAAiB,CAAC;IACrC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,yBAAyB;IACpC,CAAC;IACD,CAAC;IACD,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,EACzB,IAAI,EACJ,OAAO,EAAE,CAAC,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,CAAC,EACD,CAAC,EACD,UAAU,EACV,QAAQ,GACI;IACZ,qFAAqF;IACrF,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACnE,IAAI,WAAW,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC;IAE5D,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE1E,OAAO;QACL,IAAI;QACJ;;WAEG;QACH,KAAK;QACL;;WAEG;QACH,MAAM;QAEN,OAAO,EAAE,CAAC;QACV,KAAK;QACL,CAAC;QACD,CAAC;QACD,QAAQ;QACR,WAAW;QAEX,IAAI,EAAE,UAAU;QAChB,GAAG;QAEH,eAAe,EAAE,IAAI,KAAK,SAAS;QACnC,IAAI,IAAI;YACN,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,CAA2B;YAC9B,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBAAE,OAAO,UAAU,CAAC;YAChD,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;QAED,WAAW,CAAC,CAA2B;YACrC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC7B,MAAM,KAAK,CACT,+DAA+D,CAChE,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,CAAc,EAAE,CAAc;YAClC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,SAAS,CAAC,CAAc;YACtB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,YAAY,CAAC,CAAc;YACzB,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,CAAc,EAAE,CAAc;YAChC,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,CAAc;YACnB,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,CAAc;YACnB,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,CAAc,EAAE,CAAc;YAChC,OAAO,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,CAAc,EAAE,CAAqB;YACzC,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
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;
|