mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
993 B
51 lines
993 B
4 years ago
|
package crypto_test
|
||
|
|
||
|
import (
|
||
|
"crypto/cipher"
|
||
|
"testing"
|
||
|
|
||
|
. "github.com/xtls/xray-core/v1/common/crypto"
|
||
|
)
|
||
|
|
||
|
const benchSize = 1024 * 1024
|
||
|
|
||
|
func benchmarkStream(b *testing.B, c cipher.Stream) {
|
||
|
b.SetBytes(benchSize)
|
||
|
input := make([]byte, benchSize)
|
||
|
output := make([]byte, benchSize)
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
c.XORKeyStream(output, input)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkChaCha20(b *testing.B) {
|
||
|
key := make([]byte, 32)
|
||
|
nonce := make([]byte, 8)
|
||
|
c := NewChaCha20Stream(key, nonce)
|
||
|
benchmarkStream(b, c)
|
||
|
}
|
||
|
|
||
|
func BenchmarkChaCha20IETF(b *testing.B) {
|
||
|
key := make([]byte, 32)
|
||
|
nonce := make([]byte, 12)
|
||
|
c := NewChaCha20Stream(key, nonce)
|
||
|
benchmarkStream(b, c)
|
||
|
}
|
||
|
|
||
|
func BenchmarkAESEncryption(b *testing.B) {
|
||
|
key := make([]byte, 32)
|
||
|
iv := make([]byte, 16)
|
||
|
c := NewAesEncryptionStream(key, iv)
|
||
|
|
||
|
benchmarkStream(b, c)
|
||
|
}
|
||
|
|
||
|
func BenchmarkAESDecryption(b *testing.B) {
|
||
|
key := make([]byte, 32)
|
||
|
iv := make([]byte, 16)
|
||
|
c := NewAesDecryptionStream(key, iv)
|
||
|
|
||
|
benchmarkStream(b, c)
|
||
|
}
|