github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/p2p/crypto/bench_test.go (about)

     1  package crypto
     2  
     3  import "testing"
     4  
     5  func BenchmarkSign1B(b *testing.B)      { RunBenchmarkSign(b, 1) }
     6  func BenchmarkSign10B(b *testing.B)     { RunBenchmarkSign(b, 10) }
     7  func BenchmarkSign100B(b *testing.B)    { RunBenchmarkSign(b, 100) }
     8  func BenchmarkSign1000B(b *testing.B)   { RunBenchmarkSign(b, 1000) }
     9  func BenchmarkSign10000B(b *testing.B)  { RunBenchmarkSign(b, 10000) }
    10  func BenchmarkSign100000B(b *testing.B) { RunBenchmarkSign(b, 100000) }
    11  
    12  func BenchmarkVerify1B(b *testing.B)      { RunBenchmarkVerify(b, 1) }
    13  func BenchmarkVerify10B(b *testing.B)     { RunBenchmarkVerify(b, 10) }
    14  func BenchmarkVerify100B(b *testing.B)    { RunBenchmarkVerify(b, 100) }
    15  func BenchmarkVerify1000B(b *testing.B)   { RunBenchmarkVerify(b, 1000) }
    16  func BenchmarkVerify10000B(b *testing.B)  { RunBenchmarkVerify(b, 10000) }
    17  func BenchmarkVerify100000B(b *testing.B) { RunBenchmarkVerify(b, 100000) }
    18  
    19  func RunBenchmarkSign(b *testing.B, numBytes int) {
    20  	secret, _, err := GenerateKeyPair(RSA, 1024)
    21  	if err != nil {
    22  		b.Fatal(err)
    23  	}
    24  	someData := make([]byte, numBytes)
    25  	b.ResetTimer()
    26  	for i := 0; i < b.N; i++ {
    27  		_, err := secret.Sign(someData)
    28  		if err != nil {
    29  			b.Fatal(err)
    30  		}
    31  	}
    32  }
    33  
    34  func RunBenchmarkVerify(b *testing.B, numBytes int) {
    35  	secret, public, err := GenerateKeyPair(RSA, 1024)
    36  	if err != nil {
    37  		b.Fatal(err)
    38  	}
    39  	someData := make([]byte, numBytes)
    40  	signature, err := secret.Sign(someData)
    41  	if err != nil {
    42  		b.Fatal(err)
    43  	}
    44  	b.ResetTimer()
    45  	for i := 0; i < b.N; i++ {
    46  		valid, err := public.Verify(someData, signature)
    47  		if err != nil {
    48  			b.Fatal(err)
    49  		}
    50  		if !valid {
    51  			b.Fatal("signature should be valid")
    52  		}
    53  	}
    54  }