mirror of https://github.com/cbeuw/Cloak
Modify some tests
This commit is contained in:
parent
d99b4009b2
commit
e244340885
|
|
@ -83,7 +83,7 @@ func BenchmarkObfs(b *testing.B) {
|
|||
testPayload,
|
||||
}
|
||||
|
||||
obfsBuf := make([]byte, 512)
|
||||
obfsBuf := make([]byte, 2048)
|
||||
|
||||
var key [32]byte
|
||||
rand.Read(key[:])
|
||||
|
|
@ -94,7 +94,11 @@ func BenchmarkObfs(b *testing.B) {
|
|||
obfs := MakeObfs(key, payloadCipher)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
obfs(testFrame, obfsBuf)
|
||||
n, err := obfs(testFrame, obfsBuf)
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("AES128GCM", func(b *testing.B) {
|
||||
|
|
@ -104,14 +108,22 @@ func BenchmarkObfs(b *testing.B) {
|
|||
obfs := MakeObfs(key, payloadCipher)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
obfs(testFrame, obfsBuf)
|
||||
n, err := obfs(testFrame, obfsBuf)
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("plain", func(b *testing.B) {
|
||||
obfs := MakeObfs(key, nil)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
obfs(testFrame, obfsBuf)
|
||||
n, err := obfs(testFrame, obfsBuf)
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("chacha20Poly1305", func(b *testing.B) {
|
||||
|
|
@ -120,7 +132,91 @@ func BenchmarkObfs(b *testing.B) {
|
|||
obfs := MakeObfs(key, payloadCipher)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
obfs(testFrame, obfsBuf)
|
||||
n, err := obfs(testFrame, obfsBuf)
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkDeobfs(b *testing.B) {
|
||||
testPayload := make([]byte, 1024)
|
||||
rand.Read(testPayload)
|
||||
testFrame := &Frame{
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
testPayload,
|
||||
}
|
||||
|
||||
obfsBuf := make([]byte, 2048)
|
||||
|
||||
var key [32]byte
|
||||
rand.Read(key[:])
|
||||
b.Run("AES256GCM", func(b *testing.B) {
|
||||
c, _ := aes.NewCipher(key[:])
|
||||
payloadCipher, _ := cipher.NewGCM(c)
|
||||
|
||||
obfs := MakeObfs(key, payloadCipher)
|
||||
n, _ := obfs(testFrame, obfsBuf)
|
||||
deobfs := MakeDeobfs(key, payloadCipher)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := deobfs(obfsBuf[:n])
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("AES128GCM", func(b *testing.B) {
|
||||
c, _ := aes.NewCipher(key[:16])
|
||||
payloadCipher, _ := cipher.NewGCM(c)
|
||||
|
||||
obfs := MakeObfs(key, payloadCipher)
|
||||
n, _ := obfs(testFrame, obfsBuf)
|
||||
deobfs := MakeDeobfs(key, payloadCipher)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := deobfs(obfsBuf[:n])
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("plain", func(b *testing.B) {
|
||||
obfs := MakeObfs(key, nil)
|
||||
n, _ := obfs(testFrame, obfsBuf)
|
||||
deobfs := MakeDeobfs(key, nil)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := deobfs(obfsBuf[:n])
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
b.Run("chacha20Poly1305", func(b *testing.B) {
|
||||
payloadCipher, _ := chacha20poly1305.New(key[:16])
|
||||
|
||||
obfs := MakeObfs(key, payloadCipher)
|
||||
n, _ := obfs(testFrame, obfsBuf)
|
||||
deobfs := MakeDeobfs(key, payloadCipher)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := deobfs(obfsBuf[:n])
|
||||
if err != nil {
|
||||
b.Error(err)
|
||||
}
|
||||
b.SetBytes(int64(n))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
package multiplex
|
||||
|
||||
import (
|
||||
"github.com/cbeuw/Cloak/internal/util"
|
||||
"math/rand"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func BenchmarkRecvDataFromRemote(b *testing.B) {
|
||||
testPayload := make([]byte, 1024)
|
||||
rand.Read(testPayload)
|
||||
f := &Frame{
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
testPayload,
|
||||
}
|
||||
obfsBuf := make([]byte, 17000)
|
||||
|
||||
sessionKey := make([]byte, 32)
|
||||
rand.Read(sessionKey)
|
||||
|
||||
b.Run("plain", func(b *testing.B) {
|
||||
obfuscator, _ := GenerateObfs(0x00, sessionKey)
|
||||
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
|
||||
n, _ := sesh.Obfs(f, obfsBuf)
|
||||
|
||||
originalHeader := make([]byte, 12)
|
||||
copy(originalHeader, obfsBuf[5:17])
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
sesh.recvDataFromRemote(obfsBuf[:n])
|
||||
b.SetBytes(int64(n))
|
||||
copy(obfsBuf[5:17], originalHeader)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("aes-gcm", func(b *testing.B) {
|
||||
obfuscator, _ := GenerateObfs(0x01, sessionKey)
|
||||
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
|
||||
n, _ := sesh.Obfs(f, obfsBuf)
|
||||
|
||||
// because deobfs decrypts the header in-place, which alters the input
|
||||
originalHeader := make([]byte, 12)
|
||||
copy(originalHeader, obfsBuf[5:17])
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
sesh.recvDataFromRemote(obfsBuf[:n])
|
||||
b.SetBytes(int64(n))
|
||||
copy(obfsBuf[5:17], originalHeader)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("chacha20-poly1305", func(b *testing.B) {
|
||||
obfuscator, _ := GenerateObfs(0x02, sessionKey)
|
||||
sesh := MakeSession(0, UNLIMITED_VALVE, obfuscator, util.ReadTLS)
|
||||
n, _ := sesh.Obfs(f, obfsBuf)
|
||||
|
||||
originalHeader := make([]byte, 12)
|
||||
copy(originalHeader, obfsBuf[5:17])
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
sesh.recvDataFromRemote(obfsBuf[:n])
|
||||
b.SetBytes(int64(n))
|
||||
copy(obfsBuf[5:17], originalHeader)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ func (b *blackhole) SetReadDeadline(t time.Time) error { return nil }
|
|||
func (b *blackhole) SetWriteDeadline(t time.Time) error { return nil }
|
||||
|
||||
func BenchmarkStream_Write(b *testing.B) {
|
||||
const PAYLOAD_LEN = 1 << 20 * 100
|
||||
const PAYLOAD_LEN = 1000
|
||||
hole := newBlackHole()
|
||||
sesh := setupSesh()
|
||||
sesh.AddConnection(hole)
|
||||
|
|
|
|||
Loading…
Reference in New Issue