Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:tkey-ssh-agent
User: [email protected]
Usertags: pu

[ Reason ]
Hi!

This is the second part of https://bugs.debian.org/1131028

Upstream has provided an advisory:

https://github.com/tillitis/tkeyclient/security/advisories/GHSA-4w7r-3222-8h6v

While this could be handled by a security patch, due to the complexity
of upstream's recommended solution (involving patches to both
'golang-github-tillitis-tkeyclient' and 'tkey-ssh-agent') and low
end-user impact, it was suggested on #debian-security to use the
proposed-updated mechanism instead to update both packages to latest
upstream version.

I'm attaching the debdiff between tkey-ssh-agent 1.0.0 and 1.1.0 in
unstable, and I suggest something similar could be uploaded to
trixie-proposed-updates.

What do you think?  Is this an acceptable way to resolve this?

If so I can prepare the final real version of these packages.

[ Impact ]
If this isn't adopted, one out of 256 users that provides a USS secret
will not actually make use of the USS, thus possibly lowering their
perceived security.

[ Tests ]
This is upstream patches, so presumably well tested.

[ Risks ]
There is always a risk upstream's patches are buggy and cause unrelated
problems.

[ Checklist ]
  [ ] *all* changes are documented in the d/changelog
  [ ] I reviewed all changes and I approve them
  [ ] attach debdiff against the package in (old)stable
  [ ] the issue is verified as fixed in unstable

[ Changes ]
(Explain *all* the changes)

[ Other info ]
(Anything else the release team should know.)
diff -Nru tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/listen_unix.go tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/listen_unix.go
--- tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/listen_unix.go	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/listen_unix.go	2026-03-16 14:10:28.000000000 +0100
@@ -16,7 +16,7 @@
 
 	l, err := net.Listen("unix", path)
 	if err != nil {
-		return nil, fmt.Errorf("Listen: %w", err)
+		return nil, fmt.Errorf("listen: %w", err)
 	}
 	return l, nil
 }
diff -Nru tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/main.go tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/main.go
--- tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/main.go	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/main.go	2026-03-16 14:10:28.000000000 +0100
@@ -37,7 +37,7 @@
 
 	var agentPath, devPath, fileUSS, pinentry string
 	var speed int
