You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/docs/api.md

8.1 KiB

#TREZOR Core API

Syntax used below is a valid Python function declaration with type hints defined in PEP 0484.

##trezor.crypto

###trezor.crypto.base58

def trezor.crypto.base58.encode(data: bytes) -> str

Convert bytes to base58 encoded string.

def trezor.crypto.base58.decode(string: str) -> bytes

Convert base58 encoded string to bytes.

def trezor.crypto.base58.encode_check(data: bytes) -> str

Convert bytes to base58 encoded string, append checksum.

def trezor.crypto.base58.decode_check(string: str) -> bytes

Convert base58 encoded string to bytes and verify checksum.

###trezor.crypto.curve

####trezor.crypto.curve.ed25519

def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes

Computes public key from secret key.

def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes

Uses secret key to produce the signature of message.

def trezor.crypto.curve.ed25519.verify(public_key: bytes, signature: bytes, message: bytes) -> bool

Uses public key to verify the signature of the message Returns True on success.

####trezor.crypto.curve.nist256p1

def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes

Computes public key from secret key.

def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, message: bytes) -> bytes

Uses secret key to produce the signature of message.

def trezor.crypto.curve.nist256p1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool

Uses public key to verify the signature of the message Returns True on success.

####trezor.crypto.curve.secp256k1

def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes

Computes public key from secret key.

def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, message: bytes) -> bytes

Uses secret key to produce the signature of message.

def trezor.crypto.curve.secp256k1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool

Uses public key to verify the signature of the message Returns True on success.

###trezor.crypto.hashlib

####trezor.crypto.hashlib.ripemd160

def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160

Creates a hash context object.

def Ripemd160.update(self, data: bytes) -> None

Update the hash context with hashed data.

def Ripemd160.digest(self) -> bytes

Returns the digest of hashed data.

####trezor.crypto.hashlib.sha256

def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256

Creates a hash context object.

def Sha256.update(self, data: bytes) -> None

Update the hash context with hashed data.

def Sha256.digest(self) -> bytes

Returns the digest of hashed data.

####trezor.crypto.hashlib.sha512

def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512

Creates a hash context object.

def Sha512.hash(self, data: bytes) -> None

Update the hash context with hashed data.

def Sha512.digest(self) -> bytes

Returns the digest of hashed data.

####trezor.crypto.hashlib.sha3_256

def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256

Creates a hash context object.

def Sha3_256.update(self, data: bytes) -> None

Update the hash context with hashed data.

def Sha3_256.digest(self) -> bytes

Returns the digest of hashed data.

####trezor.crypto.hashlib.sha3_512

def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512

Creates a hash context object.

def Sha3_512.update(self, data: bytes) -> None

Update the hash context with hashed data.

def Sha3_512.digest(self) -> bytes

Returns the digest of hashed data.

###trezor.crypto.hmac

def trezor.crypto.hmac.new(key, msg, digestmod) -> Hmac

Creates a HMAC context object.

def Hmac.update(self, msg: bytes) -> None

Update the context with data.

def Hmac.digest(self) -> bytes

Returns the digest of processed data.

##trezor.msg

def trezor.msg.send(message) -> int

Sends message using USB HID (device) or UDP (emulator).

def trezor.msg.select(timeout_us: int) -> tuple

Polls the event queue and returns the event object. Function returns None if timeout specified in microseconds is reached.

##trezor.ui

def trezor.ui.rgbcolor(r: int, g: int, b: int) -> int
def trezor.ui.lerpi(a: int, b: int, t: float) -> int
def trezor.ui.blend(ca: int, cb: int, t: float) -> int
def trezor.ui.animate_pulse(func, ca, cb, speed=200000, delay=30000)

###trezor.ui.display

def trezor.ui.display.bar(x: int, y: int, w: int, h: int, fgcolor: int, bgcolor: int=None) -> None

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.

def trezor.ui.display.blit(x: int, y: int, w: int, h: int, data: bytes) -> None

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.

def trezor.ui.display.image(x: int, y: int, image: bytes) -> None

Renders an image at position (x,y). The image needs to be in TREZOR Optimized Image Format (TOIF) - full-color mode.

def trezor.ui.display.icon(x: int, y: int, icon: bytes, fgcolor: int, bgcolor: int) -> None

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.

def trezor.ui.display.text(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None

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.

def trezor.ui.display.text_center(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None

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.

def trezor.ui.display.text_right(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None

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.

def trezor.ui.display.text_width(text: bytes, font: int) -> int

Returns a width of text in pixels. Font font is used for rendering.

def trezor.ui.display.qrcode(x: int, y: int, data: bytes, scale: int) -> None

Renders data encoded as a QR code at position (x,y). Scale determines a zoom factor.

def trezor.ui.display.loader(progress: int, fgcolor: int, bgcolor: int, icon: bytes=None, iconfgcolor: int=None) -> None

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.

def trezor.ui.display.orientation(degrees: int) -> None

Sets display orientation to 0, 90, 180 or 270 degrees. Everything needs to be redrawn again when this function is used.

def trezor.ui.display.backlight(val: int) -> None

Sets backlight intensity to the value specified in val.

def trezor.ui.display.raw(reg: int, data: bytes) -> None

Performs a raw command on the display. Read the datasheet to learn more.

###trezor.utils

def trezor.utils.memaccess(address: int, length: int) -> bytes

Creates a bytes object that can be used to access certain memory location.