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");
}