summaryrefslogtreecommitdiff
path: root/src/ext/ed25519/ref10/fe_sq2.c
AgeCommit message (Collapse)Author
2014-09-28Use SHL{8,32,64} in ed25519/ref10 to avoid left-shifting negative valuesNick Mathewson
This helps us avoid undefined behavior. It's based on a patch from teor, except that I wrote a perl script to regenerate the patch: #!/usr/bin/perl -p -w -i BEGIN { %vartypes = (); } if (/^[{}]/) { %vartypes = (); } if (/^ *crypto_int(\d+) +([a-zA-Z_][_a-zA-Z0-9]*)/) { $vartypes{$2} = $1; } elsif (/^ *(?:signed +)char +([a-zA-Z_][_a-zA-Z0-9]*)/) { $vartypes{$1} = '8'; } # This fixes at most one shift per line. But that's all the code does. if (/([a-zA-Z_][a-zA-Z_0-9]*) *<< *(\d+)/) { $v = $1; if (exists $vartypes{$v}) { s/$v *<< *(\d+)/SHL$vartypes{$v}($v,$1)/; } } # remove extra parenthesis s/\(SHL64\((.*)\)\)/SHL64\($1\)/; s/\(SHL32\((.*)\)\)/SHL32\($1\)/; s/\(SHL8\((.*)\)\)/SHL8\($1\)/;
2014-08-26Add some explicit casts as needed to make ed25519_ref10 compileNick Mathewson
Apparently, ref10 likes implicit conversions from int64 to int32 more than our warnings do.
2014-08-26Add the ed25519 ref10 code verbatim from supercop-20140622Nick Mathewson
We might use libsodium or ed25519-donna later on, but for now, let's see whether this is fast enough. We should use it in all cases when performance doesn't matter.