Bitcoin USB hardware wallet interface library, with the unified opt-in signature hash on the Trezor path. Fork of lark, not audited.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-20 22:14:17 -04:00
gradle/wrapper pin the gradle distribution checksum in the wrapper properties 2026-08-20 14:05:01 +02:00
src Merge upstream lark for Sparrow 2.5.5 2026-09-17 13:45:01 -04:00
.gitignore initial commit 2024-11-25 14:00:49 +02:00
build.gradle feat: request the unified opt-in signature hash from Trezor 2026-09-03 15:39:25 -04:00
gradlew upgrade to gradle v9.1.0 2025-09-29 13:21:12 +02:00
gradlew.bat upgrade to gradle v9.1.0 2025-09-29 13:21:12 +02:00
LICENSE initial commit 2024-11-25 14:00:49 +02:00
README.md Say this is an unofficial fork at the top of the README (#2) 2026-10-20 22:14:17 -04:00
settings.gradle initial commit 2024-11-25 14:00:49 +02:00

Lark, for Shrike

An unofficial fork of Lark, the hardware wallet library Shrike uses. It asks a Trezor running the unified opt-in signature hash firmware for that hash type, and refuses the opt-in where the device cannot honor it. It is not affiliated with the Sparrow project.

Not audited. Use at your own risk, and no warranty of any kind, see the Apache 2.0 license. Everything below the divider is upstream's documentation and describes Lark rather than this fork.


Lark

Lark is Java library for interacting with USB hardware wallets in Bitcoin related functions. The initial implementation is a port of the Python library HWI, but the library has since been extended to support additional functionality.

The following hardware wallets (for all models, unless specified) are supported:

  • Coldcard
  • Trezor
  • Ledger
  • BitBox02
  • Jade
  • Keepkey
  • OneKey (Classic 1S and Pro)

Example usage

Lark lark = new Lark();
List<HardwareClient> clients = lark.enumerate();

for(HardwareClient client : clients) {
    ExtendedKey xpub = lark.getPubKeyAtPath(client.getType(), client.getPath(), "m/84'/1'/0'");
}