1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-26 09:28:13 +00:00
trezor-firmware/docs/api.md

389 lines
8.6 KiB
Markdown
Raw Normal View History

2016-05-10 14:19:43 +00:00
#TREZOR Core API
2016-02-01 10:52:57 +00:00
2016-02-02 17:25:27 +00:00
Syntax used below is a valid Python function declaration with type hints defined in [PEP 0484](https://www.python.org/dev/peps/pep-0484/).
2016-02-01 16:48:26 +00:00
##trezor.crypto
###trezor.crypto.base58
``` python
def trezor.crypto.base58.encode(data: bytes) -> str
```
2016-05-06 14:19:10 +00:00
Convert bytes to base58 encoded string.
``` python
def trezor.crypto.base58.decode(string: str) -> bytes
```
2016-05-06 14:19:10 +00:00
Convert base58 encoded string to bytes.
``` python
def trezor.crypto.base58.encode_check(data: bytes) -> str
```
2016-05-06 14:19:10 +00:00
Convert bytes to base58 encoded string, append checksum.
``` python
def trezor.crypto.base58.decode_check(string: str) -> bytes
```
2016-05-06 14:19:10 +00:00
Convert base58 encoded string to bytes and verify checksum.
2016-05-13 18:33:14 +00:00
###trezor.crypto.bip39
``` python
2016-05-15 20:05:44 +00:00
def trezor.crypto.bip39.generate(strength: int) -> str
2016-05-13 18:33:14 +00:00
```
Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits)
``` python
2016-05-15 20:05:44 +00:00
def trezor.crypto.bip39.from_data(data: bytes) -> str
2016-05-13 18:33:14 +00:00
```
Generate a mnemonic from given data (of 16, 20, 24, 28 and 32 bytes)
``` python
def trezor.crypto.bip39.check(mnemonic: str) -> bool
```
Check whether given mnemonic is valid
2016-05-15 20:05:44 +00:00
``` python
def trezor.crypto.bip39.seed(mnemonic: str, passphrase: str) -> bytes
```
Generate seed from mnemonic and passphrase
2016-05-13 18:33:14 +00:00
###trezor.crypto.curve
2016-05-05 20:12:26 +00:00
####trezor.crypto.curve.ed25519
``` python
def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes
```
2016-05-05 20:44:47 +00:00
Computes public key from secret key.
``` python
def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes
```
2016-05-05 20:44:47 +00:00
Uses secret key to produce the signature of message.
``` python
def trezor.crypto.curve.ed25519.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
```
2016-05-05 20:44:47 +00:00
Uses public key to verify the signature of the message
Returns True on success.
2016-05-05 20:12:26 +00:00
####trezor.crypto.curve.nist256p1
``` python
def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
```
2016-05-05 20:44:47 +00:00
Computes public key from secret key.
``` python
def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, message: bytes) -> bytes
```
2016-05-05 20:44:47 +00:00
Uses secret key to produce the signature of message.
``` python
def trezor.crypto.curve.nist256p1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
```
2016-05-05 20:44:47 +00:00
Uses public key to verify the signature of the message
Returns True on success.
2016-05-05 20:12:26 +00:00
####trezor.crypto.curve.secp256k1
``` python
def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
```
2016-05-05 20:44:47 +00:00
Computes public key from secret key.
``` python
def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, message: bytes) -> bytes
```
2016-05-05 20:44:47 +00:00
Uses secret key to produce the signature of message.
``` python
def trezor.crypto.curve.secp256k1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
```
2016-02-01 10:52:57 +00:00
2016-05-05 20:44:47 +00:00
Uses public key to verify the signature of the message
Returns True on success.
###trezor.crypto.hashlib
2016-02-01 10:52:57 +00:00
2016-05-05 20:12:26 +00:00
####trezor.crypto.hashlib.ripemd160
2016-02-01 14:16:33 +00:00
``` python
def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160
```
2016-05-05 20:44:47 +00:00
Creates a hash context object.
``` python
def Ripemd160.update(self, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Update the hash context with hashed data.
``` python
def Ripemd160.digest(self) -> bytes
```
2016-02-01 10:52:57 +00:00
2016-05-05 20:44:47 +00:00
Returns the digest of hashed data.
2016-05-05 20:12:26 +00:00
####trezor.crypto.hashlib.sha256
``` python
def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256
```
2016-05-05 20:44:47 +00:00
Creates a hash context object.
``` python
def Sha256.update(self, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Update the hash context with hashed data.
``` python
def Sha256.digest(self) -> bytes
```
2016-02-01 10:52:57 +00:00
2016-05-05 20:44:47 +00:00
Returns the digest of hashed data.
2016-05-05 20:12:26 +00:00
####trezor.crypto.hashlib.sha512
``` python
def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512
```
2016-05-05 20:44:47 +00:00
Creates a hash context object.
``` python
def Sha512.hash(self, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Update the hash context with hashed data.
``` python
def Sha512.digest(self) -> bytes
```
2016-02-01 16:48:26 +00:00
2016-05-05 20:44:47 +00:00
Returns the digest of hashed data.
2016-05-05 20:12:26 +00:00
####trezor.crypto.hashlib.sha3_256
``` python
def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256
```
2016-05-05 20:44:47 +00:00
Creates a hash context object.
``` python
def Sha3_256.update(self, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Update the hash context with hashed data.
``` python
def Sha3_256.digest(self) -> bytes
```
2016-02-01 16:48:26 +00:00
2016-05-05 20:44:47 +00:00
Returns the digest of hashed data.
2016-05-05 20:12:26 +00:00
####trezor.crypto.hashlib.sha3_512
``` python
def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512
```
2016-05-05 20:44:47 +00:00
Creates a hash context object.
``` python
def Sha3_512.update(self, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Update the hash context with hashed data.
``` python
def Sha3_512.digest(self) -> bytes
```
2016-02-01 16:48:26 +00:00
2016-05-05 20:44:47 +00:00
Returns the digest of hashed data.
###trezor.crypto.hmac
2016-04-03 23:46:46 +00:00
``` python
def trezor.crypto.hmac.new(key, msg, digestmod) -> Hmac
```
2016-02-01 16:48:26 +00:00
2016-05-06 14:19:10 +00:00
Creates a HMAC context object.
``` python
def Hmac.update(self, msg: bytes) -> None
```
Update the context with data.
``` python
def Hmac.digest(self) -> bytes
```
Returns the digest of processed data.
##trezor.msg
2016-02-01 16:48:26 +00:00
``` python
def trezor.msg.send(message) -> int
```
2016-05-05 20:44:47 +00:00
Sends message using USB HID (device) or UDP (emulator).
``` python
def trezor.msg.select(timeout_us: int) -> tuple
2016-02-01 16:48:26 +00:00
```
2016-05-05 20:44:47 +00:00
Polls the event queue and returns the event object.
Function returns None if timeout specified in microseconds is reached.
##trezor.ui
2016-02-01 16:48:26 +00:00
``` python
def trezor.ui.rgbcolor(r: int, g: int, b: int) -> int
```
``` python
def trezor.ui.lerpi(a: int, b: int, t: float) -> int
```
``` python
def trezor.ui.blend(ca: int, cb: int, t: float) -> int
```
``` python
def trezor.ui.animate_pulse(func, ca, cb, speed=200000, delay=30000)
```
2016-02-01 16:48:26 +00:00
###trezor.ui.display
2016-02-01 16:18:04 +00:00
``` python
def trezor.ui.display.bar(x: int, y: int, w: int, h: int, fgcolor: int, bgcolor: int=None) -> None
```
2016-05-05 20:44:47 +00:00
Renders a bar at position (x,y = upper left corner) with width w and height h of color fgcolor.
When a bgcolor is set, the bar is drawn with rounded corners and bgcolor is used for background.
``` python
def trezor.ui.display.blit(x: int, y: int, w: int, h: int, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Renders rectangle at position (x,y = upper left corner) with width w and height h with data.
The data needs to have the correct format.
``` python
def trezor.ui.display.image(x: int, y: int, image: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Renders an image at position (x,y).
The image needs to be in TREZOR Optimized Image Format (TOIF) - full-color mode.
``` python
def trezor.ui.display.icon(x: int, y: int, icon: bytes, fgcolor: int, bgcolor: int) -> None
```
2016-05-05 20:44:47 +00:00
Renders an icon at position (x,y), fgcolor is used as foreground color, bgcolor as background.
The image needs to be in TREZOR Optimized Image Format (TOIF) - gray-scale mode.
``` python
def trezor.ui.display.text(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
```
2016-05-05 20:44:47 +00:00
Renders left-aligned text at position (x,y) where x is left position and y is baseline.
Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
``` python
def trezor.ui.display.text_center(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
```
2016-05-05 20:44:47 +00:00
Renders text centered at position (x,y) where x is text center and y is baseline.
Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
``` python
def trezor.ui.display.text_right(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
```
2016-05-05 20:44:47 +00:00
Renders right-aligned text at position (x,y) where x is right position and y is baseline.
Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
``` python
def trezor.ui.display.text_width(text: bytes, font: int) -> int
```
2016-05-05 20:44:47 +00:00
Returns a width of text in pixels. Font font is used for rendering.
``` python
def trezor.ui.display.qrcode(x: int, y: int, data: bytes, scale: int) -> None
```
2016-05-05 20:44:47 +00:00
Renders data encoded as a QR code at position (x,y).
Scale determines a zoom factor.
``` python
def trezor.ui.display.loader(progress: int, fgcolor: int, bgcolor: int, icon: bytes=None, iconfgcolor: int=None) -> None
```
2016-05-05 20:44:47 +00:00
Renders a rotating loader graphic.
Progress determines its position (0-1000), fgcolor is used as foreground color, bgcolor as background.
When icon and iconfgcolor are provided, an icon is drawn in the middle using the color specified in iconfgcolor.
Icon needs to be of exaclty 96x96 pixels size.
``` python
def trezor.ui.display.orientation(degrees: int) -> None
```
2016-05-05 20:44:47 +00:00
Sets display orientation to 0, 90, 180 or 270 degrees.
Everything needs to be redrawn again when this function is used.
``` python
def trezor.ui.display.backlight(val: int) -> None
2016-05-05 20:44:47 +00:00
```
Sets backlight intensity to the value specified in val.
``` python
def trezor.ui.display.raw(reg: int, data: bytes) -> None
```
2016-05-05 20:44:47 +00:00
Performs a raw command on the display. Read the datasheet to learn more.
###trezor.utils
``` python
def trezor.utils.memaccess(address: int, length: int) -> bytes
2016-02-01 10:52:57 +00:00
```
2016-05-05 20:44:47 +00:00
Creates a bytes object that can be used to access certain memory location.