48 lines
1.2 KiB
Markdown
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~~
|
|
|
|
|
|
|