github.com/0chain/gosdk@v1.17.11/core/zcncrypto/bls0chain_test.go (about)

     1  //go:build !js && !wasm
     2  // +build !js,!wasm
     3  
     4  package zcncrypto
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/herumi/bls-go-binary/bls"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  const (
    14  	testMnemonic = "silent tape impulse glimpse state craft sheriff embody bonus clay confirm column swift kingdom door stove mad switch chalk theory pause canoe insane struggle"
    15  
    16  	testHerumiPublicKey    = "fd2f78b5988719434d6a0782231962934fe1a6f805f98e1bff2c90399a765500ffff9a1cc8c5826feea66d738a7e74ffba7f7dd23e499b5817d8a88e68185f95"
    17  	testHerumiPublicKeyStr = "1 55769a39902cff1b8ef905f8a6e14f9362192382076a4d43198798b5782ffd 155f18688ea8d817589b493ed27d7fbaff747e8a736da6ee6f82c5c81c9affff e72525d5dda83d7b169653d3a78bd6d6e36cee1f9974d8f30cbfac33a18efb9 19c1c219dbd76990330f778f18d472f10494a6811bb46e36d21bfdf273c03220"
    18  	testHerumiPrivateKey   = "baa512aee00f5ff9eafcd82a16fa81d450b2a1a1e35f638cb7e4c2caf01bc407"
    19  )
    20  
    21  func TestGenerateKeys(t *testing.T) {
    22  	herumi := &HerumiScheme{}
    23  
    24  	w1, err := herumi.RecoverKeys(testMnemonic)
    25  
    26  	require.NoError(t, err)
    27  
    28  	require.Equal(t, testHerumiPublicKey, w1.Keys[0].PublicKey)
    29  
    30  	var pk1 bls.PublicKey
    31  	err = pk1.DeserializeHexStr(w1.Keys[0].PublicKey)
    32  	require.NoError(t, err)
    33  
    34  	require.Equal(t, testHerumiPublicKeyStr, pk1.GetHexString())
    35  
    36  	require.NoError(t, err)
    37  
    38  }
    39  
    40  func TestSignAndVerify(t *testing.T) {
    41  	signScheme := &HerumiScheme{}
    42  
    43  	w, err := signScheme.RecoverKeys(testMnemonic)
    44  	require.Nil(t, err)
    45  
    46  	var pk = w.Keys[0].PublicKey
    47  	var pk1 bls.PublicKey
    48  
    49  	err = pk1.DeserializeHexStr(pk)
    50  	require.Nil(t, err)
    51  
    52  	require.NoError(t, err)
    53  
    54  	hash := Sha3Sum256(data)
    55  	signature, err := signScheme.Sign(hash)
    56  	if err != nil {
    57  		t.Fatalf("BLS signing failed")
    58  	}
    59  	verifyScheme := &HerumiScheme{}
    60  	err = verifyScheme.SetPublicKey(w.Keys[0].PublicKey)
    61  	require.NoError(t, err)
    62  	if ok, err := verifyScheme.Verify(signature, hash); err != nil || !ok {
    63  		t.Fatalf("Verification failed\n")
    64  	}
    65  }