github.com/number571/tendermint@v0.34.11-gost/crypto/gost512/gost512_test.go (about) 1 package gost512_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 9 "github.com/number571/tendermint/crypto" 10 "github.com/number571/tendermint/crypto/gost512" 11 ) 12 13 const ( 14 TEST_SUBJECT = "subject" 15 TEST_PASSWORD = "password" 16 ) 17 18 func TestSignAndValidateGost512(t *testing.T) { 19 20 privKey := gost512.GenPrivKeyWithInput(TEST_SUBJECT, TEST_PASSWORD) 21 pubKey := privKey.PubKey() 22 23 msg := crypto.CRandBytes(128) 24 sig, err := privKey.Sign(msg) 25 require.Nil(t, err) 26 27 assert.True(t, pubKey.VerifySignature(msg, sig)) 28 29 sig[7] ^= byte(0x01) 30 31 assert.False(t, pubKey.VerifySignature(msg, sig)) 32 } 33 34 func TestBatchSafe(t *testing.T) { 35 v := gost512.NewBatchVerifier() 36 37 for i := 0; i <= 38; i++ { 38 priv := gost512.GenPrivKeyWithInput(TEST_SUBJECT, TEST_PASSWORD) 39 pub := priv.PubKey() 40 41 var msg []byte 42 if i%2 == 0 { 43 msg = []byte("easter") 44 } else { 45 msg = []byte("egg") 46 } 47 48 sig, err := priv.Sign(msg) 49 require.NoError(t, err) 50 51 err = v.Add(pub, msg, sig) 52 require.NoError(t, err) 53 } 54 55 ok, _ := v.Verify() 56 require.True(t, ok) 57 }