diff --git a/go.mod b/go.mod index 8ce3ea9..1a24989 100644 --- a/go.mod +++ b/go.mod @@ -6,12 +6,12 @@ require ( github.com/spf13/pflag v1.0.5 github.com/tillitis/tkeyclient v1.0.0 github.com/tillitis/tkeysign v1.0.0 - go.bug.st/serial v1.6.2 gopkg.in/yaml.v2 v2.4.0 ) require ( github.com/creack/goselect v0.1.2 // indirect + go.bug.st/serial v1.6.2 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/sys v0.19.0 // indirect ) diff --git a/internal/tkey/tkey.go b/internal/tkey/tkey.go index 0c52832..1d4209f 100644 --- a/internal/tkey/tkey.go +++ b/internal/tkey/tkey.go @@ -25,7 +25,6 @@ import ( "os" "os/signal" - "github.com/tillitis/tkey-verification/internal/util" "github.com/tillitis/tkeyclient" "github.com/tillitis/tkeysign" ) @@ -66,7 +65,7 @@ func NewTKey(devPath string, verbose bool) (*TKey, error) { } if devPath == "" { - devPath, err = util.DetectSerialPort(true) + devPath, err = tkeyclient.DetectSerialPort(true) if err != nil { return nil, ErrNoDevice } diff --git a/internal/util/ports_darwin.go b/internal/util/ports_darwin.go deleted file mode 100644 index 989604a..0000000 --- a/internal/util/ports_darwin.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2023 - Tillitis AB -// SPDX-License-Identifier: GPL-2.0-only - -//go:build darwin - -package util - -import ( - "fmt" - "os" -) - -func DetectSerialPort(verbose bool) (string, error) { - fmt.Fprintf(os.Stderr, `Serial port detection is not available on MacOS. -Please find the serial port device path using: - ls -l /dev/cu.* -Then run like: - tkey-verification command --port /dev/cu.usbmodemN -`) - return "", fmt.Errorf("not available on MacOS") -} diff --git a/internal/util/ports_linuxwindows.go b/internal/util/ports_linuxwindows.go deleted file mode 100644 index c937297..0000000 --- a/internal/util/ports_linuxwindows.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (C) 2023 - Tillitis AB -// SPDX-License-Identifier: GPL-2.0-only - -//go:build linux || windows - -package util - -import ( - "fmt" - "os" - - "go.bug.st/serial/enumerator" -) - -const ( - tillitisUSBVID = "1207" - tillitisUSBPID = "8887" -) - -type constError string - -func (err constError) Error() string { - return string(err) -} - -const ( - // Custom errors - ErrNoDevice = constError("no TKey connected") - ErrManyDevices = constError("more than one TKey connected") -) - -type SerialPort struct { - DevPath string - SerialNumber string -} - -func DetectSerialPort(verbose bool) (string, error) { - ports, err := getSerialPorts() - if err != nil { - return "", err - } - if len(ports) == 0 { - if verbose { - fmt.Fprintf(os.Stderr, "No TKey serial ports detected. You may specify a known device path using --port.\n") - } - return "", ErrNoDevice - } - if len(ports) > 1 { - if verbose { - fmt.Fprintf(os.Stderr, "Detected %d TKey serial ports:\n", len(ports)) - for _, p := range ports { - fmt.Fprintf(os.Stderr, "%s with serial number %s\n", p.DevPath, p.SerialNumber) - } - fmt.Fprintf(os.Stderr, "Please choose one of the above by using the --port flag.\n") - } - return "", ErrManyDevices - } - if verbose { - fmt.Fprintf(os.Stderr, "Auto-detected serial port %s\n", ports[0].DevPath) - } - return ports[0].DevPath, nil -} - -func getSerialPorts() ([]SerialPort, error) { - var ports []SerialPort - - portDetails, err := enumerator.GetDetailedPortsList() - if err != nil { - return nil, fmt.Errorf("GetDetailedPortsList: %w", err) - } - - for _, port := range portDetails { - if port.IsUSB && port.VID == tillitisUSBVID && port.PID == tillitisUSBPID { - ports = append(ports, SerialPort{port.Name, port.SerialNumber}) - } - } - - return ports, nil -}