-
- Downloads
Use SHL{8,32,64} in ed25519/ref10 to avoid left-shifting negative values
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\)/;
Showing
- src/ext/ed25519/ref10/fe_frombytes.c 10 additions, 10 deletionssrc/ext/ed25519/ref10/fe_frombytes.c
- src/ext/ed25519/ref10/fe_mul.c 12 additions, 12 deletionssrc/ext/ed25519/ref10/fe_mul.c
- src/ext/ed25519/ref10/fe_sq.c 12 additions, 12 deletionssrc/ext/ed25519/ref10/fe_sq.c
- src/ext/ed25519/ref10/fe_sq2.c 12 additions, 12 deletionssrc/ext/ed25519/ref10/fe_sq2.c
- src/ext/ed25519/ref10/fe_tobytes.c 18 additions, 18 deletionssrc/ext/ed25519/ref10/fe_tobytes.c
- src/ext/ed25519/ref10/ge_scalarmult_base.c 1 addition, 1 deletionsrc/ext/ed25519/ref10/ge_scalarmult_base.c
- src/ext/ed25519/ref10/sc_muladd.c 79 additions, 79 deletionssrc/ext/ed25519/ref10/sc_muladd.c
- src/ext/ed25519/ref10/sc_reduce.c 56 additions, 56 deletionssrc/ext/ed25519/ref10/sc_reduce.c
Loading
Please register or sign in to comment