github.com/MetalBlockchain/metalgo@v1.11.9/staking/verify_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package staking 5 6 import ( 7 "crypto" 8 "crypto/rand" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 13 "github.com/MetalBlockchain/metalgo/utils/hashing" 14 ) 15 16 func BenchmarkSign(b *testing.B) { 17 tlsCert, err := NewTLSCert() 18 require.NoError(b, err) 19 20 signer := tlsCert.PrivateKey.(crypto.Signer) 21 msg := []byte("msg") 22 hash := hashing.ComputeHash256(msg) 23 24 b.ResetTimer() 25 for i := 0; i < b.N; i++ { 26 _, err := signer.Sign(rand.Reader, hash, crypto.SHA256) 27 require.NoError(b, err) 28 } 29 } 30 31 func BenchmarkVerify(b *testing.B) { 32 tlsCert, err := NewTLSCert() 33 require.NoError(b, err) 34 35 signer := tlsCert.PrivateKey.(crypto.Signer) 36 msg := []byte("msg") 37 signature, err := signer.Sign( 38 rand.Reader, 39 hashing.ComputeHash256(msg), 40 crypto.SHA256, 41 ) 42 require.NoError(b, err) 43 44 certBytes := tlsCert.Leaf.Raw 45 cert, err := ParseCertificate(certBytes) 46 require.NoError(b, err) 47 48 b.ResetTimer() 49 for i := 0; i < b.N; i++ { 50 err := CheckSignature(cert, msg, signature) 51 require.NoError(b, err) 52 } 53 }