1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-16 19:38:09 +00:00
Go to file
2017-11-15 15:42:28 +01:00
bash_completion.d add initial bash_completion script 2016-06-22 17:26:11 +02:00
tests device_tests: op_return now requires confirmation by user 2017-11-15 15:42:28 +01:00
tools don't use generic Exception, but rather specific subclass 2017-11-06 11:10:23 +01:00
trezorlib Fix encoding error in trezorlib.client.ProtocolMixin.load_device_by_mnemonic (#153) 2017-11-15 13:33:21 +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 Adding xpub example (#149) 2017-11-13 21:54:33 +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**