# infidel_poly C polynomial library for ECC based cryptography. ## References - **Libntru** : Polynomial multiplication and inversion [commit](https://github.com/tbuktu/libntru/commit/15423e7f5f44d5ef69cb4aa50eaa03c07a7ecad0) - **Sanfoundry** : [C Program to Evaluate given polynomial equation](https://www.sanfoundry.com/c-program-polynomial-equation/) ## Libntru Notes Libntru use some custom data types declared in `types.h`. `NtruIntPoly` : Polynomial with 16-bit integer coefficients ```c typedef struct NtruIntPoly { uint16_t N; int16_t coeffs[NTRU_INT_POLY_SIZE]; } NtruIntPoly; ``` `NtruTernPoly` : Ternary polynomial, all coefficients are equal to -1, 0, or 1. ```c typedef struct NtruTernPoly { uint16_t N; uint16_t num_ones; uint16_t num_neg_ones; uint16_t ones[NTRU_MAX_ONES]; uint16_t neg_ones[NTRU_MAX_ONES]; } NtruTernPoly; ``` ## Key Components - [ ] Basic Evaluation on generated equation - [ ] Basic Operation (Addition, Reduction, Multiplication, Division) - [ ] Advance Operation (Inversion) - [ ] Bitwise for array - [ ] Pointer management for polynomial indexes - [ ] Random Generators