From 6face25f38c63ae33e5f1431c5bfdc7421712b01 Mon Sep 17 00:00:00 2001
From: lunfardo314 <evaldas.drasutis@iota.org>
Date: Sun, 29 Mar 2020 12:31:20 +0300
Subject: [PATCH] BLS signatures: bug fix in test, removed unnecessary
 function, added new test

---
 .../address/signaturescheme/bls_test.go       | 46 +++++++++++++------
 1 file changed, 32 insertions(+), 14 deletions(-)

diff --git a/packages/binary/valuetransfer/address/signaturescheme/bls_test.go b/packages/binary/valuetransfer/address/signaturescheme/bls_test.go
index 9e1a38aa..c9d3f305 100644
--- a/packages/binary/valuetransfer/address/signaturescheme/bls_test.go
+++ b/packages/binary/valuetransfer/address/signaturescheme/bls_test.go
@@ -1,6 +1,7 @@
 package signaturescheme
 
 import (
+	"github.com/mr-tron/base58"
 	"testing"
 
 	"github.com/magiconair/properties/assert"
@@ -8,16 +9,36 @@ import (
 
 var dataToSign = []byte("Hello Boneh-Lynn-Shacham (BLS) --> Boneh-Drijvers-Neven (BDN)")
 
-func TestBLS_base(t *testing.T) {
-	blsSigScheme := RandBLS()
-	t.Logf("generating random BLS signature scheme: %s\n", blsSigScheme.(*blsSignatureScheme).String())
-	signature := blsSigScheme.Sign(dataToSign)
+func TestBLS_rndSigScheme(t *testing.T) {
+	sigScheme := RandBLS()
+	t.Logf("generating random BLS signature scheme: %s\n", sigScheme.(*blsSignatureScheme).String())
+	signature := sigScheme.Sign(dataToSign)
 
-	assert.Equal(t, blsSigScheme.Address(), signature.Address())
+	assert.Equal(t, sigScheme.Address(), signature.Address())
 	res := signature.IsValid(dataToSign)
 	assert.Equal(t, res, true)
 }
 
+const (
+	priKeyTest = "Cjsu52qf28G4oLiUDcimEY7SPbWJQA9zoKCNi4ywMxg"
+	pubKeyTest = "28LgNCDp52gTotmd21hcEXKar5tTyxuJKqQdGHCJnZ5Z1M7Rdh4Qo2BYC3s3NicLD99tZ3yX9mZvRmsnQLMRcHnzqgq2CQp7CYWCKfTUT9yzJKUTQ4JmN2DhSkSNc5kau4KE8PRGByQxpiYQq4DRF4Qb3Dn4cHmhTrDi9xQiYTxoAYW"
+)
+
+func TestBLS_sigScheme(t *testing.T) {
+	priKeyBin, err := base58.Decode(priKeyTest)
+	assert.Equal(t, err, nil)
+
+	pubKeyBin, err := base58.Decode(pubKeyTest)
+	assert.Equal(t, err, nil)
+
+	sigScheme, err := BLS(priKeyBin, pubKeyBin)
+	assert.Equal(t, err, nil)
+
+	signature := sigScheme.Sign(dataToSign)
+	assert.Equal(t, sigScheme.Address(), signature.Address())
+	assert.Equal(t, signature.IsValid(dataToSign), true)
+}
+
 // number of signatures to aggregate
 const numSigs = 100
 
@@ -29,16 +50,13 @@ func TestBLS_aggregation(t *testing.T) {
 		sigSchemes[i] = RandBLS()
 		sigs[i] = sigSchemes[i].Sign(dataToSign)
 	}
-	aggregatedSig1, err := AggregateBLSSignatures(sigs...)
+	// aggregate 2 signatures
+	a01, err := AggregateBLSSignatures(sigs[0], sigs[1])
 	assert.Equal(t, err, nil)
+	assert.Equal(t, a01.IsValid(dataToSign), true)
 
-	assert.Equal(t, aggregatedSig1.IsValid(dataToSign), true)
-
-	aggregatedScheme, err := AggregateBLSSignatureSchemes(sigSchemes...)
+	// aggregate N signatures
+	aN, err := AggregateBLSSignatures(sigs...)
 	assert.Equal(t, err, nil)
-
-	if err == nil {
-		aggregatedSig2 := aggregatedScheme.Sign(dataToSign)
-		assert.Equal(t, aggregatedSig2, aggregatedSig2)
-	}
+	assert.Equal(t, aN.IsValid(dataToSign), true)
 }
-- 
GitLab