Skip to content

feat(hive): REST POST /hive/sign-message — Keychain signBuffer (fw 7.15.0+)#357

Open
BitHighlander wants to merge 3 commits into
developfrom
feat/hive-sign-message-vault
Open

feat(hive): REST POST /hive/sign-message — Keychain signBuffer (fw 7.15.0+)#357
BitHighlander wants to merge 3 commits into
developfrom
feat/hive-sign-message-vault

Conversation

@BitHighlander

Copy link
Copy Markdown
Collaborator

Completes the P3 (message-signing) chain: firmware feat/hive-sign-message (HiveSignMessage 1614/1615) → hdwallet hiveSignMessage shim → this REST endpoint. Unblocks Hive dApp login (SkateHive/Aioha requestSignBuffer) in the browser extension.

  • Gated like /addresses/hive (hive_enabled → 403, fw < 7.15.0 → 501); in SIGNING_ROUTES so the approval overlay + empty-probe rejection apply
  • Default SLIP-48 posting role (dApp login verifies posting authority); owner' excluded by firmware
  • Returns { signature: hex(65), public_key: STM }

Verified live on the emulator rebuilt from the firmware branch:

  • recovered signer from SHA256(message) == independently-derived posting key (STM6toC1…), low-S, header 31
  • firmware negative paths fire: chain-id-prefixed message rejected, owner-role path rejected
  • make test-sign-gating 75 pass / 0 fail (new route auto-covered)

Depends on: firmware feat/hive-sign-message merging (submodule pointer in this PR references it); hdwallet feat/hive-sign-message (pointer included).
Consumer: keepkey-client feat/hive-sign-buffer (PR to follow).

🤖 Generated with Claude Code

BitHighlander and others added 3 commits July 13, 2026 17:16
…works)

Pin modules/hdwallet to keepkey/hdwallet master 089e4ba0 (PR #54), which
makes nodehid reads non-blocking so an on-device Cancel can dispatch during
signing — fixes the swap flow Cancel button not aborting the device.
…15.0+)

- hdwallet pointer → hiveSignMessage shim (msg 1614/1615)
- keepkey-firmware pointer → feat/hive-sign-message (HiveSignMessage
  handler: SHA256(message) digest, chain-id-collision guard, SLIP-48
  path/role enforcement, owner' excluded)
- endpoint gated like /addresses/hive (hive_enabled 403, fw<7.15.0 501),
  registered in SIGNING_ROUTES (approval overlay + probe rejection),
  default posting role, returns { signature: hex, public_key: STM }

Verified live on the rebuilt emulator: recovered signer == posting key,
low-S, negative tests (chain-id prefix, owner path) rejected by firmware,
make test-sign-gating 75/75.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant