- commit
- 163f987
- parent
- 3e46541
- author
- Eric Bower
- date
- 2026-02-24 21:04:36 -0500 EST
fix(ssh): remove last traces of charm/ssh
6 files changed,
+11,
-21
+1,
-0
1@@ -6,6 +6,7 @@ Use spec: https://common-changelog.org/
2
3 ### Changed
4
5+- Upgraded to `go1.25`
6 - Removed charm's `wish` with pico's `pssh`
7
8 ## v2026-02-24
+8,
-4
1@@ -1,14 +1,14 @@
2 package git
3
4 import (
5+ "bytes"
6 "encoding/base64"
7 "fmt"
8 "log/slog"
9 "strings"
10
11- "github.com/charmbracelet/ssh"
12 "github.com/jmoiron/sqlx"
13- gossh "golang.org/x/crypto/ssh"
14+ "golang.org/x/crypto/ssh"
15 )
16
17 type Backend struct {
18@@ -74,7 +74,7 @@ func (be *Backend) Pubkey(pk ssh.PublicKey) string {
19 }
20
21 func (be *Backend) KeyForFingerprint(pk ssh.PublicKey) string {
22- return gossh.FingerprintSHA256(pk)
23+ return ssh.FingerprintSHA256(pk)
24 }
25
26 func (be *Backend) PubkeyToPublicKey(pubkey string) (ssh.PublicKey, error) {
27@@ -91,9 +91,13 @@ func (be *Backend) KeysEqual(pka, pkb string) bool {
28 return pka == pkb
29 }
30
31+func (be *Backend) PublicKeysEqual(a, b ssh.PublicKey) bool {
32+ return bytes.Equal(a.Marshal(), b.Marshal())
33+}
34+
35 func (be *Backend) IsAdmin(pk ssh.PublicKey) bool {
36 for _, apk := range be.Cfg.Admins {
37- if ssh.KeysEqual(pk, apk) {
38+ if be.PublicKeysEqual(pk, apk) {
39 return true
40 }
41 }
M
cfg.go
+1,
-1
1@@ -7,11 +7,11 @@ import (
2 "strings"
3 "time"
4
5- "github.com/charmbracelet/ssh"
6 "github.com/knadh/koanf/parsers/toml"
7 "github.com/knadh/koanf/providers/env"
8 "github.com/knadh/koanf/providers/file"
9 "github.com/knadh/koanf/v2"
10+ "golang.org/x/crypto/ssh"
11 )
12
13 var k = koanf.New(".")
M
go.mod
+0,
-5
1@@ -5,7 +5,6 @@ go 1.25
2 require (
3 github.com/alecthomas/chroma/v2 v2.23.1
4 github.com/bluekeyes/go-gitdiff v0.8.0
5- github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3
6 github.com/gkampitakis/go-snaps v0.5.15
7 github.com/gorilla/feeds v1.2.0
8 github.com/jmoiron/sqlx v1.4.0
9@@ -22,14 +21,10 @@ require (
10 )
11
12 require (
13- github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
14 github.com/antoniomika/syncmap v1.0.0 // indirect
15 github.com/beorn7/perks v1.0.1 // indirect
16 github.com/cespare/xxhash/v2 v2.3.0 // indirect
17- github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651 // indirect
18- github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516 // indirect
19 github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
20- github.com/creack/pty v1.1.21 // indirect
21 github.com/dlclark/regexp2 v1.11.5 // indirect
22 github.com/dustin/go-humanize v1.0.1 // indirect
23 github.com/fsnotify/fsnotify v1.7.0 // indirect
M
go.sum
+0,
-10
1@@ -12,8 +12,6 @@ github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ
2 github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
3 github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
4 github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
5-github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
6-github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
7 github.com/antoniomika/syncmap v1.0.0 h1:iFSfbQFQOvHZILFZF+hqWosO0no+W9+uF4y2VEyMKWU=
8 github.com/antoniomika/syncmap v1.0.0/go.mod h1:fK2829foEYnO4riNfyUn0SHQZt4ue3DStYjGU+sJj38=
9 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA=
10@@ -26,12 +24,6 @@ github.com/bluekeyes/go-gitdiff v0.8.0 h1:Nn1wfw3/XeKoc3lWk+2bEXGUHIx36kj80FM1gV
11 github.com/bluekeyes/go-gitdiff v0.8.0/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE=
12 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
13 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
14-github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3 h1:BI6Vno579jK/NKUwrvboHtMfF2On6kh6mU1cguf5+vQ=
15-github.com/charmbracelet/ssh v0.0.0-20240301204039-e79ff702f5b3/go.mod h1:wUZ0VTrLI5ixIbYOSRHrqrZnfj8EXgLZOOvQYAQ2f18=
16-github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651 h1:3RXpZWGWTOeVXCTv0Dnzxdv/MhNUkBfEcbaTY0zrTQI=
17-github.com/charmbracelet/x/errors v0.0.0-20240117030013-d31dba354651/go.mod h1:2P0UgXMEa6TsToMSuFqKFQR+fZTO9CNGUNokkPatT/0=
18-github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516 h1:wL/PiybPudKHv/LDgAUqS9eoPQr3pOAmzShMPG99cXA=
19-github.com/charmbracelet/x/exp/term v0.0.0-20240229115032-4b79243a3516/go.mod h1:ntNL6rRIDmBHKUmo6ZKt344wCTcrPsSrfVj72qT8A5U=
20 github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
21 github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
22 github.com/clipperhouse/uax29/v2 v2.5.0 h1:x7T0T4eTHDONxFJsL94uKNKPHrclyFI0lm7+w94cO8U=
23@@ -41,8 +33,6 @@ github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6
24 github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=
25 github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
26 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
27-github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
28-github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
29 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
30 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
31 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
M
util.go
+1,
-1
1@@ -12,7 +12,7 @@ import (
2 "strings"
3
4 "github.com/bluekeyes/go-gitdiff/gitdiff"
5- "github.com/charmbracelet/ssh"
6+ "golang.org/x/crypto/ssh"
7 )
8
9 var (