Skip to content

Commit d6f5c9a

Browse files
author
Michael de Hoog
committed
Add Trezor support
1 parent 77ab344 commit d6f5c9a

File tree

3 files changed

+85
-59
lines changed

3 files changed

+85
-59
lines changed

go.mod

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,34 @@ toolchain go1.23.7
66

77
require (
88
github.com/decred/dcrd/hdkeychain/v3 v3.1.1
9-
github.com/ethereum/go-ethereum v1.15.6
9+
github.com/ethereum/go-ethereum v1.16.1
10+
github.com/mdehoog/usbwallet v0.0.0-20250710013057-89311a62e050
1011
github.com/tyler-smith/go-bip39 v1.1.0
1112
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
1213
)
1314

1415
require (
15-
github.com/bits-and-blooms/bitset v1.17.0 // indirect
16-
github.com/consensys/bavard v0.1.22 // indirect
17-
github.com/consensys/gnark-crypto v0.14.0 // indirect
16+
github.com/bits-and-blooms/bitset v1.20.0 // indirect
17+
github.com/consensys/gnark-crypto v0.18.0 // indirect
18+
github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect
1819
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
19-
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
2020
github.com/decred/base58 v1.0.5 // indirect
2121
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
2222
github.com/decred/dcrd/crypto/ripemd160 v1.0.2 // indirect
2323
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
24-
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
24+
github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect
2525
github.com/ethereum/go-verkle v0.2.2 // indirect
26+
github.com/google/gousb v1.1.3 // indirect
2627
github.com/holiman/uint256 v1.3.2 // indirect
2728
github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52 // indirect
2829
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
29-
github.com/mmcloughlin/addchain v0.4.0 // indirect
30+
github.com/mattn/go-runewidth v0.0.13 // indirect
31+
github.com/nsf/termbox-go v0.0.0-20190325093121-288510b9734e // indirect
32+
github.com/reserve-protocol/trezor v0.0.0-20190523030725-9e38328dde28 // indirect
33+
github.com/rivo/uniseg v0.2.0 // indirect
3034
github.com/supranational/blst v0.3.14 // indirect
31-
golang.org/x/crypto v0.35.0 // indirect
32-
golang.org/x/sync v0.11.0 // indirect
33-
golang.org/x/sys v0.30.0 // indirect
34-
google.golang.org/protobuf v1.34.2 // indirect
35-
rsc.io/tmplfunc v0.0.3 // indirect
35+
golang.org/x/crypto v0.36.0 // indirect
36+
golang.org/x/sync v0.12.0 // indirect
37+
golang.org/x/sys v0.31.0 // indirect
38+
google.golang.org/protobuf v1.36.6 // indirect
3639
)

