This is an automated email from the ASF dual-hosted git repository. sandreoli pushed a commit to branch issue51 in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-c.git
commit 02699cc05380ded365a70b34fdc7932a040cdc8f Author: samuele-andreoli <[email protected]> AuthorDate: Tue Nov 26 16:49:41 2019 +0000 rework paillier so ff_8192 is not needed --- CMakeLists.txt | 2 +- benchmark/benchtest_paillier.c.in | 3 -- cmake/AMCLParameters.cmake | 1 - config.mk | 2 +- examples/example_paillier.c | 3 -- include/ff.h.in | 2 +- include/paillier.h | 17 ---------- src/paillier.c | 65 +++++++++++++-------------------------- test/test_paillier_add.c | 3 -- test/test_paillier_consistency.c | 3 -- test/test_paillier_decrypt.c | 3 -- test/test_paillier_encrypt.c | 3 -- test/test_paillier_keygen.c | 3 -- test/test_paillier_mult.c | 3 -- 14 files changed, 25 insertions(+), 88 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ace56aa..436c36e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -301,7 +301,7 @@ endif() ################################################## if(BUILD_PAILLIER) - foreach(level 2048 4096 8192) + foreach(level 2048 4096) amcl_rsa_field(BD "${level}") amcl_rsa_field(TFF "${level}") diff --git a/benchmark/benchtest_paillier.c.in b/benchmark/benchtest_paillier.c.in index 2cfb594..2e5a2ec 100644 --- a/benchmark/benchtest_paillier.c.in +++ b/benchmark/benchtest_paillier.c.in @@ -25,9 +25,6 @@ under the License. #include <stdlib.h> #include <string.h> #include <time.h> -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "randapi.h" #include "paillier.h" #include "amcl.h" diff --git a/cmake/AMCLParameters.cmake b/cmake/AMCLParameters.cmake index c4333f4..b9f8a93 100644 --- a/cmake/AMCLParameters.cmake +++ b/cmake/AMCLParameters.cmake @@ -101,7 +101,6 @@ set(AMCL_RSA_FIELDS TB TFF NB BASE ML) set(AMCL_RSA_64_2048 1024 2048 128 58 2 ) set(AMCL_RSA_64_3072 384 3072 48 56 8 ) set(AMCL_RSA_64_4096 512 4096 64 60 8 ) -set(AMCL_RSA_64_8192 512 8192 64 60 16) # ( TB TFF NB BASE ML) set(AMCL_RSA_32_2048 1024 2048 128 28 2 ) set(AMCL_RSA_32_3072 384 3072 48 28 8 ) diff --git a/config.mk b/config.mk index 4a12ba5..bdbc4cd 100644 --- a/config.mk +++ b/config.mk @@ -7,7 +7,7 @@ WORD_SIZE:=64 AMCL_CURVE:=ED25519,NIST256,GOLDILOCKS,BLS381 # RSA security level: 2048 3072 4096 (8192 for Paillier) -AMCL_RSA:=2048,4096,8192 +AMCL_RSA:=2048,4096 # Build type Debug Release Coverage ASan Check CheckFull CMAKE_BUILD_TYPE:=Release diff --git a/examples/example_paillier.c b/examples/example_paillier.c index 884929f..b293724 100644 --- a/examples/example_paillier.c +++ b/examples/example_paillier.c @@ -28,9 +28,6 @@ under the License. #include <stdlib.h> #include <string.h> #include <time.h> -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "randapi.h" #include "paillier.h" diff --git a/include/ff.h.in b/include/ff.h.in index cb468b2..a3fc4c8 100644 --- a/include/ff.h.in +++ b/include/ff.h.in @@ -294,7 +294,7 @@ extern int FF_WWW_prime(BIG_XXX *x,csprng *R,int n); extern void FF_WWW_pow2(BIG_XXX *r,BIG_XXX *x,BIG_XXX e,BIG_XXX *y,BIG_XXX f,BIG_XXX *m,int n); /** @brief Calculate r=x^e.y^f mod m for big e and f * - @param r FF instance, on exit = x^e.y^f mod p + @param r FF instance, on exit = x^e.y^f mod m @param x FF instance @param e FF exponent @param y FF instance diff --git a/include/paillier.h b/include/paillier.h index 4f9fee8..8072370 100644 --- a/include/paillier.h +++ b/include/paillier.h @@ -27,34 +27,17 @@ under the License. #include <stdlib.h> #include <string.h> #include <time.h> -#include "ff_8192.h" #include "ff_4096.h" #include "ff_2048.h" -#define HASH_TYPE SHA256 /**< Hash function used */ - // Field size -#define FS_8192 MODBYTES_512_60*FFLEN_8192 /**< 8192 field size in bytes */ #define FS_4096 MODBYTES_512_60*FFLEN_4096 /**< 4096 field size in bytes */ #define FS_2048 MODBYTES_1024_58*FFLEN_2048 /**< 2048 field size in bytes */ // Half field size -#define HFS_8192 MODBYTES_512_60*HFLEN_8192 /**< Half 8192 field size in bytes */ #define HFS_4096 MODBYTES_512_60*HFLEN_4096 /**< Half 4096 field size in bytes */ #define HFS_2048 MODBYTES_1024_58*HFLEN_2048 /**< Half 2048 field size in bytes */ -/*! \brief quotient of y divided by x - * - * <ol> - * <li> \f$ z = y / x \f$ - * </ol> - * - * @param x Demominator - * @param y Numerator - * @param z Quotient of y divided by x - * @return Returns 0 or else error code - */ -int FF_4096_divide(BIG_512_60 x[], BIG_512_60 y[], BIG_512_60 z[]); /*! \brief Generate the key pair * diff --git a/src/paillier.c b/src/paillier.c index d19776a..f2040c4 100644 --- a/src/paillier.c +++ b/src/paillier.c @@ -23,7 +23,6 @@ under the License. #include <stdlib.h> #include <string.h> #include <time.h> -#include "ff_8192.h" #include "ff_4096.h" #include "ff_2048.h" #include "paillier.h" @@ -256,24 +255,9 @@ int PAILLIER_ENCRYPT(csprng *RNG, octet* N, octet* G, octet* PT, octet* CT, octe printf("pt "); FF_4096_output(pt,FFLEN_4096); printf("\n\n"); - printf("gpt "); - FF_4096_output(gpt,FFLEN_4096); - printf("\n\n"); - printf("rn "); - FF_4096_output(rn,FFLEN_4096); - printf("\n\n"); - printf("gpt8 "); - FF_8192_output(gpt8,FFLEN_8192); - printf("\n\n"); - printf("rn8 "); - FF_8192_output(rn8,FFLEN_8192); - printf("\n\n"); printf("ct "); - FF_8192_output(ct,FFLEN_8192); + FF_4096_output(ct,FFLEN_4096); printf("\n\n"); - printf("CT2: "); - OCT_output(&CT2); - printf("\n"); printf("CT: "); OCT_output(CT); printf("\n"); @@ -384,60 +368,56 @@ int PAILLIER_DECRYPT(octet* N, octet* L, octet* M, octet* CT, octet* PT) int PAILLIER_ADD(octet* N, octet* CT1, octet* CT2, octet* CT) { // Public key - BIG_512_60 n[FFLEN_8192]; + BIG_512_60 n[HFLEN_4096]; // n2 = n^2 - BIG_512_60 n2[FFLEN_8192]; + BIG_512_60 n2[FFLEN_4096]; // ciphertext - BIG_512_60 ct1[FFLEN_8192]; - BIG_512_60 ct2[FFLEN_8192]; - BIG_512_60 ct[FFLEN_8192]; - - FF_8192_zero(n,FFLEN_8192); - FF_8192_fromOctet(n,N,FFLEN_8192/4); - - FF_8192_zero(ct1,FFLEN_8192); - FF_8192_fromOctet(ct1,CT1,HFLEN_8192); + BIG_512_60 ct1[FFLEN_4096]; + BIG_512_60 ct2[FFLEN_4096]; + BIG_512_60 ct[2 * FFLEN_4096]; - FF_8192_zero(ct2,FFLEN_8192); - FF_8192_fromOctet(ct2,CT2,HFLEN_8192); + FF_4096_fromOctet(n,N,HFLEN_4096); + FF_4096_fromOctet(ct1,CT1,FFLEN_4096); + FF_4096_fromOctet(ct2,CT2,FFLEN_4096); // n2 = n^2 - FF_8192_sqr(n2, n, HFLEN_8192); + FF_4096_sqr(n2, n, HFLEN_4096); + FF_4096_norm(n2, FFLEN_4096); #ifdef DEBUG printf("PAILLIER_ADD ct1 "); - FF_8192_output(ct1,FFLEN_8192); + FF_4096_output(ct1,FFLEN_4096); printf("\n\n"); printf("PAILLIER_ADD ct2 "); - FF_8192_output(ct2,FFLEN_8192); + FF_4096_output(ct2,FFLEN_4096); printf("\n\n"); #endif // ct = ct1 * ct2 mod n^2 - FF_8192_mul(ct,ct1,ct2,HFLEN_8192); + FF_4096_mul(ct,ct1,ct2,FFLEN_4096); #ifdef DEBUG printf("PAILLIER_ADD ct1 * ct2 "); - FF_8192_output(ct,FFLEN_8192); + FF_4096_output(ct,2 * FFLEN_4096); printf("\n\n"); #endif - FF_8192_mod(ct,n2,FFLEN_8192); + FF_4096_dmod(ct,ct,n2,FFLEN_4096); // Output - FF_8192_toOctet(CT, ct, HFLEN_8192); + FF_4096_toOctet(CT, ct, FFLEN_4096); #ifdef DEBUG printf("PAILLIER_ADD n "); - FF_8192_output(n,FFLEN_8192); + FF_4096_output(n,HFLEN_4096); printf("\n\n"); printf("PAILLIER_ADD ct1 "); - FF_8192_output(ct1,FFLEN_8192); + FF_4096_output(ct1,FFLEN_4096); printf("\n\n"); printf("PAILLIER_ADD ct2 "); - FF_8192_output(ct2,FFLEN_8192); + FF_4096_output(ct2,FFLEN_4096); printf("\n\n"); #endif @@ -452,7 +432,7 @@ int PAILLIER_ADD(octet* N, octet* CT1, octet* CT2, octet* CT) int PAILLIER_MULT(octet* N, octet* CT1, octet* PT, octet* CT) { // Public key - BIG_512_60 n[FFLEN_4096]; + BIG_512_60 n[HFLEN_4096]; // n^2 BIG_512_60 n2[FFLEN_4096]; @@ -467,7 +447,6 @@ int PAILLIER_MULT(octet* N, octet* CT1, octet* PT, octet* CT) BIG_512_60 ct[FFLEN_4096]; // Convert n from FF_2048 to FF_4096 - FF_4096_zero(n, FFLEN_4096); FF_4096_fromOctet(n,N,HFLEN_4096); FF_4096_zero(pt, FFLEN_4096); @@ -487,7 +466,7 @@ int PAILLIER_MULT(octet* N, octet* CT1, octet* PT, octet* CT) #ifdef DEBUG printf("PAILLIER_MULT n: "); - FF_4096_output(n,FFLEN_4096); + FF_4096_output(n,HFLEN_4096); printf("\n\n"); printf("PAILLIER_MULT n2: "); FF_4096_output(n2,FFLEN_4096); diff --git a/test/test_paillier_add.c b/test/test_paillier_add.c index 63f2674..7408547 100644 --- a/test/test_paillier_add.c +++ b/test/test_paillier_add.c @@ -22,9 +22,6 @@ #include <string.h> #include <time.h> #include "amcl.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "paillier.h" #define LINE_LEN 2000 diff --git a/test/test_paillier_consistency.c b/test/test_paillier_consistency.c index 01ffa43..b21a1cb 100644 --- a/test/test_paillier_consistency.c +++ b/test/test_paillier_consistency.c @@ -26,9 +26,6 @@ under the License. #include <string.h> #include <time.h> #include "randapi.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "paillier.h" #define NTHREADS 2 diff --git a/test/test_paillier_decrypt.c b/test/test_paillier_decrypt.c index 3d4c490..6f12989 100644 --- a/test/test_paillier_decrypt.c +++ b/test/test_paillier_decrypt.c @@ -22,9 +22,6 @@ #include <string.h> #include <time.h> #include "amcl.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "paillier.h" #define LINE_LEN 2000 diff --git a/test/test_paillier_encrypt.c b/test/test_paillier_encrypt.c index 3d4586d..62bb7e1 100644 --- a/test/test_paillier_encrypt.c +++ b/test/test_paillier_encrypt.c @@ -22,9 +22,6 @@ #include <string.h> #include <time.h> #include "amcl.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "paillier.h" #define LINE_LEN 2000 diff --git a/test/test_paillier_keygen.c b/test/test_paillier_keygen.c index 334cd10..74c8673 100644 --- a/test/test_paillier_keygen.c +++ b/test/test_paillier_keygen.c @@ -22,9 +22,6 @@ #include <string.h> #include <time.h> #include "amcl.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "randapi.h" #include "paillier.h" diff --git a/test/test_paillier_mult.c b/test/test_paillier_mult.c index 4f832d3..b8b7aae 100644 --- a/test/test_paillier_mult.c +++ b/test/test_paillier_mult.c @@ -22,9 +22,6 @@ #include <string.h> #include <time.h> #include "amcl.h" -#include "ff_8192.h" -#include "ff_4096.h" -#include "ff_2048.h" #include "paillier.h" #define LINE_LEN 2000
