aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1.json14
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1.json14
-rw-r--r--src/Specific/CurveParameters/solinas32_2e254m127x2e240m1.json36
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m88x2e240m1.json37
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m5x2e368m1.json41
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m79x2e376m1.json41
-rw-r--r--src/Specific/CurveParameters/solinas32_2e510m290x2e496m1.json49
-rw-r--r--src/Specific/CurveParameters/solinas32_2e512m491x2e496m1.json49
-rw-r--r--src/Specific/CurveParameters/solinas64_2e254m127x2e240m1.json31
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m88x2e240m1.json30
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m5x2e368m1.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m79x2e376m1.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e510m290x2e496m1.json35
-rw-r--r--src/Specific/CurveParameters/solinas64_2e512m491x2e496m1.json35
24 files changed, 618 insertions, 0 deletions
diff --git a/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1.json b/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1.json
new file mode 100644
index 000000000..98561c513
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^254 - 127*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1.json b/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1.json
new file mode 100644
index 000000000..e20c5190b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^256 - 88*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1.json b/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1.json
new file mode 100644
index 000000000..7259a5dc7
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^384 - 5*2^368 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1.json b/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1.json
new file mode 100644
index 000000000..5848cd630
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^384 - 79*2^376 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1.json b/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1.json
new file mode 100644
index 000000000..8f71120ae
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^510 - 290*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1.json b/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1.json
new file mode 100644
index 000000000..37948b090
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "32",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^512 - 491*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1.json b/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1.json
new file mode 100644
index 000000000..0663309ea
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^254 - 127*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1.json b/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1.json
new file mode 100644
index 000000000..7cdde3645
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^256 - 88*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1.json b/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1.json
new file mode 100644
index 000000000..9d8b26351
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^384 - 5*2^368 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1.json b/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1.json
new file mode 100644
index 000000000..f21b98382
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^384 - 79*2^376 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1.json b/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1.json
new file mode 100644
index 000000000..d983f012e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^510 - 290*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1.json b/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1.json
new file mode 100644
index 000000000..37f6ca8d5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1.json
@@ -0,0 +1,14 @@
+{
+ "base": "64",
+ "compiler": "gcc -fno-peephole2 `#GCC BUG 81300` -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes -Wno-incompatible-pointer-types -fno-strict-aliasing",
+ "modulus": "2^512 - 491*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e254m127x2e240m1.json b/src/Specific/CurveParameters/solinas32_2e254m127x2e240m1.json
new file mode 100644
index 000000000..1037460f3
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e254m127x2e240m1.json
@@ -0,0 +1,36 @@
+{
+ "base": "23 + 1/11",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 9,
+ 10
+ ],
+ [
+ 10,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ [
+ 10,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^254 - 127*2^240 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m88x2e240m1.json b/src/Specific/CurveParameters/solinas32_2e256m88x2e240m1.json
new file mode 100644
index 000000000..92e2ed2c8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m88x2e240m1.json
@@ -0,0 +1,37 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 11,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10
+ ],
+ [
+ 11,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^256 - 88*2^240 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m5x2e368m1.json b/src/Specific/CurveParameters/solinas32_2e384m5x2e368m1.json
new file mode 100644
index 000000000..a77d78d5e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m5x2e368m1.json
@@ -0,0 +1,41 @@
+{
+ "base": "24",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 14,
+ 15
+ ],
+ [
+ 15,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14
+ ],
+ [
+ 15,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^384 - 5*2^368 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m79x2e376m1.json b/src/Specific/CurveParameters/solinas32_2e384m79x2e376m1.json
new file mode 100644
index 000000000..96f251eda
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m79x2e376m1.json
@@ -0,0 +1,41 @@
+{
+ "base": "24",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 14,
+ 15
+ ],
+ [
+ 15,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14
+ ],
+ [
+ 15,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^384 - 79*2^376 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e510m290x2e496m1.json b/src/Specific/CurveParameters/solinas32_2e510m290x2e496m1.json
new file mode 100644
index 000000000..5c72c69ab
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e510m290x2e496m1.json
@@ -0,0 +1,49 @@
+{
+ "base": "21.25",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 22,
+ 23
+ ],
+ [
+ 23,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22
+ ],
+ [
+ 23,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^510 - 290*2^496 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "24"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e512m491x2e496m1.json b/src/Specific/CurveParameters/solinas32_2e512m491x2e496m1.json
new file mode 100644
index 000000000..29c1faa56
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e512m491x2e496m1.json
@@ -0,0 +1,49 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 22,
+ 23
+ ],
+ [
+ 23,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22
+ ],
+ [
+ 23,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^512 - 491*2^496 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "24"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e254m127x2e240m1.json b/src/Specific/CurveParameters/solinas64_2e254m127x2e240m1.json
new file mode 100644
index 000000000..fc6744165
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e254m127x2e240m1.json
@@ -0,0 +1,31 @@
+{
+ "base": "42 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 4,
+ 5
+ ],
+ [
+ 5,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ [
+ 5,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^254 - 127*2^240 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m88x2e240m1.json b/src/Specific/CurveParameters/solinas64_2e256m88x2e240m1.json
new file mode 100644
index 000000000..b693a0318
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m88x2e240m1.json
@@ -0,0 +1,30 @@
+{
+ "base": "51.2",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 4
+ ],
+ [
+ 4,
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^256 - 88*2^240 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m5x2e368m1.json b/src/Specific/CurveParameters/solinas64_2e384m5x2e368m1.json
new file mode 100644
index 000000000..1ad9ed763
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m5x2e368m1.json
@@ -0,0 +1,33 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 6,
+ 7
+ ],
+ [
+ 7,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ [
+ 7,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^384 - 5*2^368 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m79x2e376m1.json b/src/Specific/CurveParameters/solinas64_2e384m79x2e376m1.json
new file mode 100644
index 000000000..4891e573b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m79x2e376m1.json
@@ -0,0 +1,33 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 6,
+ 7
+ ],
+ [
+ 7,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6
+ ],
+ [
+ 7,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^384 - 79*2^376 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e510m290x2e496m1.json b/src/Specific/CurveParameters/solinas64_2e510m290x2e496m1.json
new file mode 100644
index 000000000..0a1a8411f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e510m290x2e496m1.json
@@ -0,0 +1,35 @@
+{
+ "base": "51",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 8,
+ 9
+ ],
+ [
+ 9,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^510 - 290*2^496 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e512m491x2e496m1.json b/src/Specific/CurveParameters/solinas64_2e512m491x2e496m1.json
new file mode 100644
index 000000000..915a45241
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e512m491x2e496m1.json
@@ -0,0 +1,35 @@
+{
+ "base": "51.2",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 8,
+ 9
+ ],
+ [
+ 9,
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes",
+ "modulus": "2^512 - 491*2^496 - 1",
+ "operations": [
+ "femul",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}