package vless import ( "encoding/base64" "encoding/hex" "testing" ) func TestGenerateX25519Keypair(t *testing.T) { priv, pub, err := GenerateX25519Keypair() if err != nil { t.Fatalf("unexpected error: %v", err) } privBytes, err := base64.StdEncoding.DecodeString(priv) if err != nil { t.Fatalf("invalid base64 private key: %v", err) } if len(privBytes) != 32 { t.Errorf("private key length: got %d, want 32", len(privBytes)) } pubBytes, err := base64.StdEncoding.DecodeString(pub) if err != nil { t.Fatalf("invalid base64 public key: %v", err) } if len(pubBytes) != 32 { t.Errorf("public key length: got %d, want 32", len(pubBytes)) } // Keys should be different. if priv == pub { t.Error("private and public keys should differ") } } func TestGenerateX25519Keypair_Unique(t *testing.T) { priv1, _, _ := GenerateX25519Keypair() priv2, _, _ := GenerateX25519Keypair() if priv1 == priv2 { t.Error("two generated keypairs should not be identical") } } func TestGenerateShortID(t *testing.T) { id, err := GenerateShortID() if err != nil { t.Fatalf("unexpected error: %v", err) } if len(id) != 16 { t.Errorf("short ID hex length: got %d, want 16", len(id)) } b, err := hex.DecodeString(id) if err != nil { t.Fatalf("invalid hex short ID: %v", err) } if len(b) != 8 { t.Errorf("short ID byte length: got %d, want 8", len(b)) } } func TestGenerateShortID_Unique(t *testing.T) { id1, _ := GenerateShortID() id2, _ := GenerateShortID() if id1 == id2 { t.Error("two generated short IDs should not be identical") } }