github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/whisper/whisperv5/benchmarks_test.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 // 10 // 11 // 12 // 13 // 14 // 15 // 16 // 17 // 18 // 19 // 20 // 21 // 22 // 23 // 24 25 package whisperv5 26 27 import ( 28 "testing" 29 30 "github.com/ethereum/go-ethereum/crypto" 31 ) 32 33 func BenchmarkDeriveKeyMaterial(b *testing.B) { 34 for i := 0; i < b.N; i++ { 35 deriveKeyMaterial([]byte("test"), 0) 36 } 37 } 38 39 func BenchmarkEncryptionSym(b *testing.B) { 40 InitSingleTest() 41 42 params, err := generateMessageParams() 43 if err != nil { 44 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 45 } 46 47 for i := 0; i < b.N; i++ { 48 msg, _ := NewSentMessage(params) 49 _, err := msg.Wrap(params) 50 if err != nil { 51 b.Errorf("failed Wrap with seed %d: %s.", seed, err) 52 b.Errorf("i = %d, len(msg.Raw) = %d, params.Payload = %d.", i, len(msg.Raw), len(params.Payload)) 53 return 54 } 55 } 56 } 57 58 func BenchmarkEncryptionAsym(b *testing.B) { 59 InitSingleTest() 60 61 params, err := generateMessageParams() 62 if err != nil { 63 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 64 } 65 key, err := crypto.GenerateKey() 66 if err != nil { 67 b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err) 68 } 69 params.KeySym = nil 70 params.Dst = &key.PublicKey 71 72 for i := 0; i < b.N; i++ { 73 msg, _ := NewSentMessage(params) 74 _, err := msg.Wrap(params) 75 if err != nil { 76 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 77 } 78 } 79 } 80 81 func BenchmarkDecryptionSymValid(b *testing.B) { 82 InitSingleTest() 83 84 params, err := generateMessageParams() 85 if err != nil { 86 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 87 } 88 msg, _ := NewSentMessage(params) 89 env, err := msg.Wrap(params) 90 if err != nil { 91 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 92 } 93 f := Filter{KeySym: params.KeySym} 94 95 for i := 0; i < b.N; i++ { 96 msg := env.Open(&f) 97 if msg == nil { 98 b.Fatalf("failed to open with seed %d.", seed) 99 } 100 } 101 } 102 103 func BenchmarkDecryptionSymInvalid(b *testing.B) { 104 InitSingleTest() 105 106 params, err := generateMessageParams() 107 if err != nil { 108 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 109 } 110 msg, _ := NewSentMessage(params) 111 env, err := msg.Wrap(params) 112 if err != nil { 113 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 114 } 115 f := Filter{KeySym: []byte("arbitrary stuff here")} 116 117 for i := 0; i < b.N; i++ { 118 msg := env.Open(&f) 119 if msg != nil { 120 b.Fatalf("opened envelope with invalid key, seed: %d.", seed) 121 } 122 } 123 } 124 125 func BenchmarkDecryptionAsymValid(b *testing.B) { 126 InitSingleTest() 127 128 params, err := generateMessageParams() 129 if err != nil { 130 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 131 } 132 key, err := crypto.GenerateKey() 133 if err != nil { 134 b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err) 135 } 136 f := Filter{KeyAsym: key} 137 params.KeySym = nil 138 params.Dst = &key.PublicKey 139 msg, _ := NewSentMessage(params) 140 env, err := msg.Wrap(params) 141 if err != nil { 142 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 143 } 144 145 for i := 0; i < b.N; i++ { 146 msg := env.Open(&f) 147 if msg == nil { 148 b.Fatalf("fail to open, seed: %d.", seed) 149 } 150 } 151 } 152 153 func BenchmarkDecryptionAsymInvalid(b *testing.B) { 154 InitSingleTest() 155 156 params, err := generateMessageParams() 157 if err != nil { 158 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 159 } 160 key, err := crypto.GenerateKey() 161 if err != nil { 162 b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err) 163 } 164 params.KeySym = nil 165 params.Dst = &key.PublicKey 166 msg, _ := NewSentMessage(params) 167 env, err := msg.Wrap(params) 168 if err != nil { 169 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 170 } 171 172 key, err = crypto.GenerateKey() 173 if err != nil { 174 b.Fatalf("failed GenerateKey with seed %d: %s.", seed, err) 175 } 176 f := Filter{KeyAsym: key} 177 178 for i := 0; i < b.N; i++ { 179 msg := env.Open(&f) 180 if msg != nil { 181 b.Fatalf("opened envelope with invalid key, seed: %d.", seed) 182 } 183 } 184 } 185 186 func increment(x []byte) { 187 for i := 0; i < len(x); i++ { 188 x[i]++ 189 if x[i] != 0 { 190 break 191 } 192 } 193 } 194 195 func BenchmarkPoW(b *testing.B) { 196 InitSingleTest() 197 198 params, err := generateMessageParams() 199 if err != nil { 200 b.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err) 201 } 202 params.Payload = make([]byte, 32) 203 params.PoW = 10.0 204 params.TTL = 1 205 206 for i := 0; i < b.N; i++ { 207 increment(params.Payload) 208 msg, _ := NewSentMessage(params) 209 _, err := msg.Wrap(params) 210 if err != nil { 211 b.Fatalf("failed Wrap with seed %d: %s.", seed, err) 212 } 213 } 214 }