package main import ( "bufio" "encoding/base64" "encoding/json" "net" "path/filepath" "testing" ) func TestOpenWindowsEncodedSessionBindsDescriptorToRequest(t *testing.T) { listener, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { t.Fatal(err) } defer listener.Close() serverError := make(chan error, 1) go func() { connection, err := listener.Accept() if err != nil { serverError <- err return } defer connection.Close() if _, err := connection.Write([]byte("{\"kind\":\"windows_agent_hello\"}\n")); err != nil { serverError <- err return } var request struct { Kind string `json:"kind"` SessionID string `json:"session_id"` FramesPerSecond uint8 `json:"frames_per_second"` AllowSoftwareFallback bool `json:"allow_software_fallback"` } if err := readBoundedAgentJSON(bufio.NewReader(connection), &request); err != nil { serverError <- err return } if request.Kind != "open_encoded_desktop" || request.SessionID != "session-1" || request.FramesPerSecond != 60 || !request.AllowSoftwareFallback { serverError <- &testControlError{"encoded desktop request mismatch"} return } response := encodedDesktopOpened{ Kind: "encoded_desktop_opened", VideoCodec: "h264", MediaTransport: "shared_memory_encoded_access_units", Ring: mediaRingDescriptor{ SchemaVersion: 1, SessionID: "session-1", Generation: 7, OwnerPID: 42, RingPath: filepath.Join(t.TempDir(), "media.ring"), SlotCount: 16, SlotBytes: 8 * 1024 * 1024, VideoTransport: "shared_memory_encoded_access_units", AudioTransport: "separate_transport", }, } encoded, err := json.Marshal(response) if err == nil { encoded = append(encoded, '\n') _, err = connection.Write(encoded) } serverError <- err }() connection, descriptor, err := openWindowsEncodedSession(listener.Addr().String(), "session-1", 60, true) if err != nil { t.Fatal(err) } defer connection.Close() if descriptor.Generation != 7 || descriptor.SessionID != "session-1" { t.Fatalf("unexpected descriptor: %+v", descriptor) } if err := <-serverError; err != nil { t.Fatal(err) } } func TestWindowsAgentControlRejectsRemoteAndMismatchedDescriptor(t *testing.T) { if validateAgentControlAddress("192.0.2.10:39501") == nil { t.Fatal("remote Windows Agent control address was accepted") } descriptor := mediaRingDescriptor{ SchemaVersion: 1, SessionID: "other", Generation: 1, OwnerPID: 1, RingPath: filepath.Join(t.TempDir(), "media.ring"), SlotCount: 16, SlotBytes: 1024, VideoTransport: "shared_memory_encoded_access_units", AudioTransport: "separate_transport", } if validateMediaRingDescriptor(descriptor, "session-1") == nil { t.Fatal("descriptor for another session was accepted") } } func TestWindowsAgentPipeAuthenticationMatchesRustWireVector(t *testing.T) { key := make([]byte, 32) nonce := make([]byte, 32) for index := range key { key[index] = byte(index) nonce[index] = byte(index + 32) } actual := base64.RawURLEncoding.EncodeToString(windowsAgentPipeMAC(key, nonce)) const expected = "KinBDOBvVhz0eRv37iahq8BO0z8QdiI0Qnx7HZmcxIk" if actual != expected { t.Fatalf("unexpected Agent Pipe MAC: %s", actual) } if validateAgentControlAddress(`\\.\pipe\RemoteDesk\windows-agent`) != nil { t.Fatal("RemoteDesk Agent Pipe was rejected") } if validateAgentControlAddress(`\\.\pipe\Other\windows-agent`) == nil { t.Fatal("Pipe outside the RemoteDesk namespace was accepted") } } type testControlError struct{ message string } func (e *testControlError) Error() string { return e.message }