infidel_poly/README.md
2022-04-16 15:38:03 +07:00

48 lines
1.2 KiB
Markdown

# 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`.
> `uint8_t` : Unsigned 8-bit integer
> `uint16_t` : Unsigned 16-bit integer
`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~~