aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/solinas32_2e256m88x2e240m1
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-10-16 01:16:24 -0400
committerGravatar Jason Gross <jasongross9@gmail.com>2017-10-18 23:01:29 -0400
commit3963ad55fada5c6df6c52e82ee483da9a085c9a9 (patch)
tree50f5831e0608a6a48873ebdd9226460866cb9a86 /src/Specific/solinas32_2e256m88x2e240m1
parent228b9c35ae331ac30b5829689d9a9320612edb67 (diff)
Remake some curves
Diffstat (limited to 'src/Specific/solinas32_2e256m88x2e240m1')
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v35
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m88x2e240m1/compiler.sh4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v4
9 files changed, 102 insertions, 0 deletions
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v b/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v
new file mode 100644
index 000000000..4806253e5
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v
@@ -0,0 +1,35 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 88*2^240 - 1
+Base: 21 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 12%nat;
+ base := 21 + 1/3;
+ bitwidth := 32;
+ s := 2^256;
+ c := [(1, 1); (88, 2^240)];
+ carry_chains := Some [[10; 11]; [11; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10]; [11; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some false;
+ montgomery := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v b/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v
new file mode 100644
index 000000000..805d1d77d
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh b/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh
new file mode 100755
index 000000000..401968c8b
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes "$@"
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/femul.v b/src/Specific/solinas32_2e256m88x2e240m1/femul.v
new file mode 100644
index 000000000..5ea7db0f4
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW -> feBW -> feBW
+ | forall a b, phiBW (mul a b) = F.mul (phiBW a) (phiBW b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v
new file mode 100644
index 000000000..b57bd1d00
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v b/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v
new file mode 100644
index 000000000..6a4cdee35
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW -> feBW
+ | forall a, phiBW (square a) = F.mul (phiBW a) (phiBW a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v
new file mode 100644
index 000000000..2318c431f
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freeze.v b/src/Specific/solinas32_2e256m88x2e240m1/freeze.v
new file mode 100644
index 000000000..35d11de1c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW -> feBW
+ | forall a, phiBW (freeze a) = phiBW a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v
new file mode 100644
index 000000000..b5a4d82e6
--- /dev/null
+++ b/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.