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.
104 lines
2.5 KiB
104 lines
2.5 KiB
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) |
|
|
|
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) |
|
|
|
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 |
|
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 |
|
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) |
|
} |
|
} |
|
}
|
|
|