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 }