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/20 13:04:14 UTC

[incubator-milagro-crypto-c] branch issue11 updated: updated bls smoke test

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

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


The following commit(s) were added to refs/heads/issue11 by this push:
     new 1b0b1f6  updated bls smoke test
1b0b1f6 is described below

commit 1b0b1f6a5dae2dcae4e0d82dcea864c02a0d16c0
Author: Kealan McCusker <ke...@gmail.com>
AuthorDate: Thu Jun 20 14:03:58 2019 +0100

    updated bls smoke test
---
 examples/testbls_ZZZ.c.in |  62 +++++++--------
 src/bls.c.in              |  12 +--
 src/bls192.c.in           |   8 +-
 src/bls256.c.in           |  10 +--
 test/test_bls_ZZZ.c.in    | 194 ++++++++++++++++++++++++++++++++++++++--------
 5 files changed, 209 insertions(+), 77 deletions(-)

diff --git a/examples/testbls_ZZZ.c.in b/examples/testbls_ZZZ.c.in
index 10fe65a..61a5b23 100644
--- a/examples/testbls_ZZZ.c.in
+++ b/examples/testbls_ZZZ.c.in
@@ -52,36 +52,36 @@ int bls(csprng *RNG)
     int rc;
 
     char sk1[BGS_ZZZ];
-    octet SK1 = {0,sizeof(sk1),sk1};    
+    octet SK1 = {0,sizeof(sk1),sk1};
     char pk1[G2LEN];
     octet PK1 = {0,sizeof(pk1),pk1};
     char sig1[BFS_ZZZ+1];
     octet SIG1 = {0,sizeof(sig1),sig1};
 
     char sk2[BGS_ZZZ];
-    octet SK2 = {0,sizeof(sk2),sk2};    
+    octet SK2 = {0,sizeof(sk2),sk2};
     char pk2[G2LEN];
     octet PK2 = {0,sizeof(pk2),pk2};
     char sig2[BFS_ZZZ+1];
     octet SIG2 = {0,sizeof(sig2),sig2};
 
     char sk3[BGS_ZZZ];
-    octet SK3 = {0,sizeof(sk3),sk3};    
+    octet SK3 = {0,sizeof(sk3),sk3};
     char pk3[G2LEN];
     octet PK3 = {0,sizeof(pk3),pk3};
     char sig3[BFS_ZZZ+1];
     octet SIG3 = {0,sizeof(sig3),sig3};
-    
+
     // Combined signature and public keys
     char pk[G2LEN];
-    octet PK = {0,sizeof(pk),pk};    
+    octet PK = {0,sizeof(pk),pk};
     char sig[BFS_ZZZ+1];
     octet SIG = {0,sizeof(sig),sig};
-    
+
     // Generate key pairs
     BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK1,&PK1);
     BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK2,&PK2);
-    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK3,&PK3);    
+    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK3,&PK3);
 
     printf("Private key SK1: ");
     OCT_output(&SK1);
@@ -100,7 +100,7 @@ int bls(csprng *RNG)
     // Sign the message
     BLS_ZZZ_SIGN(&SIG1,message,&SK1);
     BLS_ZZZ_SIGN(&SIG2,message,&SK2);
-    BLS_ZZZ_SIGN(&SIG3,message,&SK3);    
+    BLS_ZZZ_SIGN(&SIG3,message,&SK3);
 
     printf("SIG1: ");
     OCT_output(&SIG1);
@@ -119,10 +119,10 @@ int bls(csprng *RNG)
     else
     {
         printf("Error: Invalid Signature\n");
-	return 1;
+        return 1;
     }
 
