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 }