Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package shadowsocks_test
 
import (
    "crypto/rand"
    "testing"
 
    "github.com/google/go-cmp/cmp"
 
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/buf"
    "github.com/v2fly/v2ray-core/v5/proxy/shadowsocks"
)
 
func TestAEADCipherUDP(t *testing.T) {
    rawAccount := &shadowsocks.Account{
        CipherType: shadowsocks.CipherType_AES_128_GCM,
        Password:   "test",
    }
    account, err := rawAccount.AsAccount()
    common.Must(err)
 
    cipher := account.(*shadowsocks.MemoryAccount).Cipher
 
    key := make([]byte, cipher.KeySize())
    common.Must2(rand.Read(key))
 
    payload := make([]byte, 1024)
    common.Must2(rand.Read(payload))
 
    b1 := buf.New()
    common.Must2(b1.ReadFullFrom(rand.Reader, cipher.IVSize()))
    common.Must2(b1.Write(payload))
    common.Must(cipher.EncodePacket(key, b1))
 
    common.Must(cipher.DecodePacket(key, b1))
    if diff := cmp.Diff(b1.Bytes(), payload); diff != "" {
        t.Error(diff)
    }
}