-    // Verify signature    
+    // Verify signature
     rc=BLS_ZZZ_VERIFY(&SIG2,message,&PK2);
     if (rc==BLS_OK)
     {
@@ -131,10 +131,10 @@ int bls(csprng *RNG)
     else
     {
         printf("Error: Invalid Signature\n");
-	return 1;
+        return 1;
     }
 
-    // Verify signature    
+    // Verify signature
     rc=BLS_ZZZ_VERIFY(&SIG3,message,&PK3);
     if (rc==BLS_OK)
     {
@@ -143,22 +143,22 @@ int bls(csprng *RNG)
     else
     {
         printf("Error: Invalid Signature\n");
-	return 1;
+        return 1;
     }
-    
+
     // Add Public keys
     rc = BLS_ZZZ_ADD_G2(&PK1,&PK2,&PK);
     if (rc!=BLS_OK)
     {
         printf("ERROR BLS_ZZZ_ADD_G2 errorCode : %d\n", rc);
-	return 1;
+        return 1;
     }
     rc = BLS_ZZZ_ADD_G2(&PK,&PK3,&PK);
     if (rc!=BLS_OK)
     {
         printf("ERROR BLS_ZZZ_ADD_G2 errorCode : %d\n", rc);
-	return 1;
-    }        
+        return 1;
+    }
     printf("Public key PK: ");
     OCT_output(&PK);
     printf("\n");
@@ -168,15 +168,15 @@ int bls(csprng *RNG)
     if (rc!=BLS_OK)
     {
         printf("ERROR BLS_ZZZ_ADD_G1 errorCode : %d\n", rc);
-	return 1;
-    }        
+        return 1;
+    }
 
-    // Verify combined signature. This should fail.    
+    // Verify combined signature. This should fail.
     rc=BLS_ZZZ_VERIFY(&SIG,message,&PK);
     if (rc==BLS_OK)
     {
         printf("Success: Combined signature is valid\n");
-	return 1;	
+        return 1;
     }
     else
     {
@@ -187,12 +187,12 @@ int bls(csprng *RNG)
     if (rc!=BLS_OK)
     {
         printf("ERROR BLS_ZZZ_ADD_G1 errorCode : %d\n", rc);
-	return 1;
-    }        
+        return 1;
+    }
     printf("SIG: ");
     OCT_output(&SIG);
     printf("\n");
-    // Verify combined signature.    
+    // Verify combined signature.
     rc=BLS_ZZZ_VERIFY(&SIG,message,&PK);
     if (rc==BLS_OK)
     {
@@ -201,10 +201,10 @@ int bls(csprng *RNG)
     else
     {
         printf("Error: Combined signature is invalid\n");
-	return 1;
+        return 1;
     }
 
-    
+
     // change the message
     message[0]='Z';
     printf("message %s\n", message);
@@ -212,11 +212,11 @@ int bls(csprng *RNG)
     if (rc==BLS_OK)
     {
         printf("Success: Signature is valid\n");
-	return 1;
+        return 1;
     }
     else
     {
-        printf("Error: Invalid Signature\n");      
+        printf("Error: Invalid Signature\n");
     }
 
     // Change the signature
@@ -229,7 +229,7 @@ int bls(csprng *RNG)
     if (rc==BLS_OK)
     {
         printf("Success: Signature is valid\n");
-	return 1;
+        return 1;
     }
     else
     {
@@ -239,8 +239,8 @@ int bls(csprng *RNG)
     /* clear memory */
     OCT_clear(&SK1);
     OCT_clear(&SK2);
-    OCT_clear(&SK3);    
-    
+    OCT_clear(&SK3);
+
     return 0;
 }
 
diff --git a/src/bls.c.in b/src/bls.c.in
index 4328342..0d4c899 100644
--- a/src/bls.c.in
+++ b/src/bls.c.in
@@ -62,8 +62,8 @@ int BLS_ZZZ_SIGN(octet *SIG,char *m,octet *S)
     BLS_HASHIT(&D,m);
     BIG_XXX_fromBytes(s,S->val);
     PAIR_ZZZ_G1mul(&D,s);
-    // compress output 
-    ECP_ZZZ_toOctet(SIG,&D,true); 
+    // compress output
+    ECP_ZZZ_toOctet(SIG,&D,true);
     return BLS_OK;
 }
 
@@ -74,11 +74,11 @@ int BLS_ZZZ_VERIFY(octet *SIG,char *m,octet *W)
     ECP2_ZZZ G,PK;
     ECP_ZZZ D,HM;
     BLS_HASHIT(&HM,m);
-    
+
     if (!ECP_ZZZ_fromOctet(&D,SIG))
     {
         return BLS_INVALID_G1;
-    }      
+    }
 
     ECP2_ZZZ_generator(&G);
 
