You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lokinet/crypto/ntruprime-20171206/crypto_kem/ntrulpr4591761/ref
Jeff Becker a60c4b0bef
import ntru prime code
6 years ago
..
README import ntru prime code 6 years ago
api.h import ntru prime code 6 years ago
dec.c import ntru prime code 6 years ago
enc.c import ntru prime code 6 years ago
hide.c import ntru prime code 6 years ago
hide.h import ntru prime code 6 years ago
implementors import ntru prime code 6 years ago
int32_sort.c import ntru prime code 6 years ago
int32_sort.h import ntru prime code 6 years ago
keypair.c import ntru prime code 6 years ago
modq.h import ntru prime code 6 years ago
params.h import ntru prime code 6 years ago
randomweightw.c import ntru prime code 6 years ago
rq.h import ntru prime code 6 years ago
rq_fromseed.c import ntru prime code 6 years ago
rq_mult.c import ntru prime code 6 years ago
rq_round3.c import ntru prime code 6 years ago
rq_rounded.c import ntru prime code 6 years ago
small.c import ntru prime code 6 years ago
small.h import ntru prime code 6 years ago

README

This is a reference implementation of NTRU LPRime 4591^761. This
implementation is designed primarily for clarity, subject to the
following constraints:

   * The implementation is written in C. We have a separate Sage
     implementation that is considerably more concise.

   * The implementation avoids data-dependent branches and array
     indices. For example, conditional swaps are computed by arithmetic
     rather than by branches.

   * The implementation avoids other C operations that often take
     variable time. For example, divisions by 3 are computed via
     multiplications and shifts.
     
This implementation does _not_ sacrifice clarity for speed.

This implementation has not yet been reviewed for correctness or for
constant-time behavior. It does pass various tests and has no known
bugs, but there are at least some platforms where multiplications take
variable time, and fixing this requires platform-specific effort; see
https://www.bearssl.org/ctmul.html and http://repository.tue.nl/800603.

This implementation allows "benign malleability" of ciphertexts, as
defined in http://www.shoup.net/papers/iso-1_1.pdf. A similar comment
applies to public keys.

There is a separate "avx" implementation where similar comments apply,
except that "avx" _does_ sacrifice clarity for speed on CPUs with AVX2
instructions.