Skip to content

Commit bd6437f

Browse files
authored
Merge pull request #155 from smlx/dependabot/go_modules/golang.org/x/crypto-0.7.0
chore: bump golang.org/x/crypto from 0.0.0-20200820211705-5c72a883971a to 0.7.0
2 parents 6d663fd + 56388aa commit bd6437f

File tree

14 files changed

+154
-49
lines changed

14 files changed

+154
-49
lines changed

cmd/piv-agent/setup.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
"github.com/smlx/piv-agent/internal/pinentry"
1111
"github.com/smlx/piv-agent/internal/securitykey"
12-
"golang.org/x/crypto/ssh/terminal"
12+
"golang.org/x/term"
1313
)
1414

1515
// SetupCmd represents the setup command.
@@ -24,7 +24,7 @@ type SetupCmd struct {
2424
// interactiveNewPIN prompts twice for a new PIN.
2525
func interactiveNewPIN() (uint64, error) {
2626
fmt.Print("Enter a new PIN/PUK (6-8 digits): ")
27-
rawPIN, err := terminal.ReadPassword(int(os.Stdin.Fd()))
27+
rawPIN, err := term.ReadPassword(int(os.Stdin.Fd()))
2828
fmt.Println()
2929
if err != nil {
3030
return 0, fmt.Errorf("couldn't read PIN/PUK: %w", err)
@@ -34,7 +34,7 @@ func interactiveNewPIN() (uint64, error) {
3434
return 0, fmt.Errorf("invalid characters: %w", err)
3535
}
3636
fmt.Print("Repeat PIN/PUK: ")
37-
repeat, err := terminal.ReadPassword(int(os.Stdin.Fd()))
37+
repeat, err := term.ReadPassword(int(os.Stdin.Fd()))
3838
fmt.Println()
3939
if err != nil {
4040
return 0, fmt.Errorf("couldn't read PIN/PUK: %w", err)

cmd/piv-agent/setupslots.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
"github.com/smlx/piv-agent/internal/pinentry"
1010
"github.com/smlx/piv-agent/internal/securitykey"
11-
"golang.org/x/crypto/ssh/terminal"
11+
"golang.org/x/term"
1212
)
1313

1414
// SetupSlotsCmd represents the setup command.
@@ -23,7 +23,7 @@ type SetupSlotsCmd struct {
2323
// interactivePIN prompts once for an existing PIN.
2424
func interactivePIN() (uint64, error) {
2525
fmt.Print("Enter the PIN/PUK (6-8 digits): ")
26-
rawPIN, err := terminal.ReadPassword(int(os.Stdin.Fd()))
26+
rawPIN, err := term.ReadPassword(int(os.Stdin.Fd()))
2727
fmt.Println()
2828
if err != nil {
2929
return 0, fmt.Errorf("couldn't read PIN/PUK: %w", err)

go.mod

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/smlx/piv-agent
33
go 1.19
44

55
require (
6+
github.com/ProtonMail/go-crypto v0.0.0-20230316153859-cb82d937a5d9
67
github.com/alecthomas/kong v0.7.1
78
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
89
github.com/davecgh/go-spew v1.1.1
@@ -13,11 +14,13 @@ require (
1314
github.com/twpayne/go-pinentry-minimal v0.0.0-20220113210447-2a5dc4396c2a
1415
github.com/x13a/go-launch v0.0.0-20210715084817-fd409384939b
1516
go.uber.org/zap v1.24.0
16-
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a
17+
golang.org/x/crypto v0.7.0
1718
golang.org/x/sync v0.1.0
19+
golang.org/x/term v0.6.0
1820
)
1921

2022
require (
23+
github.com/cloudflare/circl v1.1.0 // indirect
2124
github.com/go-toast/toast v0.0.0-20190211030409-01e6764cf0a4 // indirect
2225
github.com/godbus/dbus/v5 v5.0.3 // indirect
2326
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
@@ -27,5 +30,7 @@ require (
2730
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
2831
go.uber.org/atomic v1.7.0 // indirect
2932
go.uber.org/multierr v1.6.0 // indirect
30-
golang.org/x/sys v0.1.0 // indirect
33+
golang.org/x/sys v0.6.0 // indirect
3134
)
35+
36+
replace github.com/ProtonMail/go-crypto => github.com/smlx/go-crypto v0.0.0-20230324130354-fc893cd601c2

go.sum

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ github.com/alecthomas/kong v0.7.1 h1:azoTh0IOfwlAX3qN9sHWTxACE2oV8Bg2gAwBsMwDQY4
33
github.com/alecthomas/kong v0.7.1/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U=
44
github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE=
55
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
6+
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
7+
github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY=
8+
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
69
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
710
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
811
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -32,6 +35,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
3235
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3336
github.com/smlx/fsm v0.2.1 h1:JKGqQa7Fmmn9UEK1JDh0BTEoeRfsvKdxlrkY3sBonc8=
3437
github.com/smlx/fsm v0.2.1/go.mod h1:LiXoNZ+m3neHxSVsc8KN7ed0mbiY6K/1MKj+HcZzhkQ=
38+
github.com/smlx/go-crypto v0.0.0-20230324130354-fc893cd601c2 h1:n4enF1jCKh/Rokt4i8gTL0alf6k0vf4BxQSYtokPKPU=
39+
github.com/smlx/go-crypto v0.0.0-20230324130354-fc893cd601c2/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
3540
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
3641
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
3742
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
@@ -42,6 +47,7 @@ github.com/twpayne/go-pinentry-minimal v0.0.0-20220113210447-2a5dc4396c2a/go.mod
4247
github.com/x13a/go-launch v0.0.0-20210715084817-fd409384939b h1:rpNT9cyxH8nsCM8htO1SLhrehyt74GFczE9s/O6WkfE=
4348
github.com/x13a/go-launch v0.0.0-20210715084817-fd409384939b/go.mod h1:kfVYr1hMcmOVxZt+2kFzCXf/YRX9Cz+F1QkijZQMaMM=
4449
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
50+
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
4551
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
4652
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
4753
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
@@ -51,14 +57,22 @@ go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
5157
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
5258
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
5359
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
54-
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
55-
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
60+
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
61+
golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
62+
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
5663
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
64+
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
65+
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
5766
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
5867
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
68+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
5969
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
70+
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
71+
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
72+
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
6073
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6174
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
75+
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6276
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
6377
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6478
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -67,14 +81,28 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
6781
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6882
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6983
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
70-
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
71-
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
84+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
85+
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
86+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
87+
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
88+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
89+
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
90+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7291
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
92+
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
93+
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
94+
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
95+
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
7396
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
7497
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
98+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
99+
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
100+
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
75101
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
76102
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
77103
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
104+
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
105+
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
78106
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
79107
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
80108
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

internal/assuan/assuan.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import (
1313
"strconv"
1414
"strings"
1515

16+
"github.com/ProtonMail/go-crypto/openpgp"
1617
"github.com/smlx/fsm"
1718
"github.com/smlx/piv-agent/internal/notify"
1819
"go.uber.org/zap"
19-
"golang.org/x/crypto/openpgp/s2k"
2020
)
2121

2222
// version indicates the version of gpg-agent to emulate.
@@ -162,7 +162,7 @@ func New(rw io.ReadWriter, log *zap.Logger, n *notify.Notify,
162162
return fmt.Errorf("couldn't parse uint %s: %v", assuan.data[0], err)
163163
}
164164
var ok bool
165-
if assuan.hashAlgo, ok = s2k.HashIdToHash(byte(n)); !ok {
165+
if assuan.hashAlgo, ok = openpgp.HashIdToHash(uint8(n)); !ok {
166166
return fmt.Errorf("invalid hash algorithm value: %x", n)
167167
}
168168
hash, err = hexDecode(assuan.data[1:]...)

internal/assuan/assuan_test.go

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"context"
66
"crypto"
7-
"crypto/ecdsa"
87
"encoding/hex"
98
"fmt"
109
"io"
@@ -13,6 +12,10 @@ import (
1312
"testing"
1413
"time"
1514

15+
"github.com/ProtonMail/go-crypto/openpgp"
16+
"github.com/ProtonMail/go-crypto/openpgp/armor"
17+
"github.com/ProtonMail/go-crypto/openpgp/ecdsa"
18+
"github.com/ProtonMail/go-crypto/openpgp/packet"
1619
"github.com/davecgh/go-spew/spew"
1720
"github.com/golang/mock/gomock"
1821
"github.com/smlx/piv-agent/internal/assuan"
@@ -23,14 +26,11 @@ import (
2326
"go.uber.org/zap"
2427
"golang.org/x/crypto/cryptobyte"
2528
"golang.org/x/crypto/cryptobyte/asn1"
26-
"golang.org/x/crypto/openpgp"
27-
"golang.org/x/crypto/openpgp/armor"
28-
"golang.org/x/crypto/openpgp/packet"
2929
)
3030

3131
// MockCryptoSigner is a mock type which implements crypto.Signer
3232
type MockCryptoSigner struct {
33-
PubKey crypto.PublicKey
33+
PubKey *ecdsa.PublicKey
3434
Signature []byte
3535
}
3636

@@ -536,18 +536,15 @@ func TestReadKey(t *testing.T) {
536536
}
537537
// check the responses
538538
for _, expected := range tc.expect {
539-
//spew.Dump(mockConn.WriteBuf.String())
540539
line, err := mockConn.WriteBuf.ReadString(byte('\n'))
540+
if line != expected {
541+
tt.Log("got", spew.Sdump(line))
542+
tt.Log("expected", spew.Sdump(expected))
543+
tt.Fail()
544+
}
541545
if err != nil && err != io.EOF {
542546
tt.Fatal(err)
543547
}
544-
if line != expected {
545-
fmt.Println("got")
546-
spew.Dump(line)
547-
fmt.Println("expected")
548-
spew.Dump(expected)
549-
tt.Fatalf("error")
550-
}
551548
}
552549
})
553550
}

internal/keyservice/gpg/havekey.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"crypto/ecdsa"
66
"crypto/rsa"
77
"fmt"
8+
9+
openpgpecdsa "github.com/ProtonMail/go-crypto/openpgp/ecdsa"
810
)
911

1012
// Keygrips returns a slice of keygrip byteslices; one for each cryptographic
@@ -15,13 +17,17 @@ func (g *KeyService) Keygrips() ([][]byte, error) {
1517
var err error
1618
for _, keyfile := range g.privKeys {
1719
for _, privKey := range keyfile.keys {
18-
switch pubKey := privKey.PublicKey.PublicKey.(type) {
20+
switch openpgpPubKey := privKey.PublicKey.PublicKey.(type) {
1921
case *rsa.PublicKey:
20-
kg, err = keygripRSA(pubKey)
22+
kg, err = keygripRSA(openpgpPubKey)
2123
if err != nil {
2224
return nil, fmt.Errorf("couldn't get keygrip: %w", err)
2325
}
24-
case *ecdsa.PublicKey:
26+
case *openpgpecdsa.PublicKey:
27+
pubKey, err := ecdsaPublicKey(openpgpPubKey)
28+
if err != nil {
29+
return nil, fmt.Errorf("couldn't convert ecdsa public key: %v", err)
30+
}
2531
kg, err = KeygripECDSA(pubKey)
2632
if err != nil {
2733
return nil, fmt.Errorf("couldn't get keygrip: %w", err)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package gpg
2+
3+
// export functions for test suite
4+
var ECDSAPublicKey = ecdsaPublicKey

internal/keyservice/gpg/keyfile.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"os"
77
"path"
88

9-
"golang.org/x/crypto/openpgp/errors"
10-
"golang.org/x/crypto/openpgp/packet"
9+
"github.com/ProtonMail/go-crypto/openpgp/errors"
10+
"github.com/ProtonMail/go-crypto/openpgp/packet"
1111
)
1212

1313
// keyfilePrivateKeys reads the given path and returns any private keys found.

internal/keyservice/gpg/keygrip_test.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import (
99
"strings"
1010
"testing"
1111

12+
"github.com/ProtonMail/go-crypto/openpgp"
13+
"github.com/ProtonMail/go-crypto/openpgp/armor"
14+
openpgpecdsa "github.com/ProtonMail/go-crypto/openpgp/ecdsa"
15+
"github.com/ProtonMail/go-crypto/openpgp/packet"
1216
"github.com/smlx/piv-agent/internal/keyservice/gpg"
13-
"golang.org/x/crypto/openpgp"
14-
"golang.org/x/crypto/openpgp/armor"
15-
"golang.org/x/crypto/openpgp/packet"
1617
)
1718

1819
func TestTrezorCompat(t *testing.T) {
@@ -82,15 +83,19 @@ func TestKeyGrip(t *testing.T) {
8283
if !ok {
8384
tt.Fatal("not an openpgp public key")
8485
}
85-
eccKey, ok := key.PublicKey.(*ecdsa.PublicKey)
86+
eccKey, ok := key.PublicKey.(*openpgpecdsa.PublicKey)
8687
if !ok {
8788
tt.Fatal("not an ecdsa public key")
8889
}
89-
if eccKey.Curve != elliptic.P256() {
90+
pubKey, err := gpg.ECDSAPublicKey(eccKey)
91+
if err != nil {
92+
tt.Fatal(err)
93+
}
94+
if pubKey.Curve != elliptic.P256() {
9095
tt.Fatal("wrong curve")
9196
}
9297

93-
keygrip, err := gpg.KeygripECDSA(eccKey)
98+
keygrip, err := gpg.KeygripECDSA(pubKey)
9499
if err != nil {
95100
tt.Fatal(err)
96101
}

0 commit comments

Comments
 (0)