aboutsummaryrefslogtreecommitdiff
path: root/generate_parameters.py
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-02 03:25:39 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-11-02 03:25:39 -0400
commit80e39fc2e71709b098c42ca88dd5bb8736fd9ab9 (patch)
treea7bc078a40e72bf60cac5f1333b69f16cbdbdd52 /generate_parameters.py
parentce66cff4fb2ce5ba8160b922767923a939c653d1 (diff)
Also define modulus_array
Diffstat (limited to 'generate_parameters.py')
-rw-r--r--generate_parameters.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/generate_parameters.py b/generate_parameters.py
index 336b82507..82aab3ca2 100644
--- a/generate_parameters.py
+++ b/generate_parameters.py
@@ -66,7 +66,7 @@ EXAMPLES (handwritten):
'''
-import math,json,sys,os,traceback,re
+import math,json,sys,os,traceback,re,textwrap
from fractions import Fraction
# for montgomery
@@ -137,10 +137,16 @@ def sanity_check(p):
raise UnexpectedPrimeException("Parsed prime %s has unexpected format" %p)
+def eval_numexpr(numexpr):
+ # copying from https://stackoverflow.com/a/25437733/377022
+ numexpr = re.sub(r"\.(?![0-9])", "", numexpr) # purge any instance of '.' not followed by a number
+ return eval(numexpr, {'__builtins__':None})
+
def get_extra_compiler_params(q, base):
q_mpz = repr(re.sub(r'2(\s*)\^(\s*)([0-9]+)', r'(1_mpz\1<<\2\3)', str(q)))
modulus_bytes_val = repr(str(base))
- return ' -Dq_mpz=%(q_mpz)s -Dmodulus_bytes_val=%(modulus_bytes_val)s' % locals()
+ modulus_array = '{%s}' % ','.join(textwrap.wrap(hex(eval_numexpr(q))[2:].strip('L'), 2))
+ return ' -Dq_mpz=%(q_mpz)s -Dmodulus_bytes_val=%(modulus_bytes_val)s -Dmodulus_array=%(modulus_array)s' % locals()
def num_bits(p):
return p[0][1]