mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-08-21 20:26:27 +00:00
51 lines
993 B
Go
51 lines
993 B
Go
|
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)
|
||
|
}
|