7d5563b6ded1fcd35b5833b2b478e83e0ef42d42

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

feat: bump wish and keygen

Diff

  1diff --git a/cmd/soft/hook.go b/cmd/soft/hook.go
  2index 0e3d78fcc9d3b8c4b9c411baae754366e2b7b8d4..52619c409ac8d84105062c22bc9fc8ea97dad14d 100644
  3--- a/cmd/soft/hook.go
  4+++ b/cmd/soft/hook.go
  5@@ -176,28 +176,20 @@ func commonInit() (c *gossh.Client, s *gossh.Session, err error) {
  6 
  7 func newClient(cfg *config.Config) (*gossh.Client, error) {
  8 	// Only accept the server's host key.
  9-	pk, err := keygen.New(cfg.SSH.KeyPath, nil, keygen.Ed25519)
 10+	pk, err := keygen.New(cfg.SSH.KeyPath, keygen.WithKeyType(keygen.Ed25519))
 11 	if err != nil {
 12 		return nil, err
 13 	}
 14-	hostKey, err := gossh.ParsePrivateKey(pk.PrivateKeyPEM())
 15-	if err != nil {
 16-		return nil, err
 17-	}
 18-	ik, err := keygen.New(cfg.SSH.InternalKeyPath, nil, keygen.Ed25519)
 19-	if err != nil {
 20-		return nil, err
 21-	}
 22-	k, err := gossh.ParsePrivateKey(ik.PrivateKeyPEM())
 23+	ik, err := keygen.New(cfg.SSH.InternalKeyPath, keygen.WithKeyType(keygen.Ed25519))
 24 	if err != nil {
 25 		return nil, err
 26 	}
 27 	cc := &gossh.ClientConfig{
 28 		User: "internal",
 29 		Auth: []gossh.AuthMethod{
 30-			gossh.PublicKeys(k),
 31+			gossh.PublicKeys(ik.Signer()),
 32 		},
 33-		HostKeyCallback: gossh.FixedHostKey(hostKey.PublicKey()),
 34+		HostKeyCallback: gossh.FixedHostKey(pk.PublicKey()),
 35 	}
 36 	c, err := gossh.Dial("tcp", cfg.SSH.ListenAddr, cc)
 37 	if err != nil {
 38diff --git a/go.mod b/go.mod
 39index 33acc20812d6494b3becd8bf33005b65d2a51626..e6c7c0fe02ae29e8dc6eb4c6d5da581ee5d5bea9 100644
 40--- a/go.mod
 41+++ b/go.mod
 42@@ -8,7 +8,7 @@ require (
 43 	github.com/charmbracelet/bubbletea v0.23.2
 44 	github.com/charmbracelet/glamour v0.6.0
 45 	github.com/charmbracelet/lipgloss v0.7.1
 46-	github.com/charmbracelet/wish v1.1.0
 47+	github.com/charmbracelet/wish v1.1.1
 48 	github.com/dustin/go-humanize v1.0.1
 49 	github.com/go-git/go-git/v5 v5.6.1
 50 	github.com/matryer/is v1.4.1
 51@@ -20,7 +20,7 @@ require (
 52 require (
 53 	github.com/aymanbagabas/go-osc52 v1.2.2
 54 	github.com/caarlos0/env/v7 v7.1.0
 55-	github.com/charmbracelet/keygen v0.3.0
 56+	github.com/charmbracelet/keygen v0.4.2
 57 	github.com/charmbracelet/log v0.2.1
 58 	github.com/charmbracelet/ssh v0.0.0-20221117183211-483d43d97103
 59 	github.com/gobwas/glob v0.2.3
 60@@ -33,7 +33,7 @@ require (
 61 	github.com/robfig/cron/v3 v3.0.1
 62 	github.com/spf13/cobra v1.6.1
 63 	goji.io v2.0.2+incompatible
 64-	golang.org/x/crypto v0.7.0
 65+	golang.org/x/crypto v0.8.0
 66 	golang.org/x/sync v0.1.0
 67 	gopkg.in/yaml.v3 v3.0.1
 68 	modernc.org/sqlite v1.21.1
 69@@ -62,7 +62,6 @@ require (
 70 	github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
 71 	github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 // indirect
 72 	github.com/microcosm-cc/bluemonday v1.0.21 // indirect
 73-	github.com/mitchellh/go-homedir v1.1.0 // indirect
 74 	github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 // indirect
 75 	github.com/muesli/cancelreader v0.2.2 // indirect
 76 	github.com/muesli/mango v0.1.0 // indirect
 77@@ -78,10 +77,10 @@ require (
 78 	github.com/yuin/goldmark v1.5.2 // indirect
 79 	github.com/yuin/goldmark-emoji v1.0.1 // indirect
 80 	golang.org/x/mod v0.8.0 // indirect
 81-	golang.org/x/net v0.8.0 // indirect
 82-	golang.org/x/sys v0.6.0 // indirect
 83-	golang.org/x/term v0.6.0 // indirect
 84-	golang.org/x/text v0.8.0 // indirect
 85+	golang.org/x/net v0.9.0 // indirect
 86+	golang.org/x/sys v0.7.0 // indirect
 87+	golang.org/x/term v0.7.0 // indirect
 88+	golang.org/x/text v0.9.0 // indirect
 89 	golang.org/x/tools v0.6.0 // indirect
 90 	google.golang.org/protobuf v1.28.1 // indirect
 91 	lukechampine.com/uint128 v1.2.0 // indirect
 92diff --git a/go.sum b/go.sum
 93index f1d281db3f42f8f34bd08653b8d7bd3ac0d618e7..7dd4d1913889a7507f073ebeb5bf7e27d033ec1d 100644
 94--- a/go.sum
 95+++ b/go.sum
 96@@ -79,8 +79,11 @@ github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+
 97 github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc=
 98 github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc=
 99 github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
100-github.com/charmbracelet/keygen v0.3.0 h1:mXpsQcH7DDlST5TddmXNXjS0L7ECk4/kLQYyBcsan2Y=
101 github.com/charmbracelet/keygen v0.3.0/go.mod h1:1ukgO8806O25lUZ5s0IrNur+RlwTBERlezdgW71F5rM=
102+github.com/charmbracelet/keygen v0.4.1 h1:ylwHCcCrb4UL2nHrUvVwME+/RFACcX1sjopOrIkc14g=
103+github.com/charmbracelet/keygen v0.4.1/go.mod h1:4e4FT3HSdLU/u83RfJWvzJIaVb8aX4MxtDlfXwpDJaI=
104+github.com/charmbracelet/keygen v0.4.2 h1:TNHua2MlXc6W1dQB2iW4msSZGKlb8RtxtmYDWUs4iRw=
105+github.com/charmbracelet/keygen v0.4.2/go.mod h1:4e4FT3HSdLU/u83RfJWvzJIaVb8aX4MxtDlfXwpDJaI=
106 github.com/charmbracelet/lipgloss v0.5.0/go.mod h1:EZLha/HbzEt7cYqdFPovlqy5FZPj0xFhg5SaqxScmgs=
107 github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk=
108 github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
109@@ -92,6 +95,10 @@ github.com/charmbracelet/ssh v0.0.0-20221117183211-483d43d97103 h1:wpHMERIN0pQZE
110 github.com/charmbracelet/ssh v0.0.0-20221117183211-483d43d97103/go.mod h1:0Vm2/8yBljiLDnGJHU8ehswfawrEybGk33j5ssqKQVM=
111 github.com/charmbracelet/wish v1.1.0 h1:0ArX9SOG70saqd23NYjoS56oLPVNgqcQegkz1Lw+4zY=
112 github.com/charmbracelet/wish v1.1.0/go.mod h1:yHbm0hs/qX4lFE7nrhAcXjFYc8bxMIfSqJOfOYfwyYo=
113+github.com/charmbracelet/wish v1.1.1-0.20230412142535-b02fea5b2633 h1:39rtZkUFcDgFfmgejfKYmBvsFYbEXEaFF2JmB28o2vY=
114+github.com/charmbracelet/wish v1.1.1-0.20230412142535-b02fea5b2633/go.mod h1:Q8b4DURo6cmQ4G3LnyoxDlWmN3LHYdiXfOjEw8oZcEM=
115+github.com/charmbracelet/wish v1.1.1 h1:KdICASKd2oh2JPvk1Z4CJtAi97cFErXF7NKienPICO4=
116+github.com/charmbracelet/wish v1.1.1/go.mod h1:xh4KZpSULw+Xqb9bcbhw92QAinVB75CVLWrFuyY6IVs=
117 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
118 github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
119 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
120@@ -278,7 +285,6 @@ github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75 h1:Pijfgr7ZuvX
121 github.com/mcuadros/go-version v0.0.0-20190308113854-92cdf37c5b75/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo=
122 github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg=
123 github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM=
124-github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
125 github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
126 github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM=
127 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
128@@ -414,8 +420,9 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
129 golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
130 golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
131 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
132-golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
133 golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
134+golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
135+golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
136 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
137 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
138 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
139@@ -490,8 +497,9 @@ golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfS
140 golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
141 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
142 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
143-golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
144 golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
145+golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
146+golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
147 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
148 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
149 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
150@@ -570,15 +578,17 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc
151 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
152 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
153 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
154-golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
155 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
156+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
157+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
158 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
159 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
160 golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
161 golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
162 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
163-golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
164 golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
165+golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
166+golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
167 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
168 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
169 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
170@@ -588,8 +598,9 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
171 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
172 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
173 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
174-golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
175 golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
176+golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
177+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
178 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
179 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
180 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
181diff --git a/server/cmd/hook.go b/server/cmd/hook.go
182index ee071f65ab91e3ec70942fccfb63f7e581693880..87a9184cb46e988aa5646a328dca6654f1b4a0b8 100644
183--- a/server/cmd/hook.go
184+++ b/server/cmd/hook.go
185@@ -9,7 +9,6 @@ import (
186 	"github.com/charmbracelet/soft-serve/server/hooks"
187 	"github.com/charmbracelet/ssh"
188 	"github.com/spf13/cobra"
189-	gossh "golang.org/x/crypto/ssh"
190 )
191 
192 // hookCommand handles Soft Serve internal API git hook requests.
193@@ -118,16 +117,12 @@ func hookCommand() *cobra.Command {
194 func checkIfInternal(cmd *cobra.Command, _ []string) error {
195 	cfg, s := fromContext(cmd)
196 	pk := s.PublicKey()
197-	kp, err := keygen.New(cfg.SSH.InternalKeyPath, nil, keygen.Ed25519)
198+	kp, err := keygen.New(cfg.SSH.InternalKeyPath, keygen.WithKeyType(keygen.Ed25519))
199 	if err != nil {
200 		logger.Errorf("failed to read internal key: %v", err)
201 		return err
202 	}
203-	priv, err := gossh.ParsePrivateKey(kp.PrivateKeyPEM())
204-	if err != nil {
205-		return err
206-	}
207-	if !ssh.KeysEqual(pk, priv.PublicKey()) {
208+	if !ssh.KeysEqual(pk, kp.PublicKey()) {
209 		return ErrUnauthorized
210 	}
211 	return nil
212diff --git a/server/config/config.go b/server/config/config.go
213index d23d29d6cdeb506325da2c4a49a3e096a5f15a81..b0d74a041a5c5263feb73374b28df0dfb068208e 100644
214--- a/server/config/config.go
215+++ b/server/config/config.go
216@@ -142,9 +142,9 @@ func DefaultConfig() *Config {
217 		SSH: SSHConfig{
218 			ListenAddr:      ":23231",
219 			PublicURL:       "ssh://localhost:23231",
220-			KeyPath:         filepath.Join("ssh", "soft_serve_host"),
221-			ClientKeyPath:   filepath.Join("ssh", "soft_serve_client"),
222-			InternalKeyPath: filepath.Join("ssh", "soft_serve_internal"),
223+			KeyPath:         filepath.Join("ssh", "soft_serve_host_ed25519"),
224+			ClientKeyPath:   filepath.Join("ssh", "soft_serve_client_ed25519"),
225+			InternalKeyPath: filepath.Join("ssh", "soft_serve_internal_ed25519"),
226 			MaxTimeout:      0,
227 			IdleTimeout:     120,
228 		},
229diff --git a/server/server.go b/server/server.go
230index ab34933a0b928d1070353f75613fd83fa154ee6e..84fe0fda6292303e9610fb63fe7b76b1d16bd498 100644
231--- a/server/server.go
232+++ b/server/server.go
233@@ -52,26 +52,26 @@ func NewServer(ctx context.Context, cfg *config.Config) (*Server, error) {
234 		cfg = cfg.WithBackend(sb)
235 
236 		// Create internal key.
237-		ikp, err := keygen.NewWithWrite(
238+		ikp, err := keygen.New(
239 			cfg.SSH.InternalKeyPath,
240-			nil,
241-			keygen.Ed25519,
242+			keygen.WithKeyType(keygen.Ed25519),
243+			keygen.WithWrite(),
244 		)
245 		if err != nil {
246 			return nil, err
247 		}
248-		cfg.InternalPublicKey = string(ikp.PublicKey())
249+		cfg.InternalPublicKey = ikp.AuthorizedKey()
250 
251 		// Create client key.
252-		ckp, err := keygen.NewWithWrite(
253+		ckp, err := keygen.New(
254 			cfg.SSH.ClientKeyPath,
255-			nil,
256-			keygen.Ed25519,
257+			keygen.WithKeyType(keygen.Ed25519),
258+			keygen.WithWrite(),
259 		)
260 		if err != nil {
261 			return nil, err
262 		}
263-		cfg.ClientPublicKey = string(ckp.PublicKey())
264+		cfg.ClientPublicKey = ckp.AuthorizedKey()
265 	}
266 
267 	srv := &Server{