@@ -116,7 +116,7 @@ int BLS_ZZZ_ADD_G1(octet *R1,octet *R2,octet *R)
 
     ECP_ZZZ_add(&P,&T);
     ECP_ZZZ_toOctet(R,&P,true);
-    
+
     return BLS_OK;
 }
 
@@ -135,7 +135,7 @@ int BLS_ZZZ_ADD_G2(octet *W1,octet *W2,octet *W)
     {
         return BLS_INVALID_G2;
     }
-      
+
     ECP2_ZZZ_add(&Q,&T);
     ECP2_ZZZ_toOctet(W,&Q);
 
diff --git a/src/bls192.c.in b/src/bls192.c.in
index 226fe9d..79a1c20 100644
--- a/src/bls192.c.in
+++ b/src/bls192.c.in
@@ -77,7 +77,7 @@ int BLS_ZZZ_VERIFY(octet *SIG,char *m,octet *W)
     if (!ECP_ZZZ_fromOctet(&D,SIG))
     {
         return BLS_INVALID_G1;
-    }      
+    }
 
     ECP4_ZZZ_generator(&G);
 
@@ -94,7 +94,7 @@ int BLS_ZZZ_VERIFY(octet *SIG,char *m,octet *W)
     {
         return BLS_FAIL;
     }
-    return BLS_OK;	
+    return BLS_OK;
 }
 
 
@@ -116,7 +116,7 @@ int BLS_ZZZ_ADD_G1(octet *R1,octet *R2,octet *R)
 
     ECP_ZZZ_add(&P,&T);
     ECP_ZZZ_toOctet(R,&P,true);
-    
+
     return BLS_OK;
 }
 
@@ -135,7 +135,7 @@ int BLS_ZZZ_ADD_G2(octet *W1,octet *W2,octet *W)
     {
         return BLS_INVALID_G2;
     }
-      
+
     ECP4_ZZZ_add(&Q,&T);
     ECP4_ZZZ_toOctet(W,&Q);
 
diff --git a/src/bls256.c.in b/src/bls256.c.in
index 0aca536..19f7e43 100644
--- a/src/bls256.c.in
+++ b/src/bls256.c.in
@@ -77,9 +77,9 @@ int BLS_ZZZ_VERIFY(octet *SIG,char *m,octet *W)
     if (!ECP_ZZZ_fromOctet(&D,SIG))
     {
         return BLS_INVALID_G1;
-    }     
+    }
     ECP_ZZZ_neg(&D);
-    
+
     ECP8_ZZZ_generator(&G);
 
     if (!ECP8_ZZZ_fromOctet(&PK,W))
@@ -95,7 +95,7 @@ int BLS_ZZZ_VERIFY(octet *SIG,char *m,octet *W)
     {
         return BLS_FAIL;
     }
-    return BLS_OK;      
+    return BLS_OK;
 }
 
 /* R=R1+R2 in group G1 */
@@ -116,7 +116,7 @@ int BLS_ZZZ_ADD_G1(octet *R1,octet *R2,octet *R)
 
     ECP_ZZZ_add(&P,&T);
     ECP_ZZZ_toOctet(R,&P,true);
-    
+
     return BLS_OK;
 }
 
@@ -135,7 +135,7 @@ int BLS_ZZZ_ADD_G2(octet *W1,octet *W2,octet *W)
     {
         return BLS_INVALID_G2;
     }
-      
+
     ECP8_ZZZ_add(&Q,&T);
     ECP8_ZZZ_toOctet(W,&Q);
 
diff --git a/test/test_bls_ZZZ.c.in b/test/test_bls_ZZZ.c.in
index 47d4642..bd6f56a 100644
--- a/test/test_bls_ZZZ.c.in
+++ b/test/test_bls_ZZZ.c.in
@@ -16,7 +16,7 @@ specific language governing permissions and limitations
 under the License.
 */
 
-/* smoke test for BLS */
+// smoke test for BLS
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -41,30 +41,85 @@ under the License.
 #define G2LEN 16*BFS_ZZZ
 #endif
 