go.sum

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,16 @@ github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjC
44
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
55
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
66
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
7-
github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI=
8-
github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
7+
github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU=
8+
github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
99
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
1010
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
11-
github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A=
12-
github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs=
13-
github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E=
14-
github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0=
11+
github.com/consensys/gnark-crypto v0.18.0 h1:vIye/FqI50VeAr0B3dx+YjeIvmc3LWz4yEfbWBpTUf0=
12+
github.com/consensys/gnark-crypto v0.18.0/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c=
13+
github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI=
14+
github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI=
1515
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg=
1616
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM=
17-
github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4=
18-
github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks=
1917
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2018
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2119
github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA=
@@ -44,21 +42,24 @@ github.com/decred/dcrd/wire v1.6.0 h1:YOGwPHk4nzGr6OIwUGb8crJYWDiVLpuMxfDBCCF7s/
4442
github.com/decred/dcrd/wire v1.6.0/go.mod h1:XQ8Xv/pN/3xaDcb7sH8FBLS9cdgVctT7HpBKKGsIACk=
4543
github.com/decred/slog v1.2.0 h1:soHAxV52B54Di3WtKLfPum9OFfWqwtf/ygf9njdfnPM=
4644
github.com/decred/slog v1.2.0/go.mod h1:kVXlGnt6DHy2fV5OjSeuvCJ0OmlmTF6LFpEPMu/fOY0=
47-
github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA=
48-
github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
49-
github.com/ethereum/go-ethereum v1.15.6 h1:jgLoUM6/pNjp0uEnXyWcWikDwa4j1wZlcqkX8Pm8A+I=
50-
github.com/ethereum/go-ethereum v1.15.6/go.mod h1:+S9k+jFzlyVTNcYGvqFhzN/SFhI6vA+aOY4T5tLSPL0=
45+
github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w=
46+
github.com/ethereum/c-kzg-4844/v2 v2.1.0/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E=
47+
github.com/ethereum/go-ethereum v1.16.1 h1:7684NfKCb1+IChudzdKyZJ12l1Tq4ybPZOITiCDXqCk=
48+
github.com/ethereum/go-ethereum v1.16.1/go.mod h1:ngYIvmMAYdo4sGW9cGzLvSsPGhDOOzL0jK5S5iXpj0g=
5149
github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8=
5250
github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
51+
github.com/ferranbt/fastssz v0.1.2 h1:Dky6dXlngF6Qjc+EfDipAkE83N5I5DE68bY6O0VLNPk=
52+
github.com/ferranbt/fastssz v0.1.2/go.mod h1:X5UPrE2u1UJjxHA8X54u04SBwdAQjG2sFtWs39YxyWs=
5353
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
5454
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
55-
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
56-
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
55+
github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
56+
github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
5757
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
5858
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
5959
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
6060
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
61-
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
61+
github.com/google/gousb v1.1.3 h1:xt6M5TDsGSZ+rlomz5Si5Hmd/Fvbmo2YCJHN+yGaK4o=
62+
github.com/google/gousb v1.1.3/go.mod h1:GGWUkK0gAXDzxhwrzetW592aOmkkqSGcj5KLEgmCVUg=
6263
github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA=
6364
github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
6465
github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52 h1:msKODTL1m0wigztaqILOtla9HeW1ciscYG4xjLtvk5I=
@@ -69,15 +70,23 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
6970
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
7071
github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
7172
github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c=
73+
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
7274
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
7375
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
74-
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
75-
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
76-
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
76+
github.com/mdehoog/usbwallet v0.0.0-20250710013057-89311a62e050 h1:Fy4ZU/a0D7JouNRhmhZ8zLGN8c3cbq/p36rEVS73aCY=
77+
github.com/mdehoog/usbwallet v0.0.0-20250710013057-89311a62e050/go.mod h1:JomHHHCacgQZP1OoY7AYGB9T3OcGWT7fK8wTZ/jyhLM=
78+
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
79+
github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
80+
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
81+
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
82+
github.com/nsf/termbox-go v0.0.0-20190325093121-288510b9734e h1:Vbib8wJAaMEF9jusI/kMSYMr/LtRzM7+F9MJgt/nH8k=
83+
github.com/nsf/termbox-go v0.0.0-20190325093121-288510b9734e/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
7784
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
7885
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
7986
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
8087
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
88+
github.com/reserve-protocol/trezor v0.0.0-20190523030725-9e38328dde28 h1:0XRrYV4bb+Y09cLQKsVE5gQ3HRebPXxY89zx+ZV2Fo0=
89+
github.com/reserve-protocol/trezor v0.0.0-20190523030725-9e38328dde28/go.mod h1:Twg3zlQzleALAU+gR5xSK112gdh9YLcQ6owamVh0lbY=
8190
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
8291
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
8392
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
@@ -94,26 +103,24 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n
94103
github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
95104
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
96105
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
97-
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
98-
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
106+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
107+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
99108
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
100109
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
101110
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
102-
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
103-
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
111+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
112+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
104113
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
105114
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
106115
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
107-
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
108-
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
116+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
117+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
109118
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
110-
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
111-
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
119+
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
120+
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
112121
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
113122
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
114123
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
115124
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
116125
lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
117126
lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
118-
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
119-
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=

main.go

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@ import (
1414

1515
"github.com/decred/dcrd/hdkeychain/v3"
1616
"github.com/ethereum/go-ethereum/accounts"
17-
"github.com/ethereum/go-ethereum/accounts/usbwallet"
1817
"github.com/ethereum/go-ethereum/common"
1918
"github.com/ethereum/go-ethereum/crypto"
19+
"github.com/mdehoog/usbwallet"
2020
"github.com/tyler-smith/go-bip39"
2121
"golang.org/x/exp/slices"
2222
)
2323

