Project design

This commit is contained in:
infidel
2022-04-15 14:48:08 +07:00
parent c702fa9dd3
commit e098f57a87
6 changed files with 37 additions and 1 deletions

View File

@@ -6,12 +6,39 @@ C polynomial library for ECC based cryptography.
- **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