1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-26 09:28:13 +00:00
Go to file
Jochen Hoenicke 69067c9280 Parse json floats as string
With python-2.7 the float values are sometimes rounded to unacceptable
levels, e.g. stripping the last two digits for values over 100k BTC.
This change parses floats as strings to avoid rounding.

Refactored get_url out of fetch_json to make it easier to add
new tx_api with a different url scheme.
2017-11-28 19:55:31 +01:00
bash_completion.d add initial bash_completion script 2016-06-22 17:26:11 +02:00
tests Added missing cached tx for msg_signtx 2017-11-17 21:04:03 +01:00
tools don't use generic Exception, but rather specific subclass 2017-11-06 11:10:23 +01:00
trezorlib Parse json floats as string 2017-11-28 19:55:31 +01:00
.flake8 flake: silence some new warnings 2017-10-24 01:00:08 +02:00
.gitignore tests: start rewriting device tests to pytest 2017-07-28 18:07:20 +02:00
.travis.yml use click in trezorctl 2017-07-05 12:55:38 +02:00
build_pb.sh add protoc version and trezor-common revision to autogenerated files 2017-06-21 13:44:26 +02:00
COPYING python-trezor is LGPLv3 2015-01-30 23:55:29 +01:00
MANIFEST.in rename txcache files to json 2016-11-28 14:33:24 +01:00
README.rst Adding note: trezorctl is installed on debian / tails (#148) 2017-11-09 17:01:05 +01:00
requirements.txt requirements: add pyblake2 2017-11-06 11:10:23 +01:00
setup.py requirements: add pyblake2 2017-11-06 11:10:23 +01:00
tox.ini style: use flake8 2017-06-23 21:52:53 +02:00
trezorctl don't use generic Exception, but rather specific subclass 2017-11-06 11:10:23 +01:00
USAGE.rst USAGE: Verbose args & adding native Bech32 segwit 2017-11-24 07:57:44 +01:00

python-trezor
=============

.. image:: https://travis-ci.org/trezor/python-trezor.svg?branch=master
    :target: https://travis-ci.org/trezor/python-trezor

.. image:: https://badges.gitter.im/trezor/community.svg
    :target: https://gitter.im/trezor/community

Python library for communicating with TREZOR Hardware Wallet

See https://trezor.io for more information

Install
-------

Linux requirements:

.. code::

  sudo apt-get install python-dev cython libusb-1.0-0-dev libudev-dev git

Linux & Mac Python requirements:

.. code::

  sudo -H pip install setuptools
  sudo -H pip install -r requirements.txt
  sudo -H pip install trezor

On FreeBSD you can install the packages:

.. code::

  pkg install security/py-trezor

or build via ports:

.. code::

  cd /usr/ports/security/py-trezor
  make install clean

Usage
-----

There is a command line tool called ``trezorctl`` which can perform various tasks. Use the following to learn about its commands:

.. code::

  trezorctl --help

or to learn options of a particular command:

.. code::

  trezorctl commands --help

or visit `usage <USAGE.rst>`_ page for more info.

NOTE: The ``trezorctl`` command is `available for Debian Stretch <https://packages.debian.org/en/stretch/python-trezor>`_ (and comes pre-installed on `Tails OS <https://tails.boum.org/>`_).

To use the library in your application look at the following example.

Example
-------

also found in ``tools/helloworld.py``

.. code:: python

  #!/usr/bin/env python

  from trezorlib.client import TrezorClient
  from trezorlib.transport_hid import HidTransport

  def main():
      # List all connected TREZORs on USB
      devices = HidTransport.enumerate()

      # Check whether we found any
      if len(devices) == 0:
          print('No TREZOR found')
          return

      # Use first connected device
      transport = HidTransport(devices[0])

      # Creates object for manipulating TREZOR
      client = TrezorClient(transport)

      # Print out TREZOR's features and settings
      print(client.features)

      # Get the first address of first BIP44 account
      # (should be the same address as shown in wallet.trezor.io)
      bip32_path = client.expand_path("44'/0'/0'/0/0")
      address = client.get_address('Bitcoin', bip32_path)
      print('Bitcoin address:', address)

      client.close()

  if __name__ == '__main__':
      main()

PIN Entering
------------

When you are asked for PIN, you have to enter scrambled PIN. Follow the numbers shown on TREZOR display and enter the their positions using the numeric keyboard mapping:

=== === ===
 7   8   9
 4   5   6
 1   2   3
=== === ===

Example: your PIN is **1234** and TREZOR is displaying the following:

=== === ===
 2   8   3
 5   4   6
 7   9   1
=== === ===

You have to enter: **3795**