diff --git a/.gitignore b/.gitignore index 566858b..3837701 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,6 @@ latex/ src/main.c src/main -./.settings/org.eclipse* \ No newline at end of file +./.settings/org.eclipse* + +.project \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index a2785b2..0000000 --- a/.project +++ /dev/null @@ -1,11 +0,0 @@ - - - Semesterprojekt2014 - - - - - - - - diff --git a/src/ntru_decrypt.c b/src/ntru_decrypt.c index d385959..d7562a2 100644 --- a/src/ntru_decrypt.c +++ b/src/ntru_decrypt.c @@ -19,6 +19,49 @@ * MA 02110-1301 USA */ +#include "ntru_decrypt.h" + +/* + * Legend + * + * N : highest degree of the polynom + * q : "is given" (... mod q) + * p : "is given" (... mod p) + * f : private key + * Fp: inverse of "modulo p" + * e : encrypted message + * a : result of first multiplication (StarMultiply(f, e, a, N, q)) + * d : result of second multiplication (StarMultiply(a, Fp , d, N, p)), decrypted message + * */ + +// Require: N , q, p, secret key f , inverse polynomial Fp , and encrypted message e. int ntru_decrypt(char *encr_msg, pb_poly *private_key, ntru_context *context, char ** decr_msg){ - return 0; + // toDo q = ?, p = ?, fp = ? + + pb_poly *a = first_multiply(private_key, encr_msg, q);// StarMultiply(f, e, a, N, q) + + for(int i = 0, i < N, i++){ + if(a[i] < 0 ) { + a[i] = a[i] + q; // Make all coefficients positive + } + if(a[i] > q/2) { + a[i] = a[i] - q // Shift coefficients of a into range (−q/2, q/2) + } + } + char* d = second_multiply(a, fp, p)// StarMultiply(a, Fp , d, N, p) + + // {Decode returns the decrypted message, d, through the argument list.} + return d; +} + +// toDo fix header file definition and types if needed! +pb_poly* first_multiply(pb_poly *private_key, char *encr_msg, int q) { + // toDo a= f*e mod q + return NULL; +} + +// toDo fix header file definition and types if needed! +char* second_multiply(pb_poly *a, pb_poly *fp, int p) { + //toDo a*Fp mod p + return NULL; } diff --git a/src/ntru_decrypt.h b/src/ntru_decrypt.h index 9da81cc..92ac915 100644 --- a/src/ntru_decrypt.h +++ b/src/ntru_decrypt.h @@ -26,5 +26,7 @@ #include "context.h" int ntru_decrypt(char *encr_msg, pb_poly *private_key, ntru_context *context, char ** decr_msg); +pb_poly* first_multiply(pb_poly*, char*, int); +char* first_multiply(pb_poly*, pb_poly*, int); #endif /* NTRU_DECRYPT */