aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-10-06 15:10:11 -0400
committerGravatar Jason Gross <jasongross9@gmail.com>2017-10-18 23:01:29 -0400
commit6e53b58204d6befd70d2413cfb1bfecaf0f4a73c (patch)
treedaadd4b39026b930e29fb4157a83a4bc103d9db0
parentd6703ded104fc9085474bfe68b7e897b35cfbe0a (diff)
Handle generating the correct c from 2^448-2^224-1
-rwxr-xr-xsrc/Specific/Framework/make_curve.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Specific/Framework/make_curve.py b/src/Specific/Framework/make_curve.py
index 6c155efb9..89008b482 100755
--- a/src/Specific/Framework/make_curve.py
+++ b/src/Specific/Framework/make_curve.py
@@ -9,13 +9,25 @@ def compute_sz(modulus, base):
def default_carry_chains():
return ('seq 0 (pred sz)', '[0; 1]')
def compute_s(modulus_str):
- base, exp, rest = re.match(r'\s*'.join(('^', '(2)', r'\^', '([0-9]+)', '([0-9^ +-]*)$')), modulus_str).groups()
+ base, exp, rest = re.match(r'\s*'.join(('^', '(2)', r'\^', '([0-9]+)', r'([0-9\^ +\*-]*)$')), modulus_str).groups()
return '%s^%s' % (base, exp)
def compute_c(modulus_str):
- base, exp, rest = re.match(r'\s*'.join(('^', '(2)', r'\^', '([0-9]+)', '([0-9^ +-]*)$')), modulus_str).groups()
+ base, exp, rest = re.match(r'\s*'.join(('^', '(2)', r'\^', '([0-9]+)', r'([0-9\^ +\*-]*)$')), modulus_str).groups()
if rest.strip() == '': return '[]'
assert(rest.strip()[0] == '-')
rest = negate_numexpr(rest.strip()[1:])
+ ret = []
+ for part in re.findall(r'(-?[0-9\^\*]+)', rest.replace(' ', '')):
+ if part.isdigit():
+ ret.append('(1, %s)' % part)
+ elif part[:2] == '2^' and part[2:].isdigit():
+ ret.append('(%s, 1)' % part)
+ else:
+ raw_input('Unhandled part: %s' % part)
+ ret = None
+ break
+ if ret is not None:
+ return '[%s]' % '; '.join(reversed(ret))
# XXX FIXME: Is this the right way to extract c?
return '[(1, %s)]' % rest