You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by km...@apache.org on 2019/06/04 11:33:58 UTC

[incubator-milagro-crypto-c] 01/01: fix multi curve smoke test

This is an automated email from the ASF dual-hosted git repository.

kmccusker pushed a commit to branch fix-testall
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-c.git

commit 66788eb368a36c0af06f1b6353efcb40b21b03cd
Author: Kealan McCusker <ke...@qredo.com>
AuthorDate: Tue Jun 4 12:33:37 2019 +0100

    fix multi curve smoke test
---
 examples/testall.c                     | 72 +++++++++++++++++-----------------
 buildMulti.sh => scripts/buildMulti.sh |  4 +-
 2 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/examples/testall.c b/examples/testall.c
index ec961db..44546aa 100644
--- a/examples/testall.c
+++ b/examples/testall.c
@@ -17,7 +17,7 @@ specific language governing permissions and limitations
 under the License.
 */
 
-/* test driver and function exerciser for ECDH/ECIES/ECDSA API Functions */
+/* An example of using multiple curves in an executible */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -43,7 +43,7 @@ int ecdh_ED25519(csprng *RNG)
     // Note salt must be big enough to include an appended word
     // Note ECIES ciphertext C must be big enough to include at least 1 appended block
     // Recall EFS_ED25519 is field size in bytes. So EFS_ED25519=32 for 256-bit curve
-    char s0[2*EGS_ED25519],s1[EGS_ED25519],w0[2*EFS_ED25519+1],w1[2*EFS_ED25519+1],z0[EFS_ED25519],z1[EFS_ED25519],key[EAS_ED25519],salt[40],pw[40];
+    char s0[2*EGS_ED25519],s1[EGS_ED25519],w0[2*EFS_ED25519+1],w1[2*EFS_ED25519+1],z0[EFS_ED25519],z1[EFS_ED25519],key[AESKEY_ED25519],salt[40],pw[40];
     octet S0= {0,sizeof(s0),s0};
     octet S1= {0,sizeof(s1),s1};
     octet W0= {0,sizeof(w0),w0};
@@ -64,7 +64,7 @@ int ecdh_ED25519(csprng *RNG)
 
     // private key S0 of size EGS_ED25519 bytes derived from Password and Salt
 
-    PBKDF2(HASH_TYPE_ECC_ED25519,&PW,&SALT,1000,EGS_ED25519,&S0);
+    PBKDF2(HASH_TYPE_ED25519,&PW,&SALT,1000,EGS_ED25519,&S0);
 
     printf("Alices private key= 0x");
     OCT_output(&S0);
@@ -106,7 +106,7 @@ int ecdh_ED25519(csprng *RNG)
         return 0;
     }
 
-    KDF2(HASH_TYPE_ECC_ED25519,&Z0,NULL,EAS_ED25519,&KEY);
+    KDF2(HASH_TYPE_ED25519,&Z0,NULL,AESKEY_ED25519,&KEY);
 
     printf("Alice's DH Key=  0x");
     OCT_output(&KEY);
@@ -140,7 +140,7 @@ int ecdh_ED25519(csprng *RNG)
     M.len=17;
     for (i=0; i<=16; i++) M.val[i]=i;
 
