aboutsummaryrefslogtreecommitdiff
path: root/generate_parameters.py
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-10-14 15:44:43 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-10-14 15:44:43 -0400
commitd3f5c4da8341bab4f15769a658f4c6f7c9ee4e2b (patch)
treeee5fe22e44a689094779013d2518dc6355e29829 /generate_parameters.py
parentaecdbadc297718e01d69d845672c7d9dedebe11d (diff)
Add generated json files from generate_parameters.py
Diffstat (limited to 'generate_parameters.py')
-rw-r--r--generate_parameters.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/generate_parameters.py b/generate_parameters.py
index 0b6d0bb4c..1b65607f1 100644
--- a/generate_parameters.py
+++ b/generate_parameters.py
@@ -66,12 +66,15 @@ EXAMPLES (handwritten):
'''
-import math,json,sys
+import math,json,sys,os
# for montgomery
COMPILER_MONT = "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"
# for solinas
COMPILER_SOLI = "gcc -march=native -mtune=native -std=gnu11 -O3 -flto -fomit-frame-pointer -fwrapv -Wno-attributes"
+CUR_PATH = os.path.dirname(os.path.realpath(__file__))
+JSON_DIRECTORY = os.path.join(CUR_PATH, "src/Specific/CurveParameters")
+REMAKE_CURVES = os.path.join(JSON_DIRECTORY, 'remake_curves.sh')
# given a string representing one term or "tap" in a prime, returns a pair of
# integers representing the weight and coefficient of that tap
@@ -181,12 +184,27 @@ def get_params_solinas(prime, bitwidth):
output["goldilocks"] = True
return output
+def update_remake_curves(filename):
+ with open(REMAKE_CURVES, 'r') as f:
+ lines = f.readlines()
+ new_line = '${MAKE} "$@" %s ../%s/\n' % (filename, filename[:-len('.json')])
+ if new_line in lines: return
+ if any(filename in line for line in lines):
+ lines = [(line if filename not in line else new_line)
+ for line in lines]
+ else:
+ lines.append(new_line)
+ with open(REMAKE_CURVES, 'w') as f:
+ f.write(''.join(lines))
+
+
def write_output(name, params):
prime = params["modulus"]
filename = (name + "_" + prime + ".json").replace("^","e").replace(" ","").replace("-","m").replace("+","p").replace("*","x")
- g = open(filename,"w")
+ g = open(os.path.join(JSON_DIRECTORY, filename), "w")
g.write(json.dumps(params))
g.close()
+ update_remake_curves(filename)
USAGE = "python generate_parameters.py input_file"
if __name__ == "__main__":