This is an automated email from the ASF dual-hosted git repository. giorgio pushed a commit to branch security_checks in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-c.git
commit d8e9238c4b5db4172df354bb7deb270d644de85d Author: Giorgio Zoppi <[email protected]> AuthorDate: Fri Apr 17 22:51:13 2020 +0200 Added security checks: - Removed sprintf for octect/utils conversion - Closed file descriptor for tests (first part) --- .idea/.gitignore | 8 ++++++++ .idea/.name | 1 + .idea/incubator-milagro-crypto-c.iml | 2 ++ .idea/misc.xml | 7 +++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ CMakeLists.txt | 1 + include/utils.h | 7 ++++--- src/oct.c | 10 +++++++++- src/utils.c | 33 ++++++++++++++++++++------------- test/test_aes_decrypt.c | 6 ++++-- test/test_aes_encrypt.c | 14 ++++++++++---- test/test_big_arithmetics_XXX.c.in | 15 +++++++++++++++ test/test_ecdh_ZZZ.c.in | 11 ++++++++--- test/test_ecdsa_keypair_ZZZ.c.in | 6 ++++-- test/test_ecdsa_sign_ZZZ.c.in | 25 +++++++++++++++---------- test/test_ecdsa_verify_ZZZ.c.in | 17 +++++++++++------ test/test_ecp2_arithmetics_ZZZ.c.in | 12 ++++++++++++ test/test_ecp4_arithmetics_ZZZ.c.in | 23 +++++++++++++++++++++++ test/test_ecp8_arithmetics_ZZZ.c.in | 24 ++++++++++++++++++++++++ test/test_ecp_arithmetics_ZZZ.c.in | 11 +++++++++++ test/test_fp2_arithmetics_YYY.c.in | 19 +++++++++++++++++++ test/test_fp4_arithmetics_YYY.c.in | 22 ++++++++++++++++++++++ test/test_fp8_arithmetics_YYY.c.in | 18 ++++++++++++++++++ test/test_octet_consistency.c | 9 +++++++-- test/test_utils.c | 8 ++++---- 26 files changed, 273 insertions(+), 50 deletions(-) diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..afc4450 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +AMCL \ No newline at end of file diff --git a/.idea/incubator-milagro-crypto-c.iml b/.idea/incubator-milagro-crypto-c.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/incubator-milagro-crypto-c.iml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module classpath="CMake" type="CPP_MODULE" version="4" /> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8822db8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" /> + <component name="JavaScriptSettings"> + <option name="languageLevel" value="ES6" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e16fe31 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/incubator-milagro-crypto-c.iml" filepath="$PROJECT_DIR$/.idea/incubator-milagro-crypto-c.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 436c36e..01a2524 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ macro(set_if_unset var val) log(${var}) endmacro() + ################################################## # Includes ################################################## diff --git a/include/utils.h b/include/utils.h index 0297874..34c05ae 100644 --- a/include/utils.h +++ b/include/utils.h @@ -40,7 +40,7 @@ * @param dst Binary string * @param src_len length Hex encoded string */ -void amcl_hex2bin(const char *src, char *dst, int src_len); +void amcl_hex2bin(const char *src, char *dst, size_t src_len); /** * @brief Encode binary string @@ -50,8 +50,9 @@ void amcl_hex2bin(const char *src, char *dst, int src_len); * @param src Binary string * @param dst Hex encoded string * @param src_len length binary string + * @param dst_len length hex encoded string */ -void amcl_bin2hex(char *src, char *dst, int src_len); +void amcl_bin2hex(char *src, char *dst, size_t src_len, size_t dst_len); /** * @brief Print encoded binary string in hex @@ -61,7 +62,7 @@ void amcl_bin2hex(char *src, char *dst, int src_len); * @param src Binary string * @param src_len length binary string */ -void amcl_print_hex(char *src, int src_len); +void amcl_print_hex(char *src, size_t src_len); /** * @brief Generate a random Octet diff --git a/src/oct.c b/src/oct.c index cb9c067..e7d7ee2 100644 --- a/src/oct.c +++ b/src/oct.c @@ -73,6 +73,9 @@ void OCT_jstring(octet *y,char *s) int OCT_comp(octet *x,octet *y) { int i; + printf("x: %d\n",x->len); + printf("y: %d\n",y->len); + if (x->len>y->len) return 0; if (x->len<y->len) return 0; for (i=0; i<x->len; i++) @@ -351,13 +354,18 @@ void OCT_rand(octet *x,csprng *RNG,int len) /* Convert an octet to a hex string */ void OCT_toHex(octet *src,char *dst) { + const char * hexadecimals = "0123456789abcdef"; int i; unsigned char ch; for (i=0; i<src->len; i++) { ch=src->val[i]; - sprintf(&dst[i*2],"%02x", ch); + uint8_t res = ch / 16; + uint8_t mod = ch % 16; + dst[i*2] = hexadecimals[res]; + dst[(i*2)+1] = hexadecimals[mod]; } + dst[i*2] =0; } static int char2int(char input) diff --git a/src/utils.c b/src/utils.c index 1a103f5..cc533ce 100644 --- a/src/utils.c +++ b/src/utils.c @@ -30,15 +30,17 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <assert.h> #include "amcl.h" #include "utils.h" -/* Decode hex value */ -void amcl_hex2bin(const char *src, char *dst, int src_len) +/* Decode a byte to a 2 chars string */ + +/** Decode hex value */ +void amcl_hex2bin(const char *src, char *dst, size_t src_len) { - int i; char v,c; - for (i = 0; i < src_len/2; i++) + for (size_t i = 0; i < src_len/2; i++) { c = src[2*i]; if (c >= '0' && c <= '9') @@ -80,20 +82,24 @@ void amcl_hex2bin(const char *src, char *dst, int src_len) } /* Encode binary string */ -void amcl_bin2hex(char *src, char *dst, int src_len) +void amcl_bin2hex(char *src, char *dst, size_t src_len, size_t dst_len) { - int i; - for (i = 0; i < src_len; i++) + const char * hexadecimals = "0123456789abcdef"; + unsigned char ch; + for (size_t i = 0; i < src_len && i< dst_len/2; i++) { - sprintf(&dst[i*2],"%02x", (unsigned char) src[i]); + ch=src[i]; + uint8_t res = ch / 16; + uint8_t mod = ch % 16; + dst[i*2] = hexadecimals[res]; + dst[(i*2)+1] = hexadecimals[mod]; } } /* Print encoded binary string in hex */ -void amcl_print_hex(char *src, int src_len) +void amcl_print_hex(char *src, size_t src_len) { - int i; - for (i = 0; i < src_len; i++) + for (size_t i = 0; i < src_len; i++) { printf("%02x", (unsigned char) src[i]); } @@ -126,6 +132,7 @@ int generateOTP(csprng* RNG) void generateRandom(csprng *RNG,octet *randomValue) { int i; - for (i=0; i<randomValue->len; i++) - randomValue->val[i]=RAND_byte(RNG); + for (i=0; i<randomValue->len; i++) { + randomValue->val[i] = RAND_byte(RNG); + } } diff --git a/test/test_aes_decrypt.c b/test/test_aes_decrypt.c index 774c6ee..34d1b53 100644 --- a/test/test_aes_decrypt.c +++ b/test/test_aes_decrypt.c @@ -153,9 +153,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; IVLen = l1/2; IV = (char*) malloc (IVLen); - if (IV==NULL) + if (IV==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // IV binary value amcl_hex2bin(linePtr, IV, l1); } @@ -228,6 +229,7 @@ int main(int argc, char** argv) if (!rc) { printf("TEST AES DECRYPT FAILED COMPARE PLAINTEXT LINE %d\n",lineNo); + fclose(fp); exit(EXIT_FAILURE); } diff --git a/test/test_aes_encrypt.c b/test/test_aes_encrypt.c index 3c61c27..8668a4e 100644 --- a/test/test_aes_encrypt.c +++ b/test/test_aes_encrypt.c @@ -152,9 +152,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; IVLen = l1/2; IV = (char*) malloc (IVLen); - if (IV==NULL) + if (IV==NULL) { exit(EXIT_FAILURE); - + fclose(fp); + } // IV binary value amcl_hex2bin(linePtr, IV, l1); } @@ -171,8 +172,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; PLAINTEXTLen = l1/2; PLAINTEXT = (char*) malloc(PLAINTEXTLen); - if (PLAINTEXT==NULL) + if (PLAINTEXT==NULL) { + fclose(fp); exit(EXIT_FAILURE); + } // PLAINTEXT binary value amcl_hex2bin(linePtr, PLAINTEXT, l1); @@ -189,8 +192,10 @@ int main(int argc, char** argv) // Allocate memory l1 = strlen(linePtr); CIPHERTEXT1 = (char*) malloc(PLAINTEXTLen+1); - if (CIPHERTEXT1==NULL) + if (CIPHERTEXT1==NULL) { + fclose(fp); exit(EXIT_FAILURE); + } // Golden CIPHERTEXT value octet CIPHERTEXT1Oct= {PLAINTEXTLen,PLAINTEXTLen,CIPHERTEXT1}; @@ -227,6 +232,7 @@ int main(int argc, char** argv) if (!rc) { printf("TEST AES ENCRYPT FAILED COMPARE CIPHERTEXT LINE %d\n",lineNo); + fclose(fp); exit(EXIT_FAILURE); } diff --git a/test/test_big_arithmetics_XXX.c.in b/test/test_big_arithmetics_XXX.c.in index 4b5a5a1..a8908d4 100644 --- a/test/test_big_arithmetics_XXX.c.in +++ b/test/test_big_arithmetics_XXX.c.in @@ -134,6 +134,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIG1,BIG2) < 0) { printf("ERROR comparing two BIGs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -149,6 +150,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIGsum,supp) != 0) { printf("ERROR adding two BIGs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -164,6 +166,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIGsub,supp) != 0) { printf("ERROR subtracting two BIGs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -180,6 +183,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIG1mod2,supp) != 0) { printf("ERROR reducing modulo BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -196,6 +200,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIG2mod1,supp) != 0) { printf("ERROR reducing modulo BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -211,6 +216,7 @@ int main(int argc, char** argv) if (BIG_XXX_dcomp(BIGmul,dsupp) != 0) { printf("ERROR multiplication BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -226,6 +232,7 @@ int main(int argc, char** argv) if (BIG_XXX_dcomp(BIG1sqr,dsupp) != 0) { printf("ERROR squaring BIG 1, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -241,6 +248,7 @@ int main(int argc, char** argv) if (BIG_XXX_dcomp(BIG2sqr,dsupp) != 0) { printf("ERROR squaring BIG 2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -257,6 +265,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIG1sqrmod2,supp) != 0) { printf("ERROR reducing squaring modulo BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -274,6 +283,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIG1modneg2,supp) != 0) { printf("ERROR negative reduced modulo BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -287,6 +297,7 @@ int main(int argc, char** argv) if (nbitBIG != bitlen) { printf("ERROR counting bit BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -300,6 +311,7 @@ int main(int argc, char** argv) if (nbitDBIG != bitlen) { printf("ERROR counting bit DBIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -317,6 +329,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIGdiv,supp) != 0) { printf("ERROR division BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -335,6 +348,7 @@ int main(int argc, char** argv) if (BIG_XXX_comp(BIGdivmod,supp) != 0) { printf("ERROR division modulo BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -350,6 +364,7 @@ int main(int argc, char** argv) if (BIG_XXX_dcomp(BIGpxmul,dsupp) != 0) { printf("ERROR small multiplication BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_ecdh_ZZZ.c.in b/test/test_ecdh_ZZZ.c.in index c364a99..1250718 100644 --- a/test/test_ecdh_ZZZ.c.in +++ b/test/test_ecdh_ZZZ.c.in @@ -150,8 +150,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; dIUT = (char*) malloc (l2); - if (dIUT==NULL) + if (dIUT==NULL) { + fclose(fp); exit(EXIT_FAILURE); + } // dIUT binary value amcl_hex2bin(linePtr, dIUT, l1); @@ -205,9 +207,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; ZIUT = (char*) malloc (l2); - if (ZIUT==NULL) + if (ZIUT==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // ZIUT binary value amcl_hex2bin(linePtr, ZIUT, l1); @@ -255,6 +258,7 @@ int main(int argc, char** argv) OCT_output(&QIUTOct); printf("\n"); #endif + fclose(fp); exit(EXIT_FAILURE); } @@ -272,6 +276,7 @@ int main(int argc, char** argv) OCT_output(&ZIUTOct); printf("\n"); #endif + fclose(fp); exit(EXIT_FAILURE); } free(dIUT); diff --git a/test/test_ecdsa_keypair_ZZZ.c.in b/test/test_ecdsa_keypair_ZZZ.c.in index 0f07527..e1f3245 100644 --- a/test/test_ecdsa_keypair_ZZZ.c.in +++ b/test/test_ecdsa_keypair_ZZZ.c.in @@ -89,9 +89,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; d = (char*) malloc (l2); - if (d==NULL) + if (d==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // d binary value amcl_hex2bin(linePtr, d, l1); @@ -154,6 +155,7 @@ int main(int argc, char** argv) if (!rc) { printf("TEST ECDSA KEYPAIR FAILED LINE %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } free(d); diff --git a/test/test_ecdsa_sign_ZZZ.c.in b/test/test_ecdsa_sign_ZZZ.c.in index 6324b4a..6cb5b5f 100644 --- a/test/test_ecdsa_sign_ZZZ.c.in +++ b/test/test_ecdsa_sign_ZZZ.c.in @@ -121,9 +121,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; Msg = (char*) malloc (l2); - if (Msg==NULL) + if (Msg==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // Msg binary value amcl_hex2bin(linePtr, Msg, l1); @@ -144,9 +145,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; d = (char*) malloc (l2); - if (d==NULL) + if (d==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // d binary value amcl_hex2bin(linePtr, d, l1); @@ -197,9 +199,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; k = (char*) malloc (l2); - if (k==NULL) + if (k==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // k binary value amcl_hex2bin(linePtr, k, l1); @@ -220,9 +223,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; R = (char*) malloc (l2); - if (R==NULL) + if (R==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // R binary value amcl_hex2bin(linePtr, R, l1); @@ -243,9 +247,9 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; S = (char*) malloc (l2); - if (S==NULL) + if (S==NULL) { exit(EXIT_FAILURE); - + } // S binary value amcl_hex2bin(linePtr, S, l1); @@ -303,6 +307,7 @@ int main(int argc, char** argv) OCT_output(&S2Oct); printf("\n"); #endif + fclose(fp); exit(EXIT_FAILURE); } diff --git a/test/test_ecdsa_verify_ZZZ.c.in b/test/test_ecdsa_verify_ZZZ.c.in index f30be5e..0ec3829 100644 --- a/test/test_ecdsa_verify_ZZZ.c.in +++ b/test/test_ecdsa_verify_ZZZ.c.in @@ -114,9 +114,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; Msg = (char*) malloc (l2); - if (Msg==NULL) + if (Msg==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // Msg binary value amcl_hex2bin(linePtr, Msg, l1); @@ -167,9 +168,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; R = (char*) malloc (l2); - if (R==NULL) + if (R==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // R binary value amcl_hex2bin(linePtr, R, l1); @@ -190,9 +192,10 @@ int main(int argc, char** argv) l1 = strlen(linePtr)-1; l2 = l1/2; S = (char*) malloc (l2); - if (S==NULL) + if (S==NULL) { + fclose(fp); exit(EXIT_FAILURE); - + } // S binary value amcl_hex2bin(linePtr, S, l1); @@ -234,6 +237,7 @@ int main(int argc, char** argv) if ( pass && rc ) { printf("TEST ECDSA VERIFY FAILED LINE %d pass %d rc %d\n",i,pass,rc); + fclose(fp); exit(EXIT_FAILURE); } @@ -241,6 +245,7 @@ int main(int argc, char** argv) if ( !pass && !rc ) { printf("TEST ECDSA VERIFY FAILED LINE %d pass %d rc %d\n",i,pass,rc); + fclose(fp); exit(EXIT_FAILURE); } diff --git a/test/test_ecp2_arithmetics_ZZZ.c.in b/test/test_ecp2_arithmetics_ZZZ.c.in index 7832229..717c2cd 100644 --- a/test/test_ecp2_arithmetics_ZZZ.c.in +++ b/test/test_ecp2_arithmetics_ZZZ.c.in @@ -150,6 +150,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2[0],linePtr) || ECP2_ZZZ_isinf(&ecp2[0])) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_get(&FP2aux1,&FP2aux2,&ecp2[0]); @@ -158,6 +159,7 @@ int main(int argc, char** argv) if (!FP2_YYY_equals(&FP2aux1,&FP2aux2)) { printf("ERROR computing right hand side of equation ECP, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_toOctet(&OCTaux,&ecp2[0]); @@ -165,6 +167,7 @@ int main(int argc, char** argv) if(!ECP2_ZZZ_equals(&ECP2aux1,&ecp2[0])) { printf("ERROR converting ECP2_ZZZ to/from OCTET, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -175,6 +178,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2[1],linePtr) || ECP2_ZZZ_isinf(&ecp2[1])) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -185,6 +189,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2[2],linePtr) || ECP2_ZZZ_isinf(&ecp2[2])) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -195,6 +200,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2[3],linePtr) || ECP2_ZZZ_isinf(&ecp2[3])) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -205,6 +211,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2sum,linePtr)) { printf("ERROR reading test vector input ECP2_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_copy(&ECP2aux1,&ecp2[0]); @@ -216,6 +223,7 @@ int main(int argc, char** argv) if(!ECP2_ZZZ_equals(&ECP2aux1,&ecp2sum) || !ECP2_ZZZ_equals(&ECP2aux2,&ecp2sum)) { printf("ERROR adding two ECP2_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_copy(&ECP2aux1,&ecp2[0]); // testing associativity (P+Q)+R = P+(Q+R) @@ -229,6 +237,7 @@ int main(int argc, char** argv) if(!ECP2_ZZZ_equals(&ECP2aux1,&ECP2aux2)) { printf("ERROR testing associativity bewtween three ECP2_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -239,6 +248,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2neg,linePtr)) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_copy(&ECP2aux1,&ecp2[0]); @@ -247,6 +257,7 @@ int main(int argc, char** argv) if(!ECP2_ZZZ_equals(&ECP2aux1,&ecp2neg)) { printf("ERROR computing negative of ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -257,6 +268,7 @@ int main(int argc, char** argv) if(!read_ECP2_ZZZ(&ecp2sub,linePtr)) { printf("ERROR getting test vector input ECP2_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP2_ZZZ_copy(&ECP2aux1,&ecp2[0]); diff --git a/test/test_ecp4_arithmetics_ZZZ.c.in b/test/test_ecp4_arithmetics_ZZZ.c.in index 572ae81..ce9b470 100644 --- a/test/test_ecp4_arithmetics_ZZZ.c.in +++ b/test/test_ecp4_arithmetics_ZZZ.c.in @@ -153,6 +153,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp41,linePtr) || ECP4_ZZZ_isinf(&ecp41)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_get(&FP4aux1,&FP4aux2,&ecp41); @@ -161,6 +162,7 @@ int main(int argc, char** argv) if (!FP4_YYY_equals(&FP4aux1,&FP4aux2)) { printf("ERROR computing right hand side of equation ECP, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_toOctet(&OCTaux,&ecp41); @@ -169,6 +171,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp41)) { printf("ERROR converting ECP4_ZZZ to/from OCTET, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(ecp4frobs,&ecp41); @@ -185,6 +188,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp42,linePtr) || ECP4_ZZZ_isinf(&ecp42)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -195,6 +199,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4sum,linePtr)) { printf("ERROR reading test vector input ECP4_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(&ECP4aux1,&ecp41); @@ -208,6 +213,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4sum) || !ECP4_ZZZ_equals(&ECP4aux2,&ecp4sum)) { printf("ERROR adding two ECP4_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(&ECP4aux1,&ecp41); // testing associativity (P+Q)+R = P+(Q+R) @@ -221,6 +227,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ECP4aux2)) { printf("ERROR testing associativity bewtween three ECP4_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -239,6 +246,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4neg)) { printf("ERROR computing negative of ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -249,6 +257,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4sub,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(&ECP4aux1,&ecp41); @@ -257,6 +266,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4sub)) { printf("ERROR performing subtraction bewtween two ECP4_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -267,6 +277,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4dbl,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(&ECP4aux1,&ecp41); @@ -275,6 +286,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4dbl)) { printf("ERROR computing double of ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -294,6 +306,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4mul,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_copy(&ECP4aux1,&ecp41); @@ -302,6 +315,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4mul)) { printf("ERROR computing multiplication of ECP4_ZZZ by a scalar, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -316,6 +330,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&fp2fr,F+k)) { printf("ERROR computing %d-th frobenius constant, line %d\n",k+1,i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -332,6 +347,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ecp4frob,&ECP4aux1)) { printf("ERROR computing frobenius action (P^3), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -342,6 +358,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4mul8,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } @@ -351,6 +368,7 @@ int main(int argc, char** argv) if(!ECP4_ZZZ_equals(&ECP4aux1,&ecp4mul8)) { printf("ERROR computing linear combination of 8 ECP4_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -361,6 +379,7 @@ int main(int argc, char** argv) if(read_ECP4_ZZZ(&ecp4wrong,linePtr) || !ECP4_ZZZ_isinf(&ecp4wrong) || !ECP4_ZZZ_equals(&ecp4wrong,&inf)) { printf("ERROR identifying a wrong ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } if(ECP4_ZZZ_setx(&ECP4aux1,&ecp4wrong.x)) @@ -375,6 +394,7 @@ int main(int argc, char** argv) if(read_ECP4_ZZZ(&ecp4inf,linePtr) || !ECP4_ZZZ_isinf(&ecp4inf) || !ECP4_ZZZ_equals(&ecp4inf,&inf)) { printf("ERROR identifying infinite point ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -385,6 +405,7 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4set1,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP4_ZZZ_get(&FP4aux1,&FP4aux2,&ecp41); @@ -397,11 +418,13 @@ int main(int argc, char** argv) if(!read_ECP4_ZZZ(&ecp4set2,linePtr)) { printf("ERROR getting test vector input ECP4_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } if((!ECP4_ZZZ_equals(&ECP4aux1,&ecp4set2)) && (!ECP4_ZZZ_equals(&ECP4aux1,&ecp4set1))) { printf("ERROR computing ECP4_ZZZ from coordinate x and with y set2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_ecp8_arithmetics_ZZZ.c.in b/test/test_ecp8_arithmetics_ZZZ.c.in index f974406..43640fd 100644 --- a/test/test_ecp8_arithmetics_ZZZ.c.in +++ b/test/test_ecp8_arithmetics_ZZZ.c.in @@ -161,6 +161,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp81,linePtr) || ECP8_ZZZ_isinf(&ecp81)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_get(&FP8aux1,&FP8aux2,&ecp81); @@ -169,6 +170,7 @@ int main(int argc, char** argv) if (!FP8_YYY_equals(&FP8aux1,&FP8aux2)) { printf("ERROR computing right hand side of equation ECP, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_toOctet(&OCTaux,&ecp81); @@ -176,6 +178,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp81)) { printf("ERROR converting ECP8_ZZZ to/from OCTET, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(ecp8frobs,&ecp81); @@ -192,6 +195,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp82,linePtr) || ECP8_ZZZ_isinf(&ecp82)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -202,6 +206,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8sum,linePtr)) { printf("ERROR reading test vector input ECP8_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); @@ -215,6 +220,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8sum) || !ECP8_ZZZ_equals(&ECP8aux2,&ecp8sum)) { printf("ERROR adding two ECP8_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); // testing associativity (P+Q)+R = P+(Q+R) @@ -228,6 +234,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ECP8aux2)) { printf("ERROR testing associativity bewtween three ECP8_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -238,6 +245,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8neg,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); @@ -246,6 +254,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8neg)) { printf("ERROR computing negative of ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -256,6 +265,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8sub,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); @@ -264,6 +274,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8sub)) { printf("ERROR performing subtraction bewtween two ECP8_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -274,6 +285,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8dbl,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); @@ -282,6 +294,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8dbl)) { printf("ERROR computing double of ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -301,6 +314,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8mul,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_copy(&ECP8aux1,&ecp81); @@ -309,6 +323,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8mul)) { printf("ERROR computing multiplication of ECP8_ZZZ by a scalar, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -323,6 +338,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&fp2fr,F+k)) { printf("ERROR computing %d-th frobenius constant, line %d\n",k+1,i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -339,6 +355,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ecp8frob,&ECP8aux1)) { printf("ERROR computing frobenius action (P^3), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -349,6 +366,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8mul16,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } @@ -358,6 +376,7 @@ int main(int argc, char** argv) if(!ECP8_ZZZ_equals(&ECP8aux1,&ecp8mul16)) { printf("ERROR computing linear combination of 8 ECP8_ZZZs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -368,6 +387,7 @@ int main(int argc, char** argv) if(read_ECP8_ZZZ(&ecp8wrong,linePtr) || !ECP8_ZZZ_isinf(&ecp8wrong) || !ECP8_ZZZ_equals(&ecp8wrong,&inf)) { printf("ERROR identifying a wrong ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -378,6 +398,7 @@ int main(int argc, char** argv) if(read_ECP8_ZZZ(&ecp8inf,linePtr) || !ECP8_ZZZ_isinf(&ecp8inf) || !ECP8_ZZZ_equals(&ecp8inf,&inf)) { printf("ERROR identifying infinite point ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -388,6 +409,7 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8set1,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP8_ZZZ_get(&FP8aux1,&FP8aux2,&ecp81); @@ -400,11 +422,13 @@ int main(int argc, char** argv) if(!read_ECP8_ZZZ(&ecp8set2,linePtr)) { printf("ERROR getting test vector input ECP8_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } if((!ECP8_ZZZ_equals(&ECP8aux1,&ecp8set2)) && (!ECP8_ZZZ_equals(&ECP8aux1,&ecp8set1))) { printf("ERROR computing ECP8_ZZZ from coordinate x and with y set2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_ecp_arithmetics_ZZZ.c.in b/test/test_ecp_arithmetics_ZZZ.c.in index b877474..bbdbe11 100644 --- a/test/test_ecp_arithmetics_ZZZ.c.in +++ b/test/test_ecp_arithmetics_ZZZ.c.in @@ -153,6 +153,7 @@ int main(int argc, char** argv) if(!read_ECP_ZZZ(&ecp1,linePtr) || ECP_ZZZ_isinf(&ecp1)) { printf("ERROR getting test vector input ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } #if CURVETYPE_ZZZ!=MONTGOMERY @@ -174,6 +175,7 @@ int main(int argc, char** argv) if(!ECP_ZZZ_equals(&ECPaux1,&ecp1)) // test octet conversion { printf("ERROR converting ECP_ZZZ to/from OCTET, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -264,6 +266,7 @@ int main(int argc, char** argv) if(!read_ECP_ZZZ(&ecpdbl,linePtr) || ECP_ZZZ_isinf(&ecpdbl)) { printf("ERROR getting test vector input ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP_ZZZ_copy(&ECPaux1,&ecp1); @@ -274,6 +277,7 @@ int main(int argc, char** argv) ECP_ZZZ_outputxyz(&ECPaux1); ECP_ZZZ_outputxyz(&ecpdbl); printf("ERROR computing double of ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -285,6 +289,7 @@ int main(int argc, char** argv) if(!read_ECP_ZZZ(&ecpmul3,linePtr) || ECP_ZZZ_isinf(&ecpmul3)) { printf("ERROR getting test vector input ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } BIG_XXX_one(BIGaux1); @@ -296,6 +301,7 @@ int main(int argc, char** argv) if(!ECP_ZZZ_equals(&ECPaux1,&ecpmul3)) { printf("ERROR computing multiplication of ECP_ZZZ by 3, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP_ZZZ_copy(&ECPaux1,&ecpdbl); @@ -303,6 +309,7 @@ int main(int argc, char** argv) if(!ECP_ZZZ_equals(&ECPaux1,&ecpmul3)) { printf("ERROR computing multiplication of ECP_ZZZ by 3, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -320,6 +327,7 @@ int main(int argc, char** argv) if(!read_ECP_ZZZ(&ecpmul,linePtr)) { printf("ERROR getting test vector input ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } ECP_ZZZ_copy(&ECPaux1,&ecp1); @@ -331,6 +339,7 @@ int main(int argc, char** argv) ECP_ZZZ_outputxyz(&ECPaux1); ECP_ZZZ_outputxyz(&ecpmul); printf("ERROR computing multiplication of ECP_ZZZ by a scalar, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -386,6 +395,7 @@ int main(int argc, char** argv) if(read_ECP_ZZZ(&ecpwrong,linePtr) || !ECP_ZZZ_isinf(&ecpwrong) || !ECP_ZZZ_equals(&ecpwrong,&inf)) { printf("ERROR identifying wrong ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -396,6 +406,7 @@ int main(int argc, char** argv) if(read_ECP_ZZZ(&ecpinf,linePtr) || !ECP_ZZZ_isinf(&ecpinf) || !ECP_ZZZ_equals(&ecpinf,&inf)) { printf("ERROR identifying infinite point ECP_ZZZ, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_fp2_arithmetics_YYY.c.in b/test/test_fp2_arithmetics_YYY.c.in index df9662d..e0d646b 100644 --- a/test/test_fp2_arithmetics_YYY.c.in +++ b/test/test_fp2_arithmetics_YYY.c.in @@ -167,18 +167,21 @@ int main(int argc, char** argv) if(FP2_YYY_equals(&FP2aux1,&FP2_1) != 0) { printf("ERROR in conditional copy of FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } FP2_YYY_cmove(&FP2aux1,&FP2_1,1); if(FP2_YYY_equals(&FP2aux1,&FP2_1) != 1) { printf("ERROR in conditional copy of FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } FP2_YYY_from_FPs(&FP2aux1,&FP2_1.a,&FP2_1.b); if(FP2_YYY_equals(&FP2aux1,&FP2_1) != 1) { printf("ERROR in generating FP_YYY from two FPs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } FP_YYY_redc(BIGaux1,&FP2_1.a); @@ -194,6 +197,7 @@ int main(int argc, char** argv) FP2_YYY_output(&FP2_1); printf("\n"); printf("ERROR in generating FP_YYY from two BIGs, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } FP2_YYY_from_FP(&FP2aux1,&FP2_1.a); @@ -202,6 +206,7 @@ int main(int argc, char** argv) if(FP2_YYY_equals(&FP2aux1,&FP2aux2) != 1) { printf("ERROR in generating FP_YYY from one FP, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } FP_YYY_redc(BIGaux1,&FP2_1.a); @@ -211,6 +216,7 @@ int main(int argc, char** argv) if(FP2_YYY_equals(&FP2aux1,&FP2aux2) != 1) { printf("ERROR in generating FP_YYY from one BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -242,6 +248,7 @@ int main(int argc, char** argv) printf("\nExp: "); FP2_YYY_output(&FP2add); printf("ERROR adding two FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test associativity (P+Q)+R = P+(Q+R) @@ -256,6 +263,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2aux2)) { printf("ERROR testing associativity between three FP2s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -276,6 +284,7 @@ int main(int argc, char** argv) printf("\nExp: "); FP2_YYY_output(&FP2neg); printf("ERROR in computing negative of FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -291,6 +300,7 @@ int main(int argc, char** argv) if(FP2_YYY_equals(&FP2aux1,&FP2sub) == 0) { printf("ERROR subtraction between two FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -305,6 +315,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2conj)) { printf("ERROR computing conjugate of FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -326,6 +337,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2pmul)) { printf("ERROR in multiplication by BIG, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -353,6 +365,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2imul)) { printf("ERROR in multiplication by small integer, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -374,6 +387,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2_1) && !FP2_YYY_equals(&FP2aux2,&FP2_1)) { printf("ERROR square/square root consistency FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -387,6 +401,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2mul)) { printf("ERROR in multiplication between two FP2s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -401,6 +416,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2inv)) { printf("ERROR in computing inverse of FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -414,6 +430,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2div2)) { printf("ERROR in computing division FP_YYY by 2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -428,6 +445,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2_YYY_mulip)) { printf("ERROR in computing multiplication of FP_YYY by (1+sqrt(-1)), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -442,6 +460,7 @@ int main(int argc, char** argv) if(!FP2_YYY_equals(&FP2aux1,&FP2_divip)) { printf("ERROR in computing division of FP_YYY by (1+sqrt(-1)), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_fp4_arithmetics_YYY.c.in b/test/test_fp4_arithmetics_YYY.c.in index 8c8fe69..9de820a 100644 --- a/test/test_fp4_arithmetics_YYY.c.in +++ b/test/test_fp4_arithmetics_YYY.c.in @@ -192,6 +192,7 @@ int main(int argc, char** argv) if(FP4_YYY_equals(&FP4aux1,&FP4aux2) || !FP4_YYY_isunity(&FP4aux1) || FP4_YYY_isunity(&FP4aux2) || FP4_YYY_iszilch(&FP4aux1) || !FP4_YYY_isreal(&FP4aux1)) { printf("ERROR comparing FP4s or setting FP4 to unity FP\n"); + exit(EXIT_FAILURE); } @@ -217,6 +218,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4_1)) { printf("ERROR in generating FP4 from two FP2s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test FP4_from_FP2 @@ -226,6 +228,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4aux2)) { printf("ERROR in generating FP4 from one FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test FP4_from_FP2H @@ -235,6 +238,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4aux2)) { printf("ERROR in generating \"complex\" FP4 from one FP2 , line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -288,6 +292,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4add) || !FP4_YYY_equals(&FP4aux2,&FP4add)) { printf("ERROR adding two FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test associativity (P+Q)+R = P+(Q+R) @@ -304,6 +309,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4aux2)) { printf("ERROR testing associativity between three FP4s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -318,6 +324,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4neg)) { printf("ERROR in computing negative of FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -333,6 +340,7 @@ int main(int argc, char** argv) if(FP4_YYY_equals(&FP4aux1,&FP4sub) == 0) { printf("ERROR subtraction between two FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -347,6 +355,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4conj)) { printf("ERROR computing conjugate of FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -361,6 +370,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4nconj)) { printf("ERROR computing negative conjugate of FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -381,6 +391,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4pmul)) { printf("ERROR in multiplication by FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -395,6 +406,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4imul)) { printf("ERROR in multiplication by small integer, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -409,6 +421,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4sqr)) { printf("ERROR in squaring FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -422,6 +435,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4mul)) { printf("ERROR in multiplication between two FP4s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -436,6 +450,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4inv)) { printf("ERROR in computing inverse of FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -450,6 +465,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4mulj)) { printf("ERROR in multiplication of an FP4 instance by sqrt(1+sqrt(-1)), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -476,6 +492,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4pow)) { printf("ERROR in raising FP4 by BIG power, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -489,6 +506,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4_xtrA)) { printf("ERROR in testing the XTR addition function r=w*x-conj(x)*y+z, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -502,6 +520,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4_xtrD)) { printf("ERROR in testing the XTR doubling function r=x^2-2*conj(x), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -515,6 +534,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4_xtrpow)) { printf("ERROR computing FP4 trace of an FP12 raised to the power of a BIG number, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -529,6 +549,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4_xtrpow2)) { printf("ERROR computing FP4 trace of an FP12 raised to the power of a BIG number (Double), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -541,6 +562,7 @@ int main(int argc, char** argv) if(!FP4_YYY_equals(&FP4aux1,&FP4div2)) { printf("ERROR dividing FP4 by sqrt(sqrt(1+sqrt(-1)))/2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_fp8_arithmetics_YYY.c.in b/test/test_fp8_arithmetics_YYY.c.in index 58ddb06..b8dfde6 100644 --- a/test/test_fp8_arithmetics_YYY.c.in +++ b/test/test_fp8_arithmetics_YYY.c.in @@ -267,6 +267,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8_1)) { printf("ERROR in generating FP8 from two FP4s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test FP8_from_FP4 @@ -276,6 +277,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8aux2)) { printf("ERROR in generating FP8 from one FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test FP8_from_FP4 @@ -285,6 +287,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8aux2)) { printf("ERROR in generating FP8 from one FP4 as high part, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -310,6 +313,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8add) || !FP8_YYY_equals(&FP8aux2,&FP8add)) { printf("ERROR adding two FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } // test associativity (P+Q)+R = P+(Q+R) @@ -326,6 +330,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8aux2)) { printf("ERROR testing associativity between three FP8s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -340,6 +345,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8neg)) { printf("ERROR in computing negative of FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -355,6 +361,7 @@ int main(int argc, char** argv) if(FP8_YYY_equals(&FP8aux1,&FP8sub) == 0) { printf("ERROR subtraction between two FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -369,6 +376,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8conj)) { printf("ERROR computing conjugate of FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -383,6 +391,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8nconj)) { printf("ERROR computing negative conjugate of FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -418,6 +427,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8pmul)) { printf("ERROR in multiplication by FP4, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -431,6 +441,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8qmul)) { printf("ERROR in multiplication by FP2, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -444,6 +455,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8tmul)) { printf("ERROR in multiplication by FP, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -458,6 +470,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8imul)) { printf("ERROR in multiplication by small integer, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -471,6 +484,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8sqr)) { printf("ERROR in squaring FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -484,6 +498,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8mul)) { printf("ERROR in multiplication between two FP8s, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -497,6 +512,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8inv)) { printf("ERROR in computing inverse of FP8, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -511,6 +527,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8mulj)) { printf("ERROR in multiplication of an FP8 instance by sqrt(sqrt(1+sqrt(-1))), line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } @@ -537,6 +554,7 @@ int main(int argc, char** argv) if(!FP8_YYY_equals(&FP8aux1,&FP8pow)) { printf("ERROR in raising FP8 by BIG power, line %d\n",i); + fclose(fp); exit(EXIT_FAILURE); } } diff --git a/test/test_octet_consistency.c b/test/test_octet_consistency.c index d45f3b2..19ad0d4 100644 --- a/test/test_octet_consistency.c +++ b/test/test_octet_consistency.c @@ -39,7 +39,7 @@ int main() char raw[256], bytes[len+1], bytes64[len64+1], bytesHex[lenHex+1], v[len], w[len]; octet V= {0,sizeof(v),v}, W= {0,sizeof(w),w}; csprng rng; - + char originByteHex[lenHex+1]; /* Fake random source */ RAND_clean(&rng); for (i=0; i<256; i++) raw[i]=(char)i; @@ -103,10 +103,15 @@ int main() OCT_rand(&W,&rng,len); OCT_copy(&V,&W); OCT_toHex(&W,bytesHex); + OCT_fromHex(&W,bytesHex); + // originByteHex + OCT_toHex(&W,originByteHex); + printf("Bucket %d\n", strcmp(bytesHex, originByteHex)); + if(!OCT_comp(&V,&W)) { - printf("ERROR converting to and from Hex OCTET\n"); + printf("ERROR converting to and from Hex OCTET : %s %s\n", bytesHex, originByteHex); exit(EXIT_FAILURE); } } diff --git a/test/test_utils.c b/test/test_utils.c index 9693fc2..20f4d92 100644 --- a/test/test_utils.c +++ b/test/test_utils.c @@ -92,11 +92,11 @@ int main() for (i=0; i<nIter; i++) { - amcl_hex2bin(V2[i], bintemp, 64); - amcl_bin2hex(bintemp, temp, 32); - if (strncmp(V2[i], temp, 64)) + amcl_hex2bin(V2[i], bintemp, 32); + amcl_bin2hex(bintemp, temp, sizeof(bintemp), sizeof(temp)); + if (strncmp(V2[i], temp, 32)) { - printf("FAILURE conversion hex/bin\n"); + printf("FAILURE conversion hex/bin %s %s\n", V2[i], temp); return 1; } }