-    ECP_ED25519_ECIES_ENCRYPT(HASH_TYPE_ECC_ED25519,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
+    ECP_ED25519_ECIES_ENCRYPT(HASH_TYPE_ED25519,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
 
     printf("Ciphertext= \n");
     printf("V= 0x");
@@ -150,7 +150,7 @@ int ecdh_ED25519(csprng *RNG)
     printf("T= 0x");
     OCT_output(&T);
 
-    if (!ECP_ED25519_ECIES_DECRYPT(HASH_TYPE_ECC_ED25519,&P1,&P2,&V,&C,&T,&S1,&M))
+    if (!ECP_ED25519_ECIES_DECRYPT(HASH_TYPE_ED25519,&P1,&P2,&V,&C,&T,&S1,&M))
     {
         printf("*** ECIES Decryption Failed\n");
         return 0;
@@ -163,7 +163,7 @@ int ecdh_ED25519(csprng *RNG)
 
     printf("Testing ECDSA\n");
 
-    if (ECP_ED25519_SP_DSA(HASH_TYPE_ECC_ED25519,RNG,NULL,&S0,&M,&CS,&DS)!=0)
+    if (ECP_ED25519_SP_DSA(HASH_TYPE_ED25519,RNG,NULL,&S0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Signature Failed\n");
         return 0;
@@ -174,7 +174,7 @@ int ecdh_ED25519(csprng *RNG)
     printf("Signature D = 0x");
     OCT_output(&DS);
 
-    if (ECP_ED25519_VP_DSA(HASH_TYPE_ECC_ED25519,&W0,&M,&CS,&DS)!=0)
+    if (ECP_ED25519_VP_DSA(HASH_TYPE_ED25519,&W0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Verification Failed\n");
         return 0;
@@ -199,7 +199,7 @@ int ecdh_NIST256(csprng *RNG)
     // Note salt must be big enough to include an appended word
     // Note ECIES ciphertext C must be big enough to include at least 1 appended block
     // Recall EFS_NIST256 is field size in bytes. So EFS_NIST256=32 for 256-bit curve
-    char s0[2*EGS_NIST256],s1[EGS_NIST256],w0[2*EFS_NIST256+1],w1[2*EFS_NIST256+1],z0[EFS_NIST256],z1[EFS_NIST256],key[EAS_NIST256],salt[40],pw[40];
+    char s0[2*EGS_NIST256],s1[EGS_NIST256],w0[2*EFS_NIST256+1],w1[2*EFS_NIST256+1],z0[EFS_NIST256],z1[EFS_NIST256],key[AESKEY_NIST256],salt[40],pw[40];
     octet S0= {0,sizeof(s0),s0};
     octet S1= {0,sizeof(s1),s1};
     octet W0= {0,sizeof(w0),w0};
@@ -220,7 +220,7 @@ int ecdh_NIST256(csprng *RNG)
 
     // private key S0 of size EGS_NIST256 bytes derived from Password and Salt
 
-    PBKDF2(HASH_TYPE_ECC_NIST256,&PW,&SALT,1000,EGS_NIST256,&S0);
+    PBKDF2(HASH_TYPE_NIST256,&PW,&SALT,1000,EGS_NIST256,&S0);
 
     printf("Alices private key= 0x");
     OCT_output(&S0);
@@ -262,7 +262,7 @@ int ecdh_NIST256(csprng *RNG)
         return 0;
     }
 
-    KDF2(HASH_TYPE_ECC_NIST256,&Z0,NULL,EAS_NIST256,&KEY);
+    KDF2(HASH_TYPE_NIST256,&Z0,NULL,AESKEY_NIST256,&KEY);
 
     printf("Alice's DH Key=  0x");
     OCT_output(&KEY);
@@ -296,7 +296,7 @@ int ecdh_NIST256(csprng *RNG)
     M.len=17;
     for (i=0; i<=16; i++) M.val[i]=i;
 
-    ECP_NIST256_ECIES_ENCRYPT(HASH_TYPE_ECC_NIST256,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
+    ECP_NIST256_ECIES_ENCRYPT(HASH_TYPE_NIST256,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
 
     printf("Ciphertext= \n");
     printf("V= 0x");
@@ -306,7 +306,7 @@ int ecdh_NIST256(csprng *RNG)
     printf("T= 0x");
     OCT_output(&T);
 
-    if (!ECP_NIST256_ECIES_DECRYPT(HASH_TYPE_ECC_NIST256,&P1,&P2,&V,&C,&T,&S1,&M))
+    if (!ECP_NIST256_ECIES_DECRYPT(HASH_TYPE_NIST256,&P1,&P2,&V,&C,&T,&S1,&M))
     {
         printf("*** ECIES Decryption Failed\n");
         return 0;
@@ -319,7 +319,7 @@ int ecdh_NIST256(csprng *RNG)
 
     printf("Testing ECDSA\n");
 
-    if (ECP_NIST256_SP_DSA(HASH_TYPE_ECC_NIST256,RNG,NULL,&S0,&M,&CS,&DS)!=0)
+    if (ECP_NIST256_SP_DSA(HASH_TYPE_NIST256,RNG,NULL,&S0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Signature Failed\n");
         return 0;
@@ -330,7 +330,7 @@ int ecdh_NIST256(csprng *RNG)
     printf("Signature D = 0x");
     OCT_output(&DS);
 
-    if (ECP_NIST256_VP_DSA(HASH_TYPE_ECC_NIST256,&W0,&M,&CS,&DS)!=0)
+    if (ECP_NIST256_VP_DSA(HASH_TYPE_NIST256,&W0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Verification Failed\n");
         return 0;
@@ -354,7 +354,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
     // Note salt must be big enough to include an appended word
     // Note ECIES ciphertext C must be big enough to include at least 1 appended block
     // Recall EFS_GOLDILOCKS is field size in bytes. So EFS_GOLDILOCKS=32 for 256-bit curve
-    char s0[2*EGS_GOLDILOCKS],s1[EGS_GOLDILOCKS],w0[2*EFS_GOLDILOCKS+1],w1[2*EFS_GOLDILOCKS+1],z0[EFS_GOLDILOCKS],z1[EFS_GOLDILOCKS],key[EAS_GOLDILOCKS],salt[40],pw[40];
+    char s0[2*EGS_GOLDILOCKS],s1[EGS_GOLDILOCKS],w0[2*EFS_GOLDILOCKS+1],w1[2*EFS_GOLDILOCKS+1],z0[EFS_GOLDILOCKS],z1[EFS_GOLDILOCKS],key[AESKEY_GOLDILOCKS],salt[40],pw[40];
     octet S0= {0,sizeof(s0),s0};
     octet S1= {0,sizeof(s1),s1};
     octet W0= {0,sizeof(w0),w0};
@@ -375,7 +375,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
 
     // private key S0 of size EGS_GOLDILOCKS bytes derived from Password and Salt
 
-    PBKDF2(HASH_TYPE_ECC_GOLDILOCKS,&PW,&SALT,1000,EGS_GOLDILOCKS,&S0);
+    PBKDF2(HASH_TYPE_GOLDILOCKS,&PW,&SALT,1000,EGS_GOLDILOCKS,&S0);
 
     printf("Alices private key= 0x");
     OCT_output(&S0);
@@ -417,7 +417,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
         return 0;
     }
 
-    KDF2(HASH_TYPE_ECC_GOLDILOCKS,&Z0,NULL,EAS_GOLDILOCKS,&KEY);
+    KDF2(HASH_TYPE_GOLDILOCKS,&Z0,NULL,AESKEY_GOLDILOCKS,&KEY);
 
     printf("Alice's DH Key=  0x");
     OCT_output(&KEY);
@@ -451,7 +451,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
     M.len=17;
     for (i=0; i<=16; i++) M.val[i]=i;
 
-    ECP_GOLDILOCKS_ECIES_ENCRYPT(HASH_TYPE_ECC_GOLDILOCKS,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
+    ECP_GOLDILOCKS_ECIES_ENCRYPT(HASH_TYPE_GOLDILOCKS,&P1,&P2,RNG,&W1,&M,12,&V,&C,&T);
 
     printf("Ciphertext= \n");
     printf("V= 0x");
@@ -461,7 +461,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
     printf("T= 0x");
     OCT_output(&T);
 
-    if (!ECP_GOLDILOCKS_ECIES_DECRYPT(HASH_TYPE_ECC_GOLDILOCKS,&P1,&P2,&V,&C,&T,&S1,&M))
+    if (!ECP_GOLDILOCKS_ECIES_DECRYPT(HASH_TYPE_GOLDILOCKS,&P1,&P2,&V,&C,&T,&S1,&M))
     {
         printf("*** ECIES Decryption Failed\n");
         return 0;
@@ -474,7 +474,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
 
     printf("Testing ECDSA\n");
 
-    if (ECP_GOLDILOCKS_SP_DSA(HASH_TYPE_ECC_GOLDILOCKS,RNG,NULL,&S0,&M,&CS,&DS)!=0)
+    if (ECP_GOLDILOCKS_SP_DSA(HASH_TYPE_GOLDILOCKS,RNG,NULL,&S0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Signature Failed\n");
         return 0;
@@ -485,7 +485,7 @@ int ecdh_GOLDILOCKS(csprng *RNG)
     printf("Signature D = 0x");
     OCT_output(&DS);
 
-    if (ECP_GOLDILOCKS_VP_DSA(HASH_TYPE_ECC_GOLDILOCKS,&W0,&M,&CS,&DS)!=0)
+    if (ECP_GOLDILOCKS_VP_DSA(HASH_TYPE_GOLDILOCKS,&W0,&M,&CS,&DS)!=0)
     {
         printf("***ECDSA Verification Failed\n");
         return 0;
@@ -558,7 +558,7 @@ int mpin_BN254CX(csprng *RNG)
 
     // Create Client Identity
     OCT_jstring(&CLIENT_ID,"testUser@miracl.com");
-    HASH_ID(HASH_TYPE_MPIN_BN254CX,&CLIENT_ID,&HCID);  // Either Client or TA calculates Hash(ID) - you decide!
+    HASH_ID(HASH_TYPE_BN254CX,&CLIENT_ID,&HCID);  // Either Client or TA calculates Hash(ID) - you decide!
 
     printf("Client ID Hash= ");
     OCT_output(&HCID);
@@ -581,7 +581,7 @@ int mpin_BN254CX(csprng *RNG)
     // Client extracts PIN from secret to create Token
     pin=1234;
     printf("Client extracts PIN= %d\n",pin);
-    MPIN_BN254CX_EXTRACT_PIN(HASH_TYPE_MPIN_BN254CX,&CLIENT_ID,pin,&TOKEN);
+    MPIN_BN254CX_EXTRACT_PIN(HASH_TYPE_BN254CX,&CLIENT_ID,pin,&TOKEN);
     printf("Client Token= ");
     OCT_output(&TOKEN);
 
@@ -593,7 +593,7 @@ int mpin_BN254CX(csprng *RNG)
     // Client gets "Time Permit" from DTA
     printf("Client gets Time Permit\n");
 
-    MPIN_BN254CX_GET_CLIENT_PERMIT(HASH_TYPE_MPIN_BN254CX,date,&S,&HCID,&PERMIT);
+    MPIN_BN254CX_GET_CLIENT_PERMIT(HASH_TYPE_BN254CX,date,&S,&HCID,&PERMIT);
     printf("Time Permit= ");
     OCT_output(&PERMIT);
 
@@ -667,7 +667,7 @@ int mpin_BN254CX(csprng *RNG)
     printf("MPIN Single Pass\n");
     timeValue = MPIN_BN254CX_GET_TIME();
 
-    rtn=MPIN_BN254CX_CLIENT(HASH_TYPE_MPIN_BN254CX,date,&CLIENT_ID,RNG,&X,pin,&TOKEN,&SEC,pxID,pxCID,pPERMIT,NULL,timeValue,&Y);
+    rtn=MPIN_BN254CX_CLIENT(HASH_TYPE_BN254CX,date,&CLIENT_ID,RNG,&X,pin,&TOKEN,&SEC,pxID,pxCID,pPERMIT,NULL,timeValue,&Y);
 
     if (rtn != 0)
     {
@@ -680,16 +680,16 @@ int mpin_BN254CX(csprng *RNG)
 #endif
 
 
-    rtn=MPIN_BN254CX_SERVER(HASH_TYPE_MPIN_BN254CX,date,pHID,pHTID,&Y,&SST,pxID,pxCID,&SEC,pE,pF,pID,NULL,timeValue);
+    rtn=MPIN_BN254CX_SERVER(HASH_TYPE_BN254CX,date,pHID,pHTID,&Y,&SST,pxID,pxCID,&SEC,pE,pF,pID,NULL,timeValue);
 
 #ifdef FULL
-    HASH_ID(HASH_TYPE_MPIN_BN254CX,&CLIENT_ID,&HSID);  // new
+    HASH_ID(HASH_TYPE_BN254CX,&CLIENT_ID,&HSID);  // new
     MPIN_BN254CX_GET_G1_MULTIPLE(RNG,0,&W,prHID,&T);  // Also send T=w.ID to client, remember random w
 #endif
 
 #else // SINGLE_PASS
     printf("MPIN Multi Pass\n");
-    if (MPIN_BN254CX_CLIENT_1(HASH_TYPE_MPIN_BN254CX,date,&CLIENT_ID,RNG,&X,pin,&TOKEN,&SEC,pxID,pxCID,pPERMIT)!=0)
+    if (MPIN_BN254CX_CLIENT_1(HASH_TYPE_BN254CX,date,&CLIENT_ID,RNG,&X,pin,&TOKEN,&SEC,pxID,pxCID,pPERMIT)!=0)
     {
         printf("Error from Client side - First Pass\n");
         return 0;
@@ -698,18 +698,18 @@ int mpin_BN254CX(csprng *RNG)
     // Send U=x.ID to server, and recreate secret from token and pin
 
 #ifdef FULL
-    HASH_ID(HASH_TYPE_MPIN_BN254CX,&CLIENT_ID,&HCID);
+    HASH_ID(HASH_TYPE_BN254CX,&CLIENT_ID,&HCID);
     MPIN_BN254CX_GET_G1_MULTIPLE(RNG,1,&R,&HCID,&Z);  // Also Send Z=r.ID to Server, remember random r, DH component
 #endif
 
     // Server calculates H(ID) and H(ID)+H(T|H(ID)) (if time permits enabled), and maps them to points on the curve HID and HTID resp.
-    MPIN_BN254CX_SERVER_1(HASH_TYPE_MPIN_BN254CX,date,pID,pHID,pHTID);
+    MPIN_BN254CX_SERVER_1(HASH_TYPE_BN254CX,date,pID,pHID,pHTID);
 
     // Server generates Random number Y and sends it to Client
     MPIN_BN254CX_RANDOM_GENERATE(RNG,&Y);
 
 #ifdef FULL
-    HASH_ID(HASH_TYPE_MPIN_BN254CX,&CLIENT_ID,&HSID); //new
+    HASH_ID(HASH_TYPE_BN254CX,&CLIENT_ID,&HSID); //new
     MPIN_BN254CX_GET_G1_MULTIPLE(RNG,0,&W,prHID,&T);  // Also send T=w.ID to client, remember random w, DH component
 #endif
 
@@ -745,13 +745,13 @@ int mpin_BN254CX(csprng *RNG)
 
 #ifdef FULL
 
-    HASH_ALL(HASH_TYPE_MPIN_BN254CX,&HCID,pxID,pxCID,&SEC,&Y,&Z,&T,&H);  // new
-    MPIN_BN254CX_CLIENT_KEY(HASH_TYPE_MPIN_BN254CX,&G1,&G2,pin,&R,&X,&H,&T,&CK);      // new H
+    HASH_ALL(HASH_TYPE_BN254CX,&HCID,pxID,pxCID,&SEC,&Y,&Z,&T,&H);  // new
+    MPIN_BN254CX_CLIENT_KEY(HASH_TYPE_BN254CX,&G1,&G2,pin,&R,&X,&H,&T,&CK);      // new H
     printf("Client Key = ");
     OCT_output(&CK);
 
-    HASH_ALL(HASH_TYPE_MPIN_BN254CX,&HSID,pxID,pxCID,&SEC,&Y,&Z,&T,&H);
-    MPIN_BN254CX_SERVER_KEY(HASH_TYPE_MPIN_BN254CX,&Z,&SST,&W,&H,pHID,pxID,pxCID,&SK); // new H,pHID
+    HASH_ALL(HASH_TYPE_BN254CX,&HSID,pxID,pxCID,&SEC,&Y,&Z,&T,&H);
+    MPIN_BN254CX_SERVER_KEY(HASH_TYPE_BN254CX,&Z,&SST,&W,&H,pHID,pxID,pxCID,&SK); // new H,pHID
     printf("Server Key = ");
     OCT_output(&SK);
 #endif
diff --git a/buildMulti.sh b/scripts/buildMulti.sh
similarity index 90%
rename from buildMulti.sh
rename to scripts/buildMulti.sh
index cf359f8..3d6ab5b 100755
--- a/buildMulti.sh
+++ b/scripts/buildMulti.sh
@@ -4,9 +4,9 @@
 #
 # Build test with multiple curves and RSA security levels
 
-# @author Kealan McCusker <ke...@mirack.com>
+# @author Kealan McCusker <ke...@gmail.com>
 
-set -e
+# set -e
 
 # Build default - see config.mk
 make clean