From 31a1fa8981c18a144a4b2ffdbf8ab684546fa023 Mon Sep 17 00:00:00 2001 From: highlander Date: Tue, 24 Mar 2026 23:22:46 -0600 Subject: [PATCH] fix: register Osmosis and Binance message types in transport typeRegistry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The transport's fromMessageBuffer() looks up response message types in messageTypeRegistry to deserialize device responses. Osmosis and Binance proto constructors were never registered, so the device's valid OsmosisAddress (1101) / BinanceAddress responses were silently converted to FAILURE("Unknown message type received") at the hdwallet layer. The firmware handles these chains correctly — the error was entirely client-side deserialization failure. --- 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 89e06ebc..9b20939a 100644 --- a/packages/hdwallet-keepkey/src/typeRegistry.ts +++ b/packages/hdwallet-keepkey/src/typeRegistry.ts @@ -1,8 +1,10 @@ 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 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 ThorchainMessages from "@keepkey/device-protocol/lib/messages-thorchain_pb"; import * as ZcashMessages from "@keepkey/device-protocol/lib/messages-zcash_pb"; @@ -18,7 +20,9 @@ function omit(obj: Record, ...keys: string[]): Record 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(OsmosisMessages)) .concat(Object.entries(RippleMessages)) .concat(Object.entries(NanoMessages)) .concat(Object.entries(omit(EosMessages, "EosPublicKeyKind", "EosPublicKeyKindMap")))