-	var enterUSS, showPubkeyOnly, listPortsOnly, versionOnly, helpOnly bool
+	var enterUSS, forceFullUSS, showPubkeyOnly, listPortsOnly, versionOnly, helpOnly bool
 	pflag.CommandLine.SetOutput(os.Stderr)
 	pflag.CommandLine.SortFlags = false
 	pflag.CommandLine.SetNormalizeFunc(func(_ *pflag.FlagSet, name string) pflag.NormalizedName {
@@ -55,12 +55,14 @@
 		"List possible serial ports to use with --port.")
 	pflag.StringVar(&devPath, "port", "",
 		"Set serial port device `PATH`. If this is not passed, auto-detection will be attempted.")
-	pflag.IntVar(&speed, "speed", tkeyclient.SerialSpeed,
+	pflag.IntVar(&speed, "speed", 0,
 		"Set serial port speed in `BPS` (bits per second).")
 	pflag.BoolVar(&enterUSS, "uss", false,
 		"Enable typing of a phrase to be hashed as the User Supplied Secret. The USS is loaded onto the TKey along with the app itself. A different USS results in different SSH public/private keys, meaning a different identity.")
 	pflag.StringVar(&fileUSS, "uss-file", "",
 		"Read `FILE` and hash its contents as the USS. Use '-' (dash) to read from stdin. The full contents are hashed unmodified (e.g. newlines are not stripped).")
+	pflag.BoolVar(&forceFullUSS, "force-full-uss", false,
+		"Force use of 32 byte USS digest. Default is 31.")
 	pflag.StringVar(&pinentry, "pinentry", "",
 		"Pinentry `PROGRAM` for use by --uss. The default is found by looking in your gpg-agent.conf for pinentry-program, or 'pinentry' if not found there. On Windows, an attempt is made to find Gpg4win's pinentry program to use as default.")
 	pflag.BoolVar(&versionOnly, "version", false, "Output version information.")
@@ -150,7 +152,7 @@
 		prevExitFunc(code)
 	}
 
-	signer := NewSigner(devPath, speed, enterUSS, fileUSS, pinentry, exit)
+	signer := NewSigner(devPath, speed, enterUSS, fileUSS, forceFullUSS, pinentry, exit)
 
 	if showPubkeyOnly {
 		if !signer.connect() {
@@ -209,7 +211,7 @@
 func printPorts() (int, error) {
 	ports, err := tkeyclient.GetSerialPorts()
 	if err != nil {
-		return 0, fmt.Errorf("Failed to list ports: %w", err)
+		return 0, fmt.Errorf("failed to list ports: %w", err)
 	}
 	if len(ports) == 0 {
 		le.Printf("No TKey serial ports found.\n")
diff -Nru tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/signer.go tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/signer.go
--- tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/signer.go	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/signer.go	2026-03-16 14:10:28.000000000 +0100
@@ -52,13 +52,14 @@
 	speed           int
 	enterUSS        bool
 	fileUSS         string
+	forceFullUSS    bool
 	pinentry        string
 	mu              sync.Mutex
 	connected       bool
 	disconnectTimer *time.Timer
 }
 
-func NewSigner(devPathArg string, speedArg int, enterUSS bool, fileUSS string, pinentry string, exitFunc func(int)) *Signer {
+func NewSigner(devPathArg string, speedArg int, enterUSS bool, fileUSS string, forceFullUSS bool, pinentry string, exitFunc func(int)) *Signer {
 	var signer Signer
 
 	tkeyclient.SilenceLogging()
@@ -67,13 +68,14 @@
 
 	tkSigner := tkeysign.New(tk)
 	signer = Signer{
-		tk:       tk,
-		tkSigner: &tkSigner,
-		devPath:  devPathArg,
-		speed:    speedArg,
-		enterUSS: enterUSS,
-		fileUSS:  fileUSS,
-		pinentry: pinentry,
+		tk:           tk,
+		tkSigner:     &tkSigner,
+		devPath:      devPathArg,
+		speed:        speedArg,
+		enterUSS:     enterUSS,
+		fileUSS:      fileUSS,
+		forceFullUSS: forceFullUSS,
+		pinentry:     pinentry,
 	}
 
 	// Do nothing on HUP, in case old udev rule is still in effect
@@ -120,8 +122,18 @@
 		le.Printf("Auto-detected serial port %s\n", devPath)
 	}
 
+	options := []func(*tkeyclient.TillitisKey){}
+
+	if s.speed != 0 {
+		options = append(options, tkeyclient.WithSpeed(s.speed))
+	}
+
+	if s.forceFullUSS {
+		options = append(options, tkeyclient.WithFullUss())
+	}
+
 	le.Printf("Connecting to TKey on serial port %s\n", devPath)
-	if err := s.tk.Connect(devPath, tkeyclient.WithSpeed(s.speed)); err != nil {
+	if err := s.tk.Connect(devPath, options...); err != nil {
 		notify(fmt.Sprintf("Could not connect to a TKey on port %v.", devPath))
 		le.Printf("Failed to connect: %v", err)
 		return false
@@ -182,20 +194,20 @@
 	if s.enterUSS {
 		udi, err := s.tk.GetUDI()
 		if err != nil {
-			return fmt.Errorf("Failed to get UDI: %w", err)
+			return fmt.Errorf("failed to get UDI: %w", err)
 		}
 
 		secret, err = getSecret(udi.String(), s.pinentry)
 		if err != nil {
 			notify(fmt.Sprintf("Could not show USS prompt: %s", errors.Unwrap(err)))
-			return fmt.Errorf("Failed to get USS: %w", err)
+			return fmt.Errorf("failed to get USS: %w", err)
 		}
 	} else if s.fileUSS != "" {
 		var err error
 		secret, err = tkeyutil.ReadUSS(s.fileUSS)
 		if err != nil {
 			notify(fmt.Sprintf("Could not read USS file: %s", err))
-			return fmt.Errorf("Failed to read uss-file %s: %w", s.fileUSS, err)
+			return fmt.Errorf("failed to read uss-file %s: %w", s.fileUSS, err)
 		}
 	}
 
@@ -286,7 +298,7 @@
 
 func (s *Signer) Sign(_ io.Reader, message []byte, opts crypto.SignerOpts) ([]byte, error) {
 	if !s.connect() {
-		return nil, fmt.Errorf("Connect failed")
+		return nil, fmt.Errorf("connect failed")
 	}
 	defer s.disconnect()
 
diff -Nru tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/sshagent.go tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/sshagent.go
--- tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent/sshagent.go	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent/sshagent.go	2026-03-16 14:10:28.000000000 +0100
@@ -43,7 +43,7 @@
 	for {
 		conn, err := listener.Accept()
 		if err != nil {
-			return fmt.Errorf("Accept: %w", err)
+			return fmt.Errorf("accept: %w", err)
 		}
 		le.Printf("Handling a client connection\n")
 		go s.handleConn(conn)
@@ -51,7 +51,7 @@
 }
 
 func (s *SSHAgent) handleConn(c net.Conn) {
-	if err := agent.ServeAgent(s, c); !errors.Is(io.EOF, err) {
+	if err := agent.ServeAgent(s, c); !errors.Is(err, io.EOF) {
 		le.Printf("Agent client connection ended with error: %s\n", err)
 	}
 }
diff -Nru tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent-tray/main.go tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent-tray/main.go
--- tkey-ssh-agent-1.0.0+ds/cmd/tkey-ssh-agent-tray/main.go	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/cmd/tkey-ssh-agent-tray/main.go	2026-03-16 14:10:28.000000000 +0100
@@ -30,6 +30,8 @@
 	mainExe = "tkey-ssh-agent.exe"
 )
 
+var version string
+
 var notify = func(msg string) {
 	tkeyutil.Notify(progname, msg)
 }
@@ -40,6 +42,10 @@
 		os.Exit(1)
 	}
 
+	if version == "" {
+		version = "unknown" // The version should be set from make during build.
+	}
+
 	// We're not supposed to be run in a console , but if we still are
 	// then try to get our output into it
 	if err := fixconsole.FixConsoleIfNeeded(); err != nil {
@@ -122,10 +128,11 @@
 GNU General Public License v2.0 only
 unless otherwise noted in the source code.
 
-Source repository: https://github.com/tillitis/tillitis-key1-apps
+Source repository: https://github.com/tillitis/tkey-ssh-agent
 Tillitis: https://www.tillitis.se
 
-Running: %s`, mainCmdLine))
+Version: %s
+Running: %s`, version, mainCmdLine))
 			}
 		}()
 
diff -Nru tkey-ssh-agent-1.0.0+ds/debian/changelog tkey-ssh-agent-1.1.0+ds/debian/changelog
--- tkey-ssh-agent-1.0.0+ds/debian/changelog	2026-02-13 10:24:05.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/debian/changelog	2026-03-16 22:36:33.000000000 +0100
@@ -1,3 +1,9 @@
+tkey-ssh-agent (1.1.0+ds-1) UNRELEASED; urgency=medium
+
+  * Use gbp sign-tags and upstream-vcs-tag
+
+ -- Simon Josefsson <[email protected]>  Mon, 16 Mar 2026 22:36:33 +0100
+
 tkey-ssh-agent (1.0.0+ds-6) unstable; urgency=medium
 
   * Team upload
diff -Nru tkey-ssh-agent-1.0.0+ds/debian/control tkey-ssh-agent-1.1.0+ds/debian/control
--- tkey-ssh-agent-1.0.0+ds/debian/control	2026-02-12 17:53:10.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/debian/control	2026-03-16 22:36:33.000000000 +0100
@@ -8,7 +8,7 @@
  dh-sequence-golang,
  golang-any,
  golang-github-spf13-pflag-dev,
- golang-github-tillitis-tkeyclient-dev,
+ golang-github-tillitis-tkeyclient-dev (>> 1.3.0~),
  golang-github-tillitis-tkeysign-dev,
  golang-github-tillitis-tkeyutil-dev,
  golang-github-twpayne-go-pinentry-dev (>> 4.0.0~),
diff -Nru tkey-ssh-agent-1.0.0+ds/debian/gbp.conf tkey-ssh-agent-1.1.0+ds/debian/gbp.conf
--- tkey-ssh-agent-1.0.0+ds/debian/gbp.conf	2026-02-12 17:53:10.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/debian/gbp.conf	2026-03-16 22:36:03.000000000 +0100
@@ -1,3 +1,5 @@
 [DEFAULT]
 debian-branch = debian/sid
 dist = DEP14
+sign-tags = True
+upstream-vcs-tag = v%(version%~%-)s
diff -Nru tkey-ssh-agent-1.0.0+ds/docs/release_notes.md tkey-ssh-agent-1.1.0+ds/docs/release_notes.md
--- tkey-ssh-agent-1.0.0+ds/docs/release_notes.md	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/docs/release_notes.md	2026-03-16 14:10:28.000000000 +0100
@@ -1,5 +1,16 @@
 # Release notes
 
+## v1.1.0
+
+- Update tkeyclient version because of a vulnerability leaving some
+  USSs unused. Keys might have changed since earlier versions! Read
+  more here:
+
+  https://github.com/tillitis/tkeyclient/security/advisories/GHSA-4w7r-3222-8h6v
+
+- Add a new option flag: `--force-full-uss` to force full use of the
+  32 byte USS digest.
+
 ## v1.0.0
 
 - All other apps, libraries, and packages have moved to their own
diff -Nru tkey-ssh-agent-1.0.0+ds/.github/workflows/ci.yaml tkey-ssh-agent-1.1.0+ds/.github/workflows/ci.yaml
--- tkey-ssh-agent-1.0.0+ds/.github/workflows/ci.yaml	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/.github/workflows/ci.yaml	2026-03-16 14:10:28.000000000 +0100
@@ -13,7 +13,7 @@
   build:
     runs-on: ubuntu-latest
     container:
-      image: ghcr.io/tillitis/tkey-builder:4
+      image: ghcr.io/tillitis/tkey-builder:5rc2
     steps:
       - name: checkout
         uses: actions/checkout@v4
diff -Nru tkey-ssh-agent-1.0.0+ds/.github/workflows/golangci-lint.yml tkey-ssh-agent-1.1.0+ds/.github/workflows/golangci-lint.yml
--- tkey-ssh-agent-1.0.0+ds/.github/workflows/golangci-lint.yml	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/.github/workflows/golangci-lint.yml	2026-03-16 14:10:28.000000000 +0100
@@ -18,15 +18,15 @@
       - uses: actions/checkout@v3
       - uses: actions/setup-go@v4
         with:
-          go-version: '1.21'
+          go-version: '1.23'
           cache: false
       - name: golangci-lint
-        uses: golangci/golangci-lint-action@v3
+        uses: golangci/golangci-lint-action@v9
         with:
           # Require: The version of golangci-lint to use.
           # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version.
           # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit.
-          version: v1.55.2
+          version: v2.4.0
 
           # Optional: working directory, useful for monorepos
           # working-directory: somedir
diff -Nru tkey-ssh-agent-1.0.0+ds/.golangci.yml tkey-ssh-agent-1.1.0+ds/.golangci.yml
--- tkey-ssh-agent-1.0.0+ds/.golangci.yml	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/.golangci.yml	2026-03-16 14:10:28.000000000 +0100
@@ -1,34 +1,89 @@
+version: "2"
 linters:
-  presets:
-    # found in: golangci-lint help linters
-    - bugs
-    - comment
-    - complexity
-    - error
-    - format
-    - import
-    - metalinter
-    - module
-    - performance
-    - sql
-    # - style  # turned off, can be too much
-    - test
-    - unused
+  enable:
+    - asasalint
+    - asciicheck
+    - bidichk
+    - bodyclose
+    - contextcheck
+    - dupword
+    - durationcheck
+    - errchkjson
+    - errorlint
+    - exhaustive
+    - fatcontext
+    - gocheckcompilerdirectives
+    - gochecksumtype
+    - gocritic
+    - gocyclo
+    - godox
+    - gomoddirectives
+    - gomodguard
+    - gosec
+    - gosmopolitan
+    - loggercheck
+    - maintidx
+    - makezero
+    - misspell
+    - musttag
+    - nilerr
+    - nilnesserr
+    - paralleltest
+    - prealloc
+    - protogetter
+    - reassign
+    - recvcheck
+    - revive
+    - rowserrcheck
+    - spancheck
+    - sqlclosecheck
+    - testableexamples
+    - testifylint
+    - testpackage
+    - thelper
+    - tparallel
+    - unparam
+    - usetesting
+    - wrapcheck
+    - zerologlint
   disable:
     - cyclop
+    - depguard
+    - err113
+    - exhaustruct
     - funlen
     - gocognit
-    - nestif
-    - exhaustruct  # TODO? annoying for now
-    - goerr113  # TODO enable later
     - godot
-    - depguard
-
+    - nestif
+    - perfsprint
+    - noctx
+  settings:
+    govet:
+      enable:
+        - shadow
+  exclusions:
+    generated: lax
+    presets:
+      - comments
+      - common-false-positives
+      - legacy
+      - std-error-handling
+    paths:
+      - third_party$
+      - builtin$
+      - examples$
 issues:
   max-issues-per-linter: 0
   max-same-issues: 0
-
-linters-settings:
-  govet:
-    enable:
-      - shadow
+formatters:
+  enable:
+    - gci
+    - gofmt
+#    - gofumpt
+    - goimports
+  exclusions:
+    generated: lax
+    paths:
+      - third_party$
+      - builtin$
+      - examples$
diff -Nru tkey-ssh-agent-1.0.0+ds/go.mod tkey-ssh-agent-1.1.0+ds/go.mod
--- tkey-ssh-agent-1.0.0+ds/go.mod	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/go.mod	2026-03-16 14:10:28.000000000 +0100
@@ -1,6 +1,6 @@
 module github.com/tillitis/tkey-ssh-agent
 
-go 1.19
+go 1.23.0
 
 require (
 	github.com/Microsoft/go-winio v0.6.1
@@ -8,16 +8,17 @@
 	github.com/getlantern/systray v1.2.1
 	github.com/spf13/pflag v1.0.5
 	github.com/tawesoft/golib/v2 v2.9.0
-	github.com/tillitis/tkeyclient v1.0.0
+	github.com/tillitis/tkeyclient v1.3.0
 	github.com/tillitis/tkeysign v1.0.0
 	github.com/tillitis/tkeyutil v0.0.7
 	github.com/twpayne/go-pinentry-minimal v0.0.0-20220113210447-2a5dc4396c2a
-	golang.org/x/crypto v0.22.0
+	golang.org/x/crypto v0.40.0
 )
 
 require (
 	github.com/alessio/shellescape v1.4.1 // indirect
 	github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab // indirect
+	github.com/ccoveille/go-safecast/v2 v2.0.0 // indirect
 	github.com/creack/goselect v0.1.2 // indirect
 	github.com/gen2brain/beeep v0.0.0-20230907135156-1a38885a97fc // indirect
 	github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect
@@ -34,9 +35,10 @@
 	github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
 	go.bug.st/serial v1.6.2 // indirect
 	golang.org/x/exp v0.0.0-20221208152030-732eee02a75a // indirect
-	golang.org/x/mod v0.14.0 // indirect
-	golang.org/x/sys v0.19.0 // indirect
-	golang.org/x/term v0.19.0 // indirect
-	golang.org/x/text v0.14.0 // indirect
-	golang.org/x/tools v0.16.0 // indirect
+	golang.org/x/mod v0.25.0 // indirect
+	golang.org/x/sync v0.16.0 // indirect
+	golang.org/x/sys v0.34.0 // indirect
+	golang.org/x/term v0.33.0 // indirect
+	golang.org/x/text v0.27.0 // indirect
+	golang.org/x/tools v0.34.0 // indirect
 )
diff -Nru tkey-ssh-agent-1.0.0+ds/.goreleaser.yaml tkey-ssh-agent-1.1.0+ds/.goreleaser.yaml
--- tkey-ssh-agent-1.0.0+ds/.goreleaser.yaml	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/.goreleaser.yaml	2026-03-16 14:10:28.000000000 +0100
@@ -1,4 +1,5 @@
 # Make sure to check the documentation at https://goreleaser.com
+version: 2
 release:
   draft: true
   replace_existing_draft: true
@@ -77,7 +78,7 @@
       -w -X main.version={{ .Version }} -X main.signerAppNoTouch= -buildid=
 
     hooks:
-      pre: sh -c "cd ./cmd/tkey-ssh-agent && go-winres make --arch amd64"
+      pre: sh -c "cd ./cmd/tkey-ssh-agent && ../../gotools/go-winres make --arch amd64"
 
   - id: windows-tray
     main: ./cmd/tkey-ssh-agent-tray
@@ -99,13 +100,14 @@
     # Custom ldflags mostly to avoid setting main.date which for some
     # reason is default
     ldflags:
-      -w -H windowsgui -buildid=
+      -w -H windowsgui -X main.version={{ .Version }} -buildid=
 
     hooks:
-      pre: sh -c "cd ./cmd/tkey-ssh-agent-tray && go-winres make --arch amd64"
+      pre: sh -c "cd ./cmd/tkey-ssh-agent-tray && ../../gotools/go-winres make --arch amd64"
 
 universal_binaries:
-  - ids:
+  - id: tkey-ssh-agent
+    ids:
       - darwin
     replace: true
     name_template: "tkey-ssh-agent"
@@ -220,7 +222,7 @@
 checksum:
   name_template: 'checksums.txt'
 snapshot:
-  name_template: "{{ incpatch .Version }}-next"
+  version_template: "{{ incpatch .Version }}-next"
 changelog:
   sort:
   filters:
diff -Nru tkey-ssh-agent-1.0.0+ds/go.sum tkey-ssh-agent-1.1.0+ds/go.sum
--- tkey-ssh-agent-1.0.0+ds/go.sum	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/go.sum	2026-03-16 14:10:28.000000000 +0100
@@ -6,10 +6,13 @@
 github.com/apenwarr/fixconsole v0.0.0-20191012055117-5a9f6489cc29/go.mod h1:JYWahgHer+Z2xbsgHPtaDYVWzeHDminu+YIBWkxpCAY=
 github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab h1:CMGzRRCjnD50RjUFSArBLuCxiDvdp7b8YPAcikBEQ+k=
 github.com/apenwarr/w32 v0.0.0-20190407065021-aa00fece76ab/go.mod h1:nfFtvHn2Hgs9G1u0/J6LHQv//EksNC+7G8vXmd1VTJ8=
+github.com/ccoveille/go-safecast/v2 v2.0.0 h1:+5eyITXAUj3wMjad6cRVJKGnC7vDS55zk0INzJagub0=
+github.com/ccoveille/go-safecast/v2 v2.0.0/go.mod h1:JIYA4CAR33blIDuE6fSwCp2sz1oOBahXnvmdBhOAABs=
 github.com/creack/goselect v0.1.2 h1:2DNy14+JPjRBgPzAd1thbQp4BSIihxcBf0IXhQXDRa0=
 github.com/creack/goselect v0.1.2/go.mod h1:a/NhLweNvqIYMuxcMOuWY516Cimucms3DglDzQP3hKY=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/gen2brain/beeep v0.0.0-20230907135156-1a38885a97fc h1:NNgdMgPX3j33uEAoVVxNxillDPnxT0xbGv8uh4CKIAo=
 github.com/gen2brain/beeep v0.0.0-20230907135156-1a38885a97fc/go.mod h1:0W7dI87PvXJ1Sjs0QPvWXKcQmNERY77e8l7GFhZB/s4=
 github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 h1:NRUJuo3v3WGC/g5YiyF790gut6oQr5f3FBI88Wv0dx4=
@@ -32,6 +35,8 @@
 github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4/go.mod h1:kW3HQ4UdaAyrUCSSDR4xUzBKW6O2iA4uHhk7AtyYp10=
 github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
 github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
 github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw=
@@ -43,12 +48,13 @@
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=
 github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af/go.mod h1:4F09kP5F+am0jAwlQLddpoMDM+iewkxxt6nxUQ5nq5o=
 github.com/tawesoft/golib/v2 v2.9.0 h1:R84RNHs+A8UYuRVlLKVpb3Xzp1bvyP2qgAAZQ/ZRXfA=
 github.com/tawesoft/golib/v2 v2.9.0/go.mod h1:jGw0nDuOLpji2TW5QfSQLcWnZ4WtS4TizzRuXu3hZ/Y=
-github.com/tillitis/tkeyclient v1.0.0 h1:Ox9mEwxon9SRUconYZXrcqrm0YxpMCblMZLPXzPtKro=
-github.com/tillitis/tkeyclient v1.0.0/go.mod h1:dg2fyhB6szX7n1QIf19WcWtl/ueBPQYVlTCjY/kG5pM=
+github.com/tillitis/tkeyclient v1.3.0 h1:fUlghD+xvtL+qoajgrsetCC7KPwSfpjDDgqxMOBA2VU=
+github.com/tillitis/tkeyclient v1.3.0/go.mod h1:7VtzyEjm08Wf+1zdrs20HsvM+WzhyztinvGG2/HY+Is=
 github.com/tillitis/tkeysign v1.0.0 h1:qB4UZQzIRsEsQg1hLZE1bhQmk37O4c2qTStn5CAuhlg=
 github.com/tillitis/tkeysign v1.0.0/go.mod h1:7byJbKOEwCjCcUT9lw8WARl+0xO1fFrq+QMJc4MYiqA=
 github.com/tillitis/tkeyutil v0.0.7 h1:+QE4hvthUextFDiLt8Ssxffyn0FPNwDcloahS0sPSQU=
@@ -57,22 +63,24 @@
 github.com/twpayne/go-pinentry-minimal v0.0.0-20220113210447-2a5dc4396c2a/go.mod h1:ARJJXqNuaxVS84jX6ST52hQh0TtuQZWABhTe95a6BI4=
 go.bug.st/serial v1.6.2 h1:kn9LRX3sdm+WxWKufMlIRndwGfPWsH1/9lCWXQCasq8=
 go.bug.st/serial v1.6.2/go.mod h1:UABfsluHAiaNI+La2iESysd9Vetq7VRdpxvjx7CmmOE=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
+golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
 golang.org/x/exp v0.0.0-20221208152030-732eee02a75a h1:4iLhBPcpqFmylhnkbY3W0ONLUYYkDAW9xMFLfxgsvCw=
 golang.org/x/exp v0.0.0-20221208152030-732eee02a75a/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
-golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
-golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
+golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
+golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
+golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
+golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
 golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM=
-golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
+golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
+golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
+golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
+golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
+golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
+golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
+golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff -Nru tkey-ssh-agent-1.0.0+ds/Makefile tkey-ssh-agent-1.1.0+ds/Makefile
--- tkey-ssh-agent-1.0.0+ds/Makefile	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/Makefile	2026-03-16 14:10:28.000000000 +0100
@@ -45,7 +45,7 @@
 
 .PHONY: podman
 podman:
-	podman run --rm --mount type=bind,source=$(CURDIR),target=/src -w /src -it ghcr.io/tillitis/tkey-builder:4 make -j
+	podman run --rm --mount type=bind,source=$(CURDIR),target=/src -w /src -it ghcr.io/tillitis/tkey-builder:5rc2 make -j
 
 .PHONY: check-signer-hash
 check-signer-hash:
@@ -68,7 +68,7 @@
 tkey-ssh-agent-tray.exe:
 	$(MAKE) -C gotools go-winres
 	cd ./cmd/tkey-ssh-agent-tray && ../../gotools/go-winres make --arch amd64
-	GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-H windowsgui" -trimpath -buildvcs=false ./cmd/tkey-ssh-agent-tray
+	GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-H windowsgui -X main.version=$(TKEY_SSH_AGENT_VERSION)" -trimpath -buildvcs=false ./cmd/tkey-ssh-agent-tray
 
 .PHONY: clean
 clean:
diff -Nru tkey-ssh-agent-1.0.0+ds/README.md tkey-ssh-agent-1.1.0+ds/README.md
--- tkey-ssh-agent-1.0.0+ds/README.md	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/README.md	2026-03-16 14:10:28.000000000 +0100
@@ -114,14 +114,14 @@
 run:
 
 ```
-$ podman pull ghcr.io/tillitis/tkey-builder:4
+$ podman pull ghcr.io/tillitis/tkey-builder:5rc2
 $ make podman
 ```
 
 or run it directly with Podman:
 
 ```
-$ podman run --rm --mount type=bind,source=$(CURDIR),target=/src --mount type=bind,source=$(CURDIR)/../tkey-libs,target=/tkey-libs -w /src -it ghcr.io/tillitis/tkey-builder:4 make -j
+$ podman run --rm --mount type=bind,source=$(CURDIR),target=/src --mount type=bind,source=$(CURDIR)/../tkey-libs,target=/tkey-libs -w /src -it ghcr.io/tillitis/tkey-builder:5rc2 make -j
 ```
 
 Note that building with Podman like this by default creates a Linux
diff -Nru tkey-ssh-agent-1.0.0+ds/system/tkey-ssh-agent.1 tkey-ssh-agent-1.1.0+ds/system/tkey-ssh-agent.1
--- tkey-ssh-agent-1.0.0+ds/system/tkey-ssh-agent.1	2024-11-15 11:05:42.000000000 +0100
+++ tkey-ssh-agent-1.1.0+ds/system/tkey-ssh-agent.1	2026-03-16 14:10:28.000000000 +0100
@@ -10,6 +10,7 @@
 .Nm
 .Op Fl L | -list-ports
 .Op Fl a | -agent-path Ar path
+.Op Fl -force-full-uss
 .Op Fl -help
 .Op Fl p | -show-pubkey
 .Op Fl -pinentry Ar command
@@ -67,6 +68,9 @@
 Supplied Secret to be mixed into the TKey identity. Use '-' (dash) to
 read from stdin. The full contents are hashed unmodified (i.e.
 newlines are not stripped).
+.It Fl -force-full-uss
+Force the use of a full 32 byte USS digest. For backwards compatibility
+the default is 31 bytes.
 .It Fl -version
 Output version information.
 .El

Attachment: signature.asc
Description: PGP signature

Reply via email to