-static char message[]="This is a test message";
+static char message[]="test message";
 
 int bls(csprng *RNG)
 {
     int rc;
-    char s[BGS_ZZZ];
-    char w[G2LEN];
+
+    char sk1[BGS_ZZZ];
+    octet SK1 = {0,sizeof(sk1),sk1};
+    char pk1[G2LEN];
+    octet PK1 = {0,sizeof(pk1),pk1};
+    char sig1[BFS_ZZZ+1];
+    octet SIG1 = {0,sizeof(sig1),sig1};
+
+    char sk2[BGS_ZZZ];
+    octet SK2 = {0,sizeof(sk2),sk2};
+    char pk2[G2LEN];
+    octet PK2 = {0,sizeof(pk2),pk2};
+    char sig2[BFS_ZZZ+1];
+    octet SIG2 = {0,sizeof(sig2),sig2};
+
+    char sk3[BGS_ZZZ];
+    octet SK3 = {0,sizeof(sk3),sk3};
+    char pk3[G2LEN];
+    octet PK3 = {0,sizeof(pk3),pk3};
+    char sig3[BFS_ZZZ+1];
+    octet SIG3 = {0,sizeof(sig3),sig3};
+
+    // Combined signature and public keys
+    char pk[G2LEN];
+    octet PK = {0,sizeof(pk),pk};
     char sig[BFS_ZZZ+1];
-    octet S= {0,sizeof(s),s};
-    octet W= {0,sizeof(w),w};
-    octet SIG= {0,sizeof(sig),sig};
+    octet SIG = {0,sizeof(sig),sig};
 
-    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&S,&W);
+    // Generate key pairs
+    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK1,&PK1);
+    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK2,&PK2);
+    BLS_ZZZ_KEY_PAIR_GENERATE(RNG,&SK3,&PK3);
 
-    printf("Private key: 0x");
-    OCT_output(&S);
-    printf("Public key: 0x");
-    OCT_output(&W);
+    printf("Private key SK1: ");
+    OCT_output(&SK1);
+    printf("Public key PK1: ");
+    OCT_output(&PK1);
+    printf("Private key SK2: ");
+    OCT_output(&SK2);
+    printf("Public key PK2: ");
+    OCT_output(&PK2);
+    printf("Private key SK3: ");
+    OCT_output(&SK2);
+    printf("Public key PK3: ");
+    OCT_output(&PK2);
+    printf("\n");
 
-    BLS_ZZZ_SIGN(&SIG,message,&S);
-    printf("Signature: 0x");
-    OCT_output(&SIG);
+    // Sign the message
+    BLS_ZZZ_SIGN(&SIG1,message,&SK1);
+    BLS_ZZZ_SIGN(&SIG2,message,&SK2);
+    BLS_ZZZ_SIGN(&SIG3,message,&SK3);
+
+    printf("SIG1: ");
+    OCT_output(&SIG1);
+    printf("SIG2: ");
+    OCT_output(&SIG2);
+    printf("SIG3: ");
+    OCT_output(&SIG3);
+    printf("\n");
+
+    // Verify signature
+    rc=BLS_ZZZ_VERIFY(&SIG1,message,&PK1);
+    if (rc==BLS_OK)
+    {
+        printf("Test Passed valid Signature / message\n");
+    }
+    else
+    {
+        printf("Test Failed valid Signature / message\n");
+        return 1;
+    }
 
-    rc=BLS_ZZZ_VERIFY(&SIG,message,&W);
+    // Verify signature
+    rc=BLS_ZZZ_VERIFY(&SIG2,message,&PK2);
     if (rc==BLS_OK)
     {
         printf("Test Passed valid Signature / message\n");
@@ -75,37 +130,115 @@ int bls(csprng *RNG)
         return 1;
     }
 
