From b8b1eeeeeaef226a350529f41a7d302f289c9bdc Mon Sep 17 00:00:00 2001 From: infidel Date: Sat, 16 Apr 2022 15:38:03 +0700 Subject: [PATCH] rand_poly initial setup --- Makefile | 18 ++++++++++++++++++ README.md | 5 ++++- bin/test | Bin 0 -> 19048 bytes src/poly.c | 11 +++++++++++ src/types.h | 10 ++++++++-- test.o | Bin 0 -> 1736 bytes test_util.o | Bin 0 -> 1448 bytes tests/test.c | 27 +++++++++++++++++++++++++++ tests/test_util.c | 19 +++++++++++++++++++ tests/test_util.h | 11 +++++++++++ tests/testparams.h | 9 +++++++++ 11 files changed, 107 insertions(+), 3 deletions(-) create mode 100755 bin/test create mode 100644 test.o create mode 100644 test_util.o create mode 100644 tests/test.c create mode 100644 tests/test_util.c create mode 100644 tests/test_util.h create mode 100644 tests/testparams.h diff --git a/Makefile b/Makefile index e69de29..12d40fd 100644 --- a/Makefile +++ b/Makefile @@ -0,0 +1,18 @@ +CC?=gcc +AS=$(CC) -c +AR?=ar + +CFLAGS?=-g +CFLAGS+=-Wall -Wextra + +SRCDIR=src +TESTDIR=tests +BINDIR=bin + +test_codes = tests/test.c tests/test_util.c + +bin/test: + $(CC) $(CFLAGS) -I$(SRCDIR) $(test_codes) -o $@ + +clean: + rm -f $(BINDIR)/* diff --git a/README.md b/README.md index 8a02c3c..618ebed 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ C polynomial library for ECC based cryptography. 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 @@ -38,7 +41,7 @@ Libntru use some custom data types declared in `types.h`. - [ ] Advance Operation (Inversion) - [ ] Bitwise for array - [ ] Pointer management for polynomial indexes -- [ ] Random Generators +- [ ] ~~Random Generators~~ diff --git a/bin/test b/bin/test new file mode 100755 index 0000000000000000000000000000000000000000..528864153e7b8fbdbc24bdf80c3db365e312527a GIT binary patch literal 19048 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 +#include #include +#include "types.h" + +uint8_t inf_mult_poly(NtruIntPoly *a,NtruIntPoly *b, NtruIntPoly *c, uint16_t modulus) { + +} + + + + + diff --git a/src/types.h b/src/types.h index f8ffedc..5a7a457 100644 --- a/src/types.h +++ b/src/types.h @@ -1,5 +1,11 @@ /* Here we Declared our custom data types */ -struct infPoly { +#include -} +#define NTRU_MAX_DEGREE (1499+1) +#define NTRU_INT_POLY_SIZE ((NTRU_MAX_DEGREE+16+7)&0XFFF8) + +typedef struct NtruIntPoly { + uint16_t N; + int16_t coeffs[NTRU_INT_POLY_SIZE]; +} NtruIntPoly; diff --git a/test.o b/test.o new file mode 100644 index 0000000000000000000000000000000000000000..e5a86661ddd93373fdef57f2136994fb6568abf1 GIT binary patch literal 1736 zcmbtU&1(};5T8xcFWRKB^dMAZFG~E#lJwx$L4qN658@#hC|=f0vT0(IP1t=ajTezp zVF?uv{wrb;Dgh5g@ZiCJp&;l%sfQwkIJ0>#eO>pYKX`pJzc;^`eKRk8R=jsNrYInw zz->731Ph=~oY?um%tI0qaJX>(cUkuj^ylAG^8o(d@!@c&`)_{WR@3|O3uz42{o+w> zpzlnQQ1|!0(q7-+PW~DW0lr<XWLDCU43A=OhW*y77Dl2bh+Z$%u{nYZAHswu6u#Ia)}d^ z4!g^NCQ^?n&*00ZL0^_S2lC{IhEY^Idu`RSQg*sycR(IUL2KgDF~MXZpRiuEyq zh-gr+yN-Rq8!8ah6z(w~7V-blcp6(FE1EXeEp=~y8=z7cr z$Fyrkx6|r@VYtk!ZWz_ZhEX@0Evki04}kp(dUre=;Tq?ur*sR!Ka}_>iGL~a(-N<8 zp7PTgLvwp=W>!FRnKRlO!g8#ZsWEGlfmSn_30lQpGpT<**)VD3jGN>WyO4n5fmzAPoiKSNiIqS352zaR1qOZ37hS%5tH4pc?*dk9ty(Z zrC0w058iXFc(8gZJ$cNbLO?IYgHy5xMRyV=vg={P-SLE0q=f zYPBAEGSrJjQ4)pa8(|!lt|=hC8^A2uJn9M5)%#Vz>u(V@gGzE?Y(RVV5VUSyTU?kw zxrsl18F5mQCVh;v`InhWb}nOM1p(8AW;P4^htsk%Qzn|l!t)6{J`1snsC4gRBAt$` zh4M*L*brFWdadm@d$H%Yu(+fM^pB*!567Y_oYt3EA%N)gTGFbcmBH9H*bAJdC8X1p zAl5Bufv9&nAZ)+Yay-O5UpfM3y4;bL{Zz$|y->6RzwHFF2O{p^G-_^OwH$SW|1&z$ zX~uJ@Hf0s_{5YL{!;6@pxsiMty zB66u`0W~RnKHV=Vd_LP1OtPP>+f4=uKV5qlbMvSZZwTYhilZybhUdp|9UbbK<{zkn zn_Q@Dn*Rv#Y5N +#include +#include "test_util.h" + +int main(int argc, char** argv) { + + printf("Running Test....\n"); + + uint16_t i; + uint16_t modulus; + uint16_t N; + // int16_t coeffs[NTRU_INT_POLY_SIZE]; + // uint16_t a; + + + + modulus = 4; + N = 739; + NtruIntPoly a, c; + // a = 739; + + printf("%d\n", modulus); + printf("%d\n", N); + // printf("%d\n", &a); + + rand_poly(&a, N, modulus); +} diff --git a/tests/test_util.c b/tests/test_util.c new file mode 100644 index 0000000..a9a138e --- /dev/null +++ b/tests/test_util.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include "test_util.h" + + +void rand_poly(NtruIntPoly *a, uint16_t N, uint16_t modulus){ + uint16_t i; + int16_t coeffs[N]; + // int16_t coeffs; + a->N = N; + printf("-> "); + for (i=0; icoeffs[i] = random() % modulus; + printf("%d %d\n ", i+1, coeffs[i] ); + } +} + diff --git a/tests/test_util.h b/tests/test_util.h new file mode 100644 index 0000000..4ac2b52 --- /dev/null +++ b/tests/test_util.h @@ -0,0 +1,11 @@ +#ifndef TEST_UTIL_H +#define TEST_UTIL_H + +#include +#include "types.h" + +void rand_poly(NtruIntPoly *a, uint16_t N, uint16_t modulus); + +int main(int argc, char** argv); + +#endif diff --git a/tests/testparams.h b/tests/testparams.h new file mode 100644 index 0000000..78b2168 --- /dev/null +++ b/tests/testparams.h @@ -0,0 +1,9 @@ +#include +#include + +#define NTRU_P 739 +#define NTRU_Q 9820 +#define NTRU_T 204 + + +uint8_t ntruprime_mult_poly(NtruIntPoly *a, NtruIntPoly *b, NtruIntPoly *c, uint16_t modulus);