diff options
| author | Felix Hanley <felix@userspace.com.au> | 2025-07-22 07:50:24 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2025-07-22 07:50:24 +0000 |
| commit | faa33e32b5e967fdfeac96bfc39ed3d94f9514ac (patch) | |
| tree | b7605c2443a054daf1dfceca2d415d5b86445166 /vendor/go.step.sm/crypto/sshutil/sshutil.go | |
| parent | f82adc0030a993ff25cbf70cf81d75900f455e6a (diff) | |
| download | caddy-faa33e32b5e967fdfeac96bfc39ed3d94f9514ac.tar.gz caddy-faa33e32b5e967fdfeac96bfc39ed3d94f9514ac.tar.bz2 | |
Upgrade to caddy v2.10.0
Diffstat (limited to 'vendor/go.step.sm/crypto/sshutil/sshutil.go')
| -rw-r--r-- | vendor/go.step.sm/crypto/sshutil/sshutil.go | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/vendor/go.step.sm/crypto/sshutil/sshutil.go b/vendor/go.step.sm/crypto/sshutil/sshutil.go index b21ff65..c309c2d 100644 --- a/vendor/go.step.sm/crypto/sshutil/sshutil.go +++ b/vendor/go.step.sm/crypto/sshutil/sshutil.go @@ -2,14 +2,12 @@ package sshutil import ( "crypto" - "crypto/dsa" // support for DSA fingerprints - "crypto/ecdh" + "crypto/dsa" //nolint:staticcheck // support for DSA fingerprints "crypto/ecdsa" "crypto/ed25519" "crypto/elliptic" "crypto/rsa" "fmt" - "math/big" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" @@ -50,17 +48,13 @@ func cryptoSKPublicKey(pub ssh.PublicKey) (crypto.PublicKey, error) { if err := ssh.Unmarshal(pub.Marshal(), &w); err != nil { return nil, err } - - p, err := ecdh.P256().NewPublicKey(w.Key) - if err != nil { - return nil, fmt.Errorf("failed decoding ECDSA key: %w", err) + key := new(ecdsa.PublicKey) + key.Curve = elliptic.P256() + key.X, key.Y = elliptic.Unmarshal(key.Curve, w.Key) + if key.X == nil || key.Y == nil { + return nil, fmt.Errorf("invalid curve point") } - - return &ecdsa.PublicKey{ - Curve: elliptic.P256(), - X: big.NewInt(0).SetBytes(p.Bytes()[1:33]), - Y: big.NewInt(0).SetBytes(p.Bytes()[33:]), - }, nil + return key, nil case "sk-ssh-ed25519@openssh.com": var w struct { Name string |
