mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-11-27 01:13:01 +00:00
105 lines
2.5 KiB
Go
105 lines
2.5 KiB
Go
|
package aead
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestOpenVMessAEADHeader(t *testing.T) {
|
||
|
TestHeader := []byte("Test Header")
|
||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||
|
var keyw [16]byte
|
||
|
copy(keyw[:], key)
|
||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||
|
|
||
|
var AEADR = bytes.NewReader(sealed)
|
||
|
|
||
|
var authid [16]byte
|
||
|
|
||
|
io.ReadFull(AEADR, authid[:])
|
||
|
|
||
|
out, _, _, err := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||
|
|
||
|
fmt.Println(string(out))
|
||
|
fmt.Println(err)
|
||
|
}
|
||
|
|
||
|
func TestOpenVMessAEADHeader2(t *testing.T) {
|
||
|
TestHeader := []byte("Test Header")
|
||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||
|
var keyw [16]byte
|
||
|
copy(keyw[:], key)
|
||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||
|
|
||
|
var AEADR = bytes.NewReader(sealed)
|
||
|
|
||
|
var authid [16]byte
|
||
|
|
||
|
io.ReadFull(AEADR, authid[:])
|
||
|
|
||
|
out, _, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||
|
assert.Equal(t, string(TestHeader), string(out))
|
||
|
assert.Nil(t, err)
|
||
|
}
|
||
|
|
||
|
func TestOpenVMessAEADHeader4(t *testing.T) {
|
||
|
for i := 0; i <= 60; i++ {
|
||
|
TestHeader := []byte("Test Header")
|
||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||
|
var keyw [16]byte
|
||
|
copy(keyw[:], key)
|
||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||
|
var sealedm [16]byte
|
||
|
copy(sealedm[:], sealed)
|
||
|
sealed[i] ^= 0xff
|
||
|
var AEADR = bytes.NewReader(sealed)
|
||
|
|
||
|
var authid [16]byte
|
||
|
|
||
|
io.ReadFull(AEADR, authid[:])
|
||
|
|
||
|
out, drain, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||
|
assert.Equal(t, true, drain)
|
||
|
assert.NotNil(t, err)
|
||
|
if err == nil {
|
||
|
fmt.Println(">")
|
||
|
}
|
||
|
assert.Nil(t, out)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOpenVMessAEADHeader4Massive(t *testing.T) {
|
||
|
for j := 0; j < 1000; j++ {
|
||
|
for i := 0; i <= 60; i++ {
|
||
|
TestHeader := []byte("Test Header")
|
||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||
|
var keyw [16]byte
|
||
|
copy(keyw[:], key)
|
||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||
|
var sealedm [16]byte
|
||
|
copy(sealedm[:], sealed)
|
||
|
sealed[i] ^= 0xff
|
||
|
var AEADR = bytes.NewReader(sealed)
|
||
|
|
||
|
var authid [16]byte
|
||
|
|
||
|
io.ReadFull(AEADR, authid[:])
|
||
|
|
||
|
out, drain, readen, err := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||
|
assert.Equal(t, true, drain)
|
||
|
assert.NotNil(t, err)
|
||
|
if err == nil {
|
||
|
fmt.Println(">")
|
||
|
}
|
||
|
assert.Nil(t, out)
|
||
|
}
|
||
|
}
|
||
|
}
|