Skip to content

Latest commit

 

History

History
46 lines (30 loc) · 2.99 KB

README.md

File metadata and controls

46 lines (30 loc) · 2.99 KB

trezord-go

Build Status gitter

TREZOR Communication Daemon aka TREZOR Bridge (written in Go)

go build
./trezord-go -h

Guide to compiling packages

Prerequisites:

  • go get github.com/karalabe/xgo
  • docker pull karalabe/xgo-latest
  • make sure xgo and docker are in $PATH
  • cd release && make all; the installers are in installers

Quick guide to cross-compiling

Prerequisites:

  • go get github.com/karalabe/xgo
  • docker pull karalabe/xgo-latest

Compiling for officially supported platforms:

  • $GOPATH/bin/xgo -targets=windows/amd64,windows/386,darwin/amd64,linux/amd64,linux/386 github.com/trezor/trezord-go

API documentation

trezord-go starts a HTTP server on http://localhost:21325. AJAX calls are only enabled from trezor.io subdomains.

Server supports following API calls:

url
method
parameters result type description
/
POST
{version: string} Returns current version of bridge and info about configuration.
See /configure for more info.
/enumerate
POST
Array<{path: string,
session: string | null}>
Lists devices.
path uniquely defines device between more connected devices. It might or might not be unique over time; on some platform it changes, on others given USB port always returns the same path.
If session is null, nobody else is using the device; if it's string, it identifies who is using it.
/listen
POST
request body: previous, as JSON like enumerate Listen to changes and returns either on change or after 30 second timeout. Compares change from previous that is sent as a parameter. "Change" is both connecting/disconnecting and session change.
/acquire/PATH/PREVIOUS
POST
PATH: path of device
PREVIOUS: previous session (or string "null")
{session: string} Acquires the device at PATH. By "acquiring" the device, you are claiming the device for yourself.
Before acquiring, checks that the current session is PREVIOUS.
If two applications call acquire on a newly connected device at the same time, only one of them succeed.
/release/SESSION
POST
SESSION: session to release {} Releases the device with the given session.
By "releasing" the device, you claim that you don't want to use the device anymore.
/call/SESSION
POST
SESSION: session to call

request body: JSON
{type: string, message: object}
{type: string, body: object} Calls the message and returns the response from TREZOR.
Messages are defined in this protobuf file.
type in request is, for example, GetFeatures; type in response is, for example, Features