+    // Verify signature
+    rc=BLS_ZZZ_VERIFY(&SIG3,message,&PK3);
+    if (rc==BLS_OK)
+    {
+        printf("Test Passed valid Signature / message\n");
+    }
+    else
+    {
+        printf("Test Failed valid Signature / message\n");
+        return 1;
+    }
+
+    // Add Public keys
+    rc = BLS_ZZZ_ADD_G2(&PK1,&PK2,&PK);
+    if (rc!=BLS_OK)
+    {
+        printf("ERROR BLS_ZZZ_ADD_G2 errorCode : %d\n", rc);
+        return 1;
+    }
+    rc = BLS_ZZZ_ADD_G2(&PK,&PK3,&PK);
+    if (rc!=BLS_OK)
+    {
+        printf("ERROR BLS_ZZZ_ADD_G2 errorCode : %d\n", rc);
+        return 1;
+    }
+    printf("Public key PK: ");
+    OCT_output(&PK);
+    printf("\n");
+
+    // Add signatures
+    rc = BLS_ZZZ_ADD_G1(&SIG1,&SIG2,&SIG);
+    if (rc!=BLS_OK)
+    {
+        printf("ERROR BLS_ZZZ_ADD_G1 errorCode : %d\n", rc);
+        return 1;
+    }
+
+    // Verify combined signature. This should fail.
+    rc=BLS_ZZZ_VERIFY(&SIG,message,&PK);
+    if (rc==BLS_FAIL)
+    {
+        printf("Test Passed invalid signature SIG = SIG1 + SIG2 \n");
+    }
+    else
+    {
+        printf("Test Failed invalid signature SIG = SIG1 + SIG2 \n");
+        return 1;
+    }
+
+    rc = BLS_ZZZ_ADD_G1(&SIG,&SIG3,&SIG);
+    if (rc!=BLS_OK)
+    {
+        printf("ERROR BLS_ZZZ_ADD_G1 errorCode : %d\n", rc);
+        return 1;
+    }
+    printf("SIG: ");
+    OCT_output(&SIG);
+    printf("\n");
+
+    // Verify combined signature.
+    rc=BLS_ZZZ_VERIFY(&SIG,message,&PK);
+    if (rc==BLS_OK)
+    {
+        printf("Test Passed valid Signature SIG = SIG1 + SIG2 + SIG3\n");
+    }
+    else
+    {
+        printf("Test Failed valid Signature SIG = SIG1 + SIG2 + SIG3\n");
+        return 1;
+    }
+
+
     // change the message
     message[0]='Z';
     printf("message %s\n", message);
-    rc=BLS_ZZZ_VERIFY(&SIG,message,&W);
-    if (rc!=BLS_OK)
+    rc=BLS_ZZZ_VERIFY(&SIG1,message,&PK1);
+    if (rc==BLS_FAIL)
     {
-        printf("Test Passed valid Signature / invalid message\n");
+        printf("Test Passed valid signature / invalid message\n");
     }
     else
     {
-        printf("Test Failed valid Signature / invalid message\n");
+        printf("Test Failed valid signature / invalid message\n");
         return 1;
     }
 
-    // Invalid signature
-    message[0]='T';
-    SIG.val[0]=5;
+
+    // Change the signature
+    message[0]='t';
+    SIG1.val[0]=5;
     printf("message %s\n", message);
-    printf("Signature: 0x");
-    OCT_output(&SIG);
-    rc=BLS_ZZZ_VERIFY(&SIG,message,&W);
-    if (rc!=BLS_OK)
+    printf("Sig1nature SIG1: ");
+    OCT_output(&SIG1);
+    rc=BLS_ZZZ_VERIFY(&SIG1,message,&PK1);
+    if (rc==BLS_FAIL)
     {
-        printf("Test Passed invalid Signature / valid message\n");
+        printf("Test Passed invalid signature / valid message\n");
     }
     else
     {
-        printf("Test Failed invalid Signature / valid message\n");
+        printf("Test Failed invalid signature / valid message\n");
         return 1;
     }
 
+    /* clear memory */
+    OCT_clear(&SK1);
+    OCT_clear(&SK2);
+    OCT_clear(&SK3);
+
     return 0;
 }
 
@@ -129,8 +262,7 @@ int main()
     CREATE_CSPRNG(&RNG,&SEED);
 
     printf("\nTesting BLS signature for curve ZZZ\n");
-    int rc = bls(&RNG);
-    if (rc == 0)
+    if (bls(&RNG))
     {
         printf("SUCCESS");
     }