diff options
author | Jason Gross <jgross@mit.edu> | 2017-10-06 15:10:11 -0400 |
---|---|---|
committer | Jason Gross <jasongross9@gmail.com> | 2017-10-18 23:01:29 -0400 |
commit | 6e53b58204d6befd70d2413cfb1bfecaf0f4a73c (patch) | |
tree | daadd4b39026b930e29fb4157a83a4bc103d9db0 /src/Specific/Framework | |
parent | d6703ded104fc9085474bfe68b7e897b35cfbe0a (diff) |
Handle generating the correct c from 2^448-2^224-1
Diffstat (limited to 'src/Specific/Framework')
-rwxr-xr-x | src/Specific/Framework/make_curve.py | 16 |
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 |