2424
func main() {
2525
var privateKey string
2626
var ledger bool
27+
var trezor bool
2728
var index int
2829
var address bool
2930
var mnemonic string
@@ -35,7 +36,8 @@ func main() {
3536
var skipSender bool
3637
flag.StringVar(&privateKey, "private-key", "", "Private key to use for signing")
3738
flag.BoolVar(&ledger, "ledger", false, "Use ledger device for signing")
38-
flag.IntVar(&index, "index", 0, "Index of the ledger to use")
39+
flag.BoolVar(&trezor, "trezor", false, "Use trezor device for signing")
40+
flag.IntVar(&index, "index", 0, "Device index to use (if multiple devices are connected)")
3941
flag.BoolVar(&address, "address", false, "Print address of signer and exit")
4042
flag.StringVar(&mnemonic, "mnemonic", "", "Mnemonic to use for signing")
4143
flag.StringVar(&hdPath, "hd-paths", "m/44'/60'/0'/0/0", "Hierarchical deterministic derivation path for mnemonic or ledger")
@@ -53,16 +55,19 @@ func main() {
5355
if ledger {
5456
options++
5557
}
58+
if trezor {
59+
options++
60+
}
5661
if mnemonic != "" {
5762
options++
5863
}
5964
if options != 1 {
60-
log.Fatalf("One (and only one) of --private-key, --ledger, --mnemonic must be set")
65+
log.Fatalf("One (and only one) of --private-key, --ledger, --trezor, --mnemonic must be set")
6166
}
6267

6368
// signer creation error is handled later, allowing the command that generates the signable
6469
// data to run without a key / ledger, which is useful for simulation purposes
65-
s, signerErr := createSigner(privateKey, mnemonic, hdPath, index)
70+
s, signerErr := createSigner(privateKey, mnemonic, hdPath, index, ledger, trezor)
6671
if signerErr != nil {
6772
if address {
6873
log.Fatalf("Error creating signer: %v", signerErr)
@@ -121,20 +126,20 @@ func main() {
121126

122127
fmt.Printf("Signing as: %s\n\n", s.address().String())
123128

124-
if ledger {
125-
fmt.Printf("Data sent to ledger, awaiting signature...")
129+
if ledger || trezor {
130+
fmt.Printf("Data sent to device, awaiting signature...")
126131
}
127132
signature, err := s.sign(hash)
128133
if err == accounts.ErrWalletClosed {
129134
// ledger is flaky sometimes, recreate and retry
130135
fmt.Printf("failed with %s, retrying...", err.Error())
131-
s, err = createSigner(privateKey, mnemonic, hdPath, index)
136+
s, err = createSigner(privateKey, mnemonic, hdPath, index, ledger, trezor)
132137
if err != nil {
133138
log.Fatalf("Error creating signer: %v", err)
134139
}
135140
signature, err = s.sign(hash)
136141
}
137-
if ledger {
142+
if ledger || trezor {
138143
fmt.Println("done")
139144
}
140145
if err != nil {
@@ -158,7 +163,7 @@ func run(workdir, name string, args ...string) ([]byte, error) {
158163
return buffer.Bytes(), err
159164
}
160165

161-
func createSigner(privateKey, mnemonic, hdPath string, index int) (signer, error) {
166+
func createSigner(privateKey, mnemonic, hdPath string, index int, ledger, trezor bool) (signer, error) {
162167
path, err := accounts.ParseDerivationPath(hdPath)
163168
if err != nil {
164169
return nil, err
@@ -180,27 +185,38 @@ func createSigner(privateKey, mnemonic, hdPath string, index int) (signer, error
180185
return &ecdsaSigner{key}, nil
181186
}
182187

183-
// assume using a ledger
184-
ledgerHub, err := usbwallet.NewLedgerHub()
185-
if err != nil {
186-
return nil, fmt.Errorf("error starting ledger: %w", err)
188+
// assume using a hardware wallet
189+
var hub *usbwallet.Hub
190+
if trezor {
191+
hub, err = usbwallet.NewTrezorHubWithWebUSB()
192+
if err != nil {
193+
return nil, fmt.Errorf("error starting trezor: %w", err)
194+
}
195+
} else if ledger {
196+
hub, err = usbwallet.NewLedgerHub()
197+
if err != nil {
198+
return nil, fmt.Errorf("error starting ledger: %w", err)
199+
}
200+
} else {
201+
return nil, fmt.Errorf("no wallet type specified")
187202
}
188-
wallets := ledgerHub.Wallets()
203+
204+
wallets := hub.Wallets()
189205
if len(wallets) == 0 {
190-
return nil, fmt.Errorf("no ledgers found, please connect your ledger")
206+
return nil, fmt.Errorf("no hardware wallets found, please connect your device")
191207
} else if len(wallets) > 1 {
192-
fmt.Printf("Found %d ledgers, using index %d\n", len(wallets), index)
208+
fmt.Printf("Found %d devices, using index %d\n", len(wallets), index)
193209
}
194210
if index < 0 || index >= len(wallets) {
195-
return nil, fmt.Errorf("ledger index out of range")
211+
return nil, fmt.Errorf("device index out of range")
196212
}
197213
wallet := wallets[index]
198214
if err := wallet.Open(""); err != nil {
199-
return nil, fmt.Errorf("error opening ledger: %w", err)
215+
return nil, fmt.Errorf("error opening device: %w", err)
200216
}
201217
account, err := wallet.Derive(path, true)
202218
if err != nil {
203-
return nil, fmt.Errorf("error deriving ledger account (please unlock and open the Ethereum app): %w", err)
219+
return nil, fmt.Errorf("error deriving account (please unlock and open the Ethereum app): %w", err)
204220
}
205221
return &walletSigner{
206222
wallet: wallet,

0 commit comments

Comments
 (0)