From 5812e9e89b7998e0364266abc9cfd5560a6153c5 Mon Sep 17 00:00:00 2001 From: highlander Date: Tue, 24 Mar 2026 23:44:28 -0600 Subject: [PATCH] fix: register Ethereum and Tendermint message types in transport typeRegistry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ethereum response types (EthereumAddress=57, EthereumTxRequest=59, EthereumMessageSignature=110, EthereumTypedDataSignature=113) were never registered in the transport type registry. The device sends valid responses but the transport can't deserialize them, fabricating FAILURE("Unknown message type received") instead. ETH getAddress appeared to work because EvmAddressManager silently catches the error and falls back to cached addresses. But ETH signing (signTx, signMessage, signTypedData) has no fallback and is broken. Also registers Tendermint (1000-1011) for completeness — currently unused but prevents future gaps. Same bug class as Osmosis/Binance (fixed in #33). --- packages/hdwallet-keepkey/src/typeRegistry.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/hdwallet-keepkey/src/typeRegistry.ts b/packages/hdwallet-keepkey/src/typeRegistry.ts index 9b20939a..1b5ac516 100644 --- a/packages/hdwallet-keepkey/src/typeRegistry.ts +++ b/packages/hdwallet-keepkey/src/typeRegistry.ts @@ -2,10 +2,12 @@ import * as Messages from "@keepkey/device-protocol/lib/messages_pb"; import * as BinanceMessages from "@keepkey/device-protocol/lib/messages-binance_pb"; import * as CosmosMessages from "@keepkey/device-protocol/lib/messages-cosmos_pb"; import * as EosMessages from "@keepkey/device-protocol/lib/messages-eos_pb"; +import * as EthereumMessages from "@keepkey/device-protocol/lib/messages-ethereum_pb"; import * as MayachainMessages from "@keepkey/device-protocol/lib/messages-mayachain_pb"; import * as NanoMessages from "@keepkey/device-protocol/lib/messages-nano_pb"; import * as OsmosisMessages from "@keepkey/device-protocol/lib/messages-osmosis_pb"; import * as RippleMessages from "@keepkey/device-protocol/lib/messages-ripple_pb"; +import * as TendermintMessages from "@keepkey/device-protocol/lib/messages-tendermint_pb"; import * as ThorchainMessages from "@keepkey/device-protocol/lib/messages-thorchain_pb"; import * as ZcashMessages from "@keepkey/device-protocol/lib/messages-zcash_pb"; import * as core from "@keepkey/hdwallet-core"; @@ -22,10 +24,12 @@ const AllMessages = ([] as Array<[string, core.Constructor]>) .concat(Object.entries(omit(Messages, "MessageType", "MessageTypeMap"))) .concat(Object.entries(BinanceMessages)) .concat(Object.entries(CosmosMessages)) + .concat(Object.entries(EthereumMessages)) .concat(Object.entries(OsmosisMessages)) .concat(Object.entries(RippleMessages)) .concat(Object.entries(NanoMessages)) .concat(Object.entries(omit(EosMessages, "EosPublicKeyKind", "EosPublicKeyKindMap"))) + .concat(Object.entries(TendermintMessages)) .concat(Object.entries(ThorchainMessages)) .concat(Object.entries(MayachainMessages)) .concat(Object.entries(ZcashMessages));