# Application client A small Python client for the Handshake Ledger app: enough to send APDUs, build the records `SIGN_TX` streams, and decode what comes back. - `handshake_command_sender.py`: APDU encoding and the `SIGN_TX` state machine (BEGIN / ADD_INPUT / ADD_OUTPUT / REVIEW / SIGN_INPUT), plus the status words from `src/main.rs::AppSW`. - `handshake_transaction.py`: payload builders and the covenant item layouts from `shd/Sources/Covenants/CovenantData.swift`. - `handshake_response_unpacker.py`: response decoding. Note the app returns **compressed** 33-byte public keys. - `handshake_sighash.py`: an independent BIP-143-style sighash over BLAKE2b-256, written separately from the device's implementation so that a test failure means the two disagree rather than that one implementation is self-consistent. - `py.typed`: marker for type checkers.