github.com/digdeepmining/go-atheios@v1.5.13-0.20180902133602-d5687a2e6f43/whisper/whisperv5/benchmarks_test.go (about)

     1  // Copyright 2016 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package whisperv5
    18  
    19  import (
    20  	"testing"
    21  
    22  	"github.com/atheioschain/go-atheios/crypto"
    23  )
    24  
    25  func BenchmarkDeriveKeyMaterial(b *testing.B) {
    26  	for i := 0; i < b.N; i++ {
    27  		deriveKeyMaterial([]byte("test"), 0)
    28  	}
    29  }
    30  
    31  func BenchmarkDeriveOneTimeKey(b *testing.B) {
    32  	for i := 0; i < b.N; i++ {
    33  		DeriveOneTimeKey([]byte("test value 1"), []byte("test value 2"), 0)
    34  	}
    35  }
    36  
    37  //func TestEncryptionSym(b *testing.T) {
    38  func BenchmarkEncryptionSym(b *testing.B) {
    39  	InitSingleTest()
    40  
    41  	params, err := generateMessageParams()
    42  	if err != nil {
    43  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
    44  	}
    45  
    46  	for i := 0; i < b.N; i++ {
    47  		msg := NewSentMessage(params)
    48  		_, err := msg.Wrap(params)
    49  		if err != nil {
    50  			b.Errorf("failed Wrap with seed %d: %s.", seed, err)
    51  			b.Errorf("i = %d, len(msg.Raw) = %d, params.Payload = %d.", i, len(msg.Raw), len(params.Payload))
    52  			return
    53  		}
    54  	}
    55  }
    56  
    57  func BenchmarkEncryptionAsym(b *testing.B) {
    58  	InitSingleTest()
    59  
    60  	params, err := generateMessageParams()
    61  	if err != nil {
    62  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
    63  	}
    64  	key, err := crypto.GenerateKey()
    65  	if err != nil {
    66  		b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err)
    67  	}
    68  	params.KeySym = nil
    69  	params.Dst = &key.PublicKey
    70  
    71  	for i := 0; i < b.N; i++ {
    72  		msg := NewSentMessage(params)
    73  		_, err := msg.Wrap(params)
    74  		if err != nil {
    75  			b.Fatalf("failed Wrap with seed %d: %s.", seed, err)
    76  		}
    77  	}
    78  }
    79  
    80  func BenchmarkDecryptionSymValid(b *testing.B) {
    81  	InitSingleTest()
    82  
    83  	params, err := generateMessageParams()
    84  	if err != nil {
    85  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
    86  	}
    87  	msg := NewSentMessage(params)
    88  	env, err := msg.Wrap(params)
    89  	if err != nil {
    90  		b.Fatalf("failed Wrap with seed %d: %s.", seed, err)
    91  	}
    92  	f := Filter{KeySym: params.KeySym}
    93  
    94  	for i := 0; i < b.N; i++ {
    95  		msg := env.Open(&f)
    96  		if msg == nil {
    97  			b.Fatalf("failed to open with seed %d.", seed)
    98  		}
    99  	}
   100  }
   101  
   102  func BenchmarkDecryptionSymInvalid(b *testing.B) {
   103  	InitSingleTest()
   104  
   105  	params, err := generateMessageParams()
   106  	if err != nil {
   107  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
   108  	}
   109  	msg := NewSentMessage(params)
   110  	env, err := msg.Wrap(params)
   111  	if err != nil {
   112  		b.Fatalf("failed Wrap with seed %d: %s.", seed, err)
   113  	}
   114  	f := Filter{KeySym: []byte("arbitrary stuff here")}
   115  
   116  	for i := 0; i < b.N; i++ {
   117  		msg := env.Open(&f)
   118  		if msg != nil {
   119  			b.Fatalf("opened envelope with invalid key, seed: %d.", seed)
   120  		}
   121  	}
   122  }
   123  
   124  func BenchmarkDecryptionAsymValid(b *testing.B) {
   125  	InitSingleTest()
   126  
   127  	params, err := generateMessageParams()
   128  	if err != nil {
   129  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
   130  	}
   131  	key, err := crypto.GenerateKey()
   132  	if err != nil {
   133  		b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err)
   134  	}
   135  	f := Filter{KeyAsym: key}
   136  	params.KeySym = nil
   137  	params.Dst = &key.PublicKey
   138  	msg := NewSentMessage(params)
   139  	env, err := msg.Wrap(params)
   140  	if err != nil {
   141  		b.Fatalf("failed Wrap with seed %d: %s.", seed, err)
   142  	}
   143  
   144  	for i := 0; i < b.N; i++ {
   145  		msg := env.Open(&f)
   146  		if msg == nil {
   147  			b.Fatalf("fail to open, seed: %d.", seed)
   148  		}
   149  	}
   150  }
   151  
   152  func BenchmarkDecryptionAsymInvalid(b *testing.B) {
   153  	InitSingleTest()
   154  
   155  	params, err := generateMessageParams()
   156  	if err != nil {
   157  		b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
   158  	}
   159  	key, err := crypto.GenerateKey()
   160  	if err != nil {
   161  		b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err)
   162  	}
   163  	params.KeySym = nil
   164  	params.Dst = &key.PublicKey
   165  	msg := NewSentMessage(params)
   166  	env, err := msg.Wrap(params)
   167  	if err != nil {
   168  		b.Fatalf("failed Wrap with seed %d: %s.", seed, err)
   169  	}
   170  
   171  	key, err = crypto.GenerateKey()
   172  	if err != nil {
   173  		b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err)
   174  	}
   175  	f := Filter{KeyAsym: key}
   176  
   177  	for i := 0; i < b.N; i++ {
   178  		msg := env.Open(&f)
   179  		if msg != nil {
   180  			b.Fatalf("opened envelope with invalid key, seed: %d.", seed)
   181  		}
   182  	}
   183  }