mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 15:38:11 +00:00
remove homebrew docu generator, use docstring syntax
This commit is contained in:
parent
c0dfe2d702
commit
9f40362482
435
docs/api.md
435
docs/api.md
@ -1,438 +1,3 @@
|
|||||||
#TREZOR Core API
|
#TREZOR Core API
|
||||||
|
|
||||||
Syntax used below is a valid Python function declaration with type hints defined in [PEP 0484](https://www.python.org/dev/peps/pep-0484/).
|
Syntax used below is a valid Python function declaration with type hints defined in [PEP 0484](https://www.python.org/dev/peps/pep-0484/).
|
||||||
|
|
||||||
##trezor.crypto
|
|
||||||
|
|
||||||
###trezor.crypto.base58
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.base58.encode(data: bytes) -> str
|
|
||||||
```
|
|
||||||
|
|
||||||
Convert bytes to base58 encoded string.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.base58.decode(string: str) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Convert base58 encoded string to bytes.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.base58.encode_check(data: bytes) -> str
|
|
||||||
```
|
|
||||||
|
|
||||||
Convert bytes to base58 encoded string, append checksum.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.base58.decode_check(string: str) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Convert base58 encoded string to bytes and verify checksum.
|
|
||||||
|
|
||||||
|
|
||||||
###trezor.crypto.bip39
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.bip39.generate(strength: int) -> str
|
|
||||||
```
|
|
||||||
|
|
||||||
Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits)
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.bip39.from_data(data: bytes) -> str
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.bip39.seed(mnemonic: str, passphrase: str) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Generate seed from mnemonic and passphrase
|
|
||||||
|
|
||||||
|
|
||||||
###trezor.crypto.curve
|
|
||||||
|
|
||||||
####trezor.crypto.curve.ed25519
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Computes public key from secret key.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Uses secret key to produce the signature of message.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Computes public key from secret key.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, message: bytes) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Uses secret key to produce the signature of message.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Computes public key from secret key.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, message: bytes) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Uses secret key to produce the signature of message.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a hash context object.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Ripemd160.update(self, data: bytes) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the hash context with hashed data.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Ripemd160.digest(self) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns the digest of hashed data.
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha256
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a hash context object.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha256.update(self, data: bytes) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the hash context with hashed data.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha256.digest(self) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns the digest of hashed data.
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha512
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a hash context object.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha512.hash(self, data: bytes) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the hash context with hashed data.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha512.digest(self) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns the digest of hashed data.
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha3_256
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a hash context object.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha3_256.update(self, data: bytes) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the hash context with hashed data.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha3_256.digest(self) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns the digest of hashed data.
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha3_512
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a hash context object.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha3_512.update(self, data: bytes) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the hash context with hashed data.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def Sha3_512.digest(self) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns the digest of hashed data.
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.random
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.random.uniform(n: int) -> int
|
|
||||||
```
|
|
||||||
|
|
||||||
Compute uniform random number from interval 0 ... n - 1
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.random.bytes(len: int) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Generate random bytes sequence of length len
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.random.shuffle(data: list) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Shuffles items of given list (in-place)
|
|
||||||
|
|
||||||
|
|
||||||
####trezor.crypto.ssss
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.ssss.split(m: int, n: int, secret: bytes) -> tuple
|
|
||||||
```
|
|
||||||
|
|
||||||
Split secret to (M of N) shares using Shamir's Secret Sharing Scheme
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.ssss.combine(shares: tuple) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Combine M shares of Shamir's Secret Sharing Scheme into secret
|
|
||||||
|
|
||||||
|
|
||||||
###trezor.crypto.hmac
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.crypto.hmac.new(key, msg, digestmod) -> Hmac
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.msg.setup(ifaces: list) -> None
|
|
||||||
```
|
|
||||||
|
|
||||||
Configures USB interfaces with a list of tuples (interface_number, usage_page)
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.msg.send(iface: int, message: bytes) -> int
|
|
||||||
```
|
|
||||||
|
|
||||||
Sends message using USB HID (device) or UDP (emulator).
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.ui.rgbcolor(r: int, g: int, b: int) -> int
|
|
||||||
```
|
|
||||||
``` python
|
|
||||||
def trezor.ui.in_area(pos: tuple, area: tuple) -> bool
|
|
||||||
```
|
|
||||||
``` 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)
|
|
||||||
```
|
|
||||||
``` python
|
|
||||||
def trezor.ui.rotate_coords(pos: tuple) -> tuple
|
|
||||||
```
|
|
||||||
|
|
||||||
###trezor.ui.display
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.ui.display.text_width(text: bytes, font: int) -> int
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
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) -> int
|
|
||||||
```
|
|
||||||
|
|
||||||
Sets display orientation to 0, 90, 180 or 270 degrees.
|
|
||||||
Everything needs to be redrawn again when this function is used.
|
|
||||||
Call without the degrees parameter to just perform the read of the value.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.ui.display.backlight(val: int=None) -> int
|
|
||||||
```
|
|
||||||
|
|
||||||
Sets backlight intensity to the value specified in val.
|
|
||||||
Call without the val parameter to just perform the read of the value.
|
|
||||||
|
|
||||||
``` python
|
|
||||||
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
|
|
||||||
|
|
||||||
``` python
|
|
||||||
def trezor.utils.memaccess(address: int, length: int) -> bytes
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a bytes object that can be used to access certain memory location.
|
|
||||||
|
|
||||||
|
59
docs/api.py
59
docs/api.py
@ -1,59 +0,0 @@
|
|||||||
#!/usr/bin/python3
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
|
|
||||||
def process_file(fn):
|
|
||||||
mod, ext = os.path.splitext(fn)
|
|
||||||
src = open('../%s' % (fn)).readlines()
|
|
||||||
r = []
|
|
||||||
cls = ''
|
|
||||||
if ext in ['.h', '.c']:
|
|
||||||
for l in src:
|
|
||||||
l = l.rstrip()
|
|
||||||
if l.startswith('/// def '):
|
|
||||||
r.append('``` python')
|
|
||||||
r.append(l[4:])
|
|
||||||
r.append('```')
|
|
||||||
elif l.startswith('/// '):
|
|
||||||
r.append(l[4:])
|
|
||||||
elif l == '///':
|
|
||||||
r.append('')
|
|
||||||
elif ext == '.py':
|
|
||||||
mod = mod[4:].replace('/', '.')
|
|
||||||
if mod.endswith('.__init__'):
|
|
||||||
mod = mod[:-9]
|
|
||||||
for l in src:
|
|
||||||
l = l.rstrip()
|
|
||||||
if l.startswith('def '):
|
|
||||||
r.append('``` python')
|
|
||||||
r.append('def %s.' % mod + l[4:-1])
|
|
||||||
r.append('```')
|
|
||||||
elif l.startswith('### '):
|
|
||||||
r.append(l[4:])
|
|
||||||
elif l.startswith('###'):
|
|
||||||
r.append('')
|
|
||||||
elif l.startswith('class '):
|
|
||||||
cls = re.match('class ([A-Za-z0-9_]*)', l).group(1)
|
|
||||||
elif l.startswith(' def ') and not l.startswith(' def __init__'):
|
|
||||||
r.append('``` python')
|
|
||||||
r.append('def %s.' % cls + l[8:-1])
|
|
||||||
r.append('```')
|
|
||||||
elif l.startswith(' ### '):
|
|
||||||
r.append(l[8:])
|
|
||||||
elif l.startswith(' ###'):
|
|
||||||
r.append('')
|
|
||||||
return r
|
|
||||||
|
|
||||||
def main():
|
|
||||||
tpl = open('api.template.md', 'rt').readlines()
|
|
||||||
f = open('api.md', 'wt')
|
|
||||||
for line in tpl:
|
|
||||||
if line.startswith('@'):
|
|
||||||
for l in process_file(line[1:].strip()):
|
|
||||||
f.write(l + '\n')
|
|
||||||
else:
|
|
||||||
f.write(line)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,77 +0,0 @@
|
|||||||
#TREZOR Core API
|
|
||||||
|
|
||||||
Syntax used below is a valid Python function declaration with type hints defined in [PEP 0484](https://www.python.org/dev/peps/pep-0484/).
|
|
||||||
|
|
||||||
##trezor.crypto
|
|
||||||
|
|
||||||
###trezor.crypto.base58
|
|
||||||
|
|
||||||
@src/trezor/crypto/base58.py
|
|
||||||
|
|
||||||
###trezor.crypto.bip39
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-bip39.h
|
|
||||||
|
|
||||||
###trezor.crypto.curve
|
|
||||||
|
|
||||||
####trezor.crypto.curve.ed25519
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h
|
|
||||||
|
|
||||||
####trezor.crypto.curve.nist256p1
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-nist256p1.h
|
|
||||||
|
|
||||||
####trezor.crypto.curve.secp256k1
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-secp256k1.h
|
|
||||||
|
|
||||||
###trezor.crypto.hashlib
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.ripemd160
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha256
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-sha256.h
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha512
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-sha512.h
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha3_256
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
|
|
||||||
|
|
||||||
####trezor.crypto.hashlib.sha3_512
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
|
|
||||||
|
|
||||||
####trezor.crypto.random
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-random.h
|
|
||||||
|
|
||||||
####trezor.crypto.ssss
|
|
||||||
|
|
||||||
@extmod/modtrezorcrypto/modtrezorcrypto-ssss.h
|
|
||||||
|
|
||||||
###trezor.crypto.hmac
|
|
||||||
|
|
||||||
@src/trezor/crypto/hmac.py
|
|
||||||
|
|
||||||
##trezor.msg
|
|
||||||
|
|
||||||
@extmod/modtrezormsg/modtrezormsg.c
|
|
||||||
|
|
||||||
##trezor.ui
|
|
||||||
|
|
||||||
@src/trezor/ui/__init__.py
|
|
||||||
|
|
||||||
###trezor.ui.display
|
|
||||||
|
|
||||||
@extmod/modtrezorui/modtrezorui-display.h
|
|
||||||
|
|
||||||
###trezor.utils
|
|
||||||
|
|
||||||
@extmod/modtrezorutils/modtrezorutils.c
|
|
@ -27,11 +27,20 @@ STATIC mp_obj_t mod_TrezorConfig_Config_make_new(const mp_obj_type_t *type, size
|
|||||||
return MP_OBJ_FROM_PTR(o);
|
return MP_OBJ_FROM_PTR(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// def trezor.config.get(app: int, key: int) -> bytes
|
||||||
|
/// '''
|
||||||
|
/// Gets a value of given key for given app (or None if not set).
|
||||||
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorConfig_Config_get(mp_obj_t self, mp_obj_t app, mp_obj_t key) {
|
STATIC mp_obj_t mod_TrezorConfig_Config_get(mp_obj_t self, mp_obj_t app, mp_obj_t key) {
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorConfig_Config_get_obj, mod_TrezorConfig_Config_get);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorConfig_Config_get_obj, mod_TrezorConfig_Config_get);
|
||||||
|
|
||||||
|
/// def trezor.config.set(app: int, key: int) -> bool
|
||||||
|
/// '''
|
||||||
|
/// Sets a value of given key for given app.
|
||||||
|
/// Returns True on success.
|
||||||
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorConfig_Config_set(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorConfig_Config_set(size_t n_args, const mp_obj_t *args) {
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_make_new(const mp_obj_type_t *type, size_
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.bip39.generate(strength: int) -> str
|
/// def trezor.crypto.bip39.generate(strength: int) -> str
|
||||||
///
|
/// '''
|
||||||
/// Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits)
|
/// Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits)
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_generate(mp_obj_t self, mp_obj_t strength) {
|
STATIC mp_obj_t mod_TrezorCrypto_Bip39_generate(mp_obj_t self, mp_obj_t strength) {
|
||||||
int bits = mp_obj_get_int(strength);
|
int bits = mp_obj_get_int(strength);
|
||||||
if (bits % 32 || bits < 128 || bits > 256) {
|
if (bits % 32 || bits < 128 || bits > 256) {
|
||||||
@ -38,9 +38,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_generate(mp_obj_t self, mp_obj_t strength
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_generate_obj, mod_TrezorCrypto_Bip39_generate);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_generate_obj, mod_TrezorCrypto_Bip39_generate);
|
||||||
|
|
||||||
/// def trezor.crypto.bip39.from_data(data: bytes) -> str
|
/// def trezor.crypto.bip39.from_data(data: bytes) -> str
|
||||||
///
|
/// '''
|
||||||
/// Generate a mnemonic from given data (of 16, 20, 24, 28 and 32 bytes)
|
/// Generate a mnemonic from given data (of 16, 20, 24, 28 and 32 bytes)
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_from_data(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Bip39_from_data(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_buffer_info_t bin;
|
mp_buffer_info_t bin;
|
||||||
mp_get_buffer_raise(data, &bin, MP_BUFFER_READ);
|
mp_get_buffer_raise(data, &bin, MP_BUFFER_READ);
|
||||||
@ -56,9 +56,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_from_data(mp_obj_t self, mp_obj_t data) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_from_data_obj, mod_TrezorCrypto_Bip39_from_data);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_from_data_obj, mod_TrezorCrypto_Bip39_from_data);
|
||||||
|
|
||||||
/// def trezor.crypto.bip39.check(mnemonic: str) -> bool
|
/// def trezor.crypto.bip39.check(mnemonic: str) -> bool
|
||||||
///
|
/// '''
|
||||||
/// Check whether given mnemonic is valid
|
/// Check whether given mnemonic is valid
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_check(mp_obj_t self, mp_obj_t mnemonic) {
|
STATIC mp_obj_t mod_TrezorCrypto_Bip39_check(mp_obj_t self, mp_obj_t mnemonic) {
|
||||||
mp_buffer_info_t text;
|
mp_buffer_info_t text;
|
||||||
mp_get_buffer_raise(mnemonic, &text, MP_BUFFER_READ);
|
mp_get_buffer_raise(mnemonic, &text, MP_BUFFER_READ);
|
||||||
@ -67,9 +67,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_check(mp_obj_t self, mp_obj_t mnemonic) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_check_obj, mod_TrezorCrypto_Bip39_check);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_check_obj, mod_TrezorCrypto_Bip39_check);
|
||||||
|
|
||||||
/// def trezor.crypto.bip39.seed(mnemonic: str, passphrase: str) -> bytes
|
/// def trezor.crypto.bip39.seed(mnemonic: str, passphrase: str) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Generate seed from mnemonic and passphrase
|
/// Generate seed from mnemonic and passphrase
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_seed(mp_obj_t self, mp_obj_t mnemonic, mp_obj_t passphrase) {
|
STATIC mp_obj_t mod_TrezorCrypto_Bip39_seed(mp_obj_t self, mp_obj_t mnemonic, mp_obj_t passphrase) {
|
||||||
mp_buffer_info_t mnemo;
|
mp_buffer_info_t mnemo;
|
||||||
mp_buffer_info_t phrase;
|
mp_buffer_info_t phrase;
|
||||||
|
@ -21,9 +21,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_make_new(const mp_obj_type_t *type, siz
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes
|
/// def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Computes public key from secret key.
|
/// Computes public key from secret key.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_publickey(mp_obj_t self, mp_obj_t secret_key) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_publickey(mp_obj_t self, mp_obj_t secret_key) {
|
||||||
mp_buffer_info_t sk;
|
mp_buffer_info_t sk;
|
||||||
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
||||||
@ -38,9 +38,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_publickey(mp_obj_t self, mp_obj_t secre
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ed25519_publickey_obj, mod_TrezorCrypto_Ed25519_publickey);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ed25519_publickey_obj, mod_TrezorCrypto_Ed25519_publickey);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes
|
/// def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Uses secret key to produce the signature of message.
|
/// Uses secret key to produce the signature of message.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
||||||
mp_buffer_info_t sk, msg;
|
mp_buffer_info_t sk, msg;
|
||||||
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
||||||
@ -58,10 +58,10 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_sign(mp_obj_t self, mp_obj_t secret_key
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Ed25519_sign_obj, mod_TrezorCrypto_Ed25519_sign);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Ed25519_sign_obj, mod_TrezorCrypto_Ed25519_sign);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.ed25519.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
/// def trezor.crypto.curve.ed25519.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
||||||
///
|
/// '''
|
||||||
/// Uses public key to verify the signature of the message
|
/// Uses public key to verify the signature of the message.
|
||||||
/// Returns True on success.
|
/// Returns True on success.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_verify(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_verify(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t pk, sig, msg;
|
mp_buffer_info_t pk, sig, msg;
|
||||||
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
||||||
|
@ -22,9 +22,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_make_new(const mp_obj_type_t *type, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
/// def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Computes public key from secret key.
|
/// Computes public key from secret key.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_publickey(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_publickey(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t sk;
|
mp_buffer_info_t sk;
|
||||||
mp_get_buffer_raise(args[1], &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(args[1], &sk, MP_BUFFER_READ);
|
||||||
@ -45,9 +45,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_publickey(size_t n_args, const mp_obj
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Nist256p1_publickey_obj, 2, 3, mod_TrezorCrypto_Nist256p1_publickey);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Nist256p1_publickey_obj, 2, 3, mod_TrezorCrypto_Nist256p1_publickey);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, message: bytes) -> bytes
|
/// def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, message: bytes) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Uses secret key to produce the signature of message.
|
/// Uses secret key to produce the signature of message.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
||||||
mp_buffer_info_t sk, msg;
|
mp_buffer_info_t sk, msg;
|
||||||
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
||||||
@ -67,10 +67,10 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_sign(mp_obj_t self, mp_obj_t secret_k
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Nist256p1_sign_obj, mod_TrezorCrypto_Nist256p1_sign);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Nist256p1_sign_obj, mod_TrezorCrypto_Nist256p1_sign);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.nist256p1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
/// def trezor.crypto.curve.nist256p1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
||||||
///
|
/// '''
|
||||||
/// Uses public key to verify the signature of the message
|
/// Uses public key to verify the signature of the message
|
||||||
/// Returns True on success.
|
/// Returns True on success.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_verify(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_verify(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t pk, sig, msg;
|
mp_buffer_info_t pk, sig, msg;
|
||||||
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
||||||
|
@ -21,9 +21,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_make_new(const mp_obj_type_t *type, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.random.uniform(n: int) -> int
|
/// def trezor.crypto.random.uniform(n: int) -> int
|
||||||
///
|
/// '''
|
||||||
/// Compute uniform random number from interval 0 ... n - 1
|
/// Compute uniform random number from interval 0 ... n - 1
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Random_uniform(mp_obj_t self, mp_obj_t n) {
|
STATIC mp_obj_t mod_TrezorCrypto_Random_uniform(mp_obj_t self, mp_obj_t n) {
|
||||||
uint32_t nn = mp_obj_get_int(n);
|
uint32_t nn = mp_obj_get_int(n);
|
||||||
if (nn == 0) {
|
if (nn == 0) {
|
||||||
@ -34,9 +34,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_uniform(mp_obj_t self, mp_obj_t n) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_uniform_obj, mod_TrezorCrypto_Random_uniform);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_uniform_obj, mod_TrezorCrypto_Random_uniform);
|
||||||
|
|
||||||
/// def trezor.crypto.random.bytes(len: int) -> bytes
|
/// def trezor.crypto.random.bytes(len: int) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Generate random bytes sequence of length len
|
/// Generate random bytes sequence of length len
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Random_bytes(mp_obj_t self, mp_obj_t len) {
|
STATIC mp_obj_t mod_TrezorCrypto_Random_bytes(mp_obj_t self, mp_obj_t len) {
|
||||||
uint32_t l = mp_obj_get_int(len);
|
uint32_t l = mp_obj_get_int(len);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
@ -47,9 +47,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_bytes(mp_obj_t self, mp_obj_t len) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_bytes_obj, mod_TrezorCrypto_Random_bytes);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_bytes_obj, mod_TrezorCrypto_Random_bytes);
|
||||||
|
|
||||||
/// def trezor.crypto.random.shuffle(data: list) -> None
|
/// def trezor.crypto.random.shuffle(data: list) -> None
|
||||||
///
|
/// '''
|
||||||
/// Shuffles items of given list (in-place)
|
/// Shuffles items of given list (in-place)
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Random_shuffle(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Random_shuffle(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_uint_t item_cnt;
|
mp_uint_t item_cnt;
|
||||||
mp_obj_t *items;
|
mp_obj_t *items;
|
||||||
|
@ -20,9 +20,9 @@ typedef struct _mp_obj_Ripemd160_t {
|
|||||||
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data);
|
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data);
|
||||||
|
|
||||||
/// def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160
|
/// def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160
|
||||||
///
|
/// '''
|
||||||
/// Creates a hash context object.
|
/// Creates a hash context object.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
||||||
mp_obj_Ripemd160_t *o = m_new_obj(mp_obj_Ripemd160_t);
|
mp_obj_Ripemd160_t *o = m_new_obj(mp_obj_Ripemd160_t);
|
||||||
@ -36,9 +36,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_make_new(const mp_obj_type_t *type, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def Ripemd160.update(self, data: bytes) -> None
|
/// def Ripemd160.update(self, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Update the hash context with hashed data.
|
/// Update the hash context with hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -49,9 +49,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data)
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ripemd160_update_obj, mod_TrezorCrypto_Ripemd160_update);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ripemd160_update_obj, mod_TrezorCrypto_Ripemd160_update);
|
||||||
|
|
||||||
/// def Ripemd160.digest(self) -> bytes
|
/// def Ripemd160.digest(self) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Returns the digest of hashed data.
|
/// Returns the digest of hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_digest(mp_obj_t self) {
|
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_digest(mp_obj_t self) {
|
||||||
mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
|
@ -22,9 +22,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_make_new(const mp_obj_type_t *type, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
/// def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Computes public key from secret key.
|
/// Computes public key from secret key.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_publickey(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_publickey(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t sk;
|
mp_buffer_info_t sk;
|
||||||
mp_get_buffer_raise(args[1], &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(args[1], &sk, MP_BUFFER_READ);
|
||||||
@ -45,9 +45,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_publickey(size_t n_args, const mp_obj
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Secp256k1_publickey_obj, 2, 3, mod_TrezorCrypto_Secp256k1_publickey);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Secp256k1_publickey_obj, 2, 3, mod_TrezorCrypto_Secp256k1_publickey);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, message: bytes) -> bytes
|
/// def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, message: bytes) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Uses secret key to produce the signature of message.
|
/// Uses secret key to produce the signature of message.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_sign(mp_obj_t self, mp_obj_t secret_key, mp_obj_t message) {
|
||||||
mp_buffer_info_t sk, msg;
|
mp_buffer_info_t sk, msg;
|
||||||
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ);
|
||||||
@ -67,10 +67,10 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_sign(mp_obj_t self, mp_obj_t secret_k
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Secp256k1_sign_obj, mod_TrezorCrypto_Secp256k1_sign);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Secp256k1_sign_obj, mod_TrezorCrypto_Secp256k1_sign);
|
||||||
|
|
||||||
/// def trezor.crypto.curve.secp256k1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
/// def trezor.crypto.curve.secp256k1.verify(public_key: bytes, signature: bytes, message: bytes) -> bool
|
||||||
///
|
/// '''
|
||||||
/// Uses public key to verify the signature of the message
|
/// Uses public key to verify the signature of the message
|
||||||
/// Returns True on success.
|
/// Returns True on success.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_verify(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_verify(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t pk, sig, msg;
|
mp_buffer_info_t pk, sig, msg;
|
||||||
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
mp_get_buffer_raise(args[1], &pk, MP_BUFFER_READ);
|
||||||
|
@ -20,9 +20,9 @@ typedef struct _mp_obj_Sha256_t {
|
|||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data);
|
STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data);
|
||||||
|
|
||||||
/// def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256
|
/// def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256
|
||||||
///
|
/// '''
|
||||||
/// Creates a hash context object.
|
/// Creates a hash context object.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
||||||
mp_obj_Sha256_t *o = m_new_obj(mp_obj_Sha256_t);
|
mp_obj_Sha256_t *o = m_new_obj(mp_obj_Sha256_t);
|
||||||
@ -36,9 +36,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha256_make_new(const mp_obj_type_t *type, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def Sha256.update(self, data: bytes) -> None
|
/// def Sha256.update(self, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Update the hash context with hashed data.
|
/// Update the hash context with hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_obj_Sha256_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha256_t *o = MP_OBJ_TO_PTR(self);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -49,9 +49,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha256_update_obj, mod_TrezorCrypto_Sha256_update);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha256_update_obj, mod_TrezorCrypto_Sha256_update);
|
||||||
|
|
||||||
/// def Sha256.digest(self) -> bytes
|
/// def Sha256.digest(self) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Returns the digest of hashed data.
|
/// Returns the digest of hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha256_digest(mp_obj_t self) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha256_digest(mp_obj_t self) {
|
||||||
mp_obj_Sha256_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha256_t *o = MP_OBJ_TO_PTR(self);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
|
@ -20,9 +20,9 @@ typedef struct _mp_obj_Sha3_256_t {
|
|||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data);
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data);
|
||||||
|
|
||||||
/// def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256
|
/// def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256
|
||||||
///
|
/// '''
|
||||||
/// Creates a hash context object.
|
/// Creates a hash context object.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
||||||
mp_obj_Sha3_256_t *o = m_new_obj(mp_obj_Sha3_256_t);
|
mp_obj_Sha3_256_t *o = m_new_obj(mp_obj_Sha3_256_t);
|
||||||
@ -36,9 +36,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_make_new(const mp_obj_type_t *type, si
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def Sha3_256.update(self, data: bytes) -> None
|
/// def Sha3_256.update(self, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Update the hash context with hashed data.
|
/// Update the hash context with hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(self);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -49,9 +49,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_256_update_obj, mod_TrezorCrypto_Sha3_256_update);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_256_update_obj, mod_TrezorCrypto_Sha3_256_update);
|
||||||
|
|
||||||
/// def Sha3_256.digest(self) -> bytes
|
/// def Sha3_256.digest(self) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Returns the digest of hashed data.
|
/// Returns the digest of hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_digest(mp_obj_t self) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_digest(mp_obj_t self) {
|
||||||
mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(self);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
|
@ -20,9 +20,9 @@ typedef struct _mp_obj_Sha3_512_t {
|
|||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data);
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data);
|
||||||
|
|
||||||
/// def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512
|
/// def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512
|
||||||
///
|
/// '''
|
||||||
/// Creates a hash context object.
|
/// Creates a hash context object.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
||||||
mp_obj_Sha3_512_t *o = m_new_obj(mp_obj_Sha3_512_t);
|
mp_obj_Sha3_512_t *o = m_new_obj(mp_obj_Sha3_512_t);
|
||||||
@ -36,9 +36,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_make_new(const mp_obj_type_t *type, si
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def Sha3_512.update(self, data: bytes) -> None
|
/// def Sha3_512.update(self, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Update the hash context with hashed data.
|
/// Update the hash context with hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -49,9 +49,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_512_update_obj, mod_TrezorCrypto_Sha3_512_update);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_512_update_obj, mod_TrezorCrypto_Sha3_512_update);
|
||||||
|
|
||||||
/// def Sha3_512.digest(self) -> bytes
|
/// def Sha3_512.digest(self) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Returns the digest of hashed data.
|
/// Returns the digest of hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_digest(mp_obj_t self) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_digest(mp_obj_t self) {
|
||||||
mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(self);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
|
@ -20,9 +20,9 @@ typedef struct _mp_obj_Sha512_t {
|
|||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data);
|
STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data);
|
||||||
|
|
||||||
/// def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512
|
/// def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512
|
||||||
///
|
/// '''
|
||||||
/// Creates a hash context object.
|
/// Creates a hash context object.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||||
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
mp_arg_check_num(n_args, n_kw, 0, 1, false);
|
||||||
mp_obj_Sha512_t *o = m_new_obj(mp_obj_Sha512_t);
|
mp_obj_Sha512_t *o = m_new_obj(mp_obj_Sha512_t);
|
||||||
@ -35,9 +35,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha512_make_new(const mp_obj_type_t *type, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def Sha512.hash(self, data: bytes) -> None
|
/// def Sha512.hash(self, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Update the hash context with hashed data.
|
/// Update the hash context with hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data) {
|
||||||
mp_obj_Sha512_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha512_t *o = MP_OBJ_TO_PTR(self);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -48,9 +48,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha512_update_obj, mod_TrezorCrypto_Sha512_update);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha512_update_obj, mod_TrezorCrypto_Sha512_update);
|
||||||
|
|
||||||
/// def Sha512.digest(self) -> bytes
|
/// def Sha512.digest(self) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Returns the digest of hashed data.
|
/// Returns the digest of hashed data.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_Sha512_digest(mp_obj_t self) {
|
STATIC mp_obj_t mod_TrezorCrypto_Sha512_digest(mp_obj_t self) {
|
||||||
mp_obj_Sha512_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_Sha512_t *o = MP_OBJ_TO_PTR(self);
|
||||||
vstr_t vstr;
|
vstr_t vstr;
|
||||||
|
@ -22,9 +22,9 @@ STATIC mp_obj_t mod_TrezorCrypto_SSSS_make_new(const mp_obj_type_t *type, size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.crypto.ssss.split(m: int, n: int, secret: bytes) -> tuple
|
/// def trezor.crypto.ssss.split(m: int, n: int, secret: bytes) -> tuple
|
||||||
///
|
/// '''
|
||||||
/// Split secret to (M of N) shares using Shamir's Secret Sharing Scheme
|
/// Split secret to (M of N) shares using Shamir's Secret Sharing Scheme
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_SSSS_split(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorCrypto_SSSS_split(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t m = mp_obj_get_int(args[1]);
|
mp_int_t m = mp_obj_get_int(args[1]);
|
||||||
mp_int_t n = mp_obj_get_int(args[2]);
|
mp_int_t n = mp_obj_get_int(args[2]);
|
||||||
@ -54,9 +54,9 @@ STATIC mp_obj_t mod_TrezorCrypto_SSSS_split(size_t n_args, const mp_obj_t *args)
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_SSSS_split_obj, 4, 4, mod_TrezorCrypto_SSSS_split);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_SSSS_split_obj, 4, 4, mod_TrezorCrypto_SSSS_split);
|
||||||
|
|
||||||
/// def trezor.crypto.ssss.combine(shares: tuple) -> bytes
|
/// def trezor.crypto.ssss.combine(shares: tuple) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Combine M shares of Shamir's Secret Sharing Scheme into secret
|
/// Combine M shares of Shamir's Secret Sharing Scheme into secret
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorCrypto_SSSS_combine(mp_obj_t self, mp_obj_t shares) {
|
STATIC mp_obj_t mod_TrezorCrypto_SSSS_combine(mp_obj_t self, mp_obj_t shares) {
|
||||||
mp_uint_t n;
|
mp_uint_t n;
|
||||||
mp_obj_t *share;
|
mp_obj_t *share;
|
||||||
|
@ -37,9 +37,9 @@ STATIC mp_obj_t mod_TrezorMsg_Msg_make_new(const mp_obj_type_t *type, size_t n_a
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.msg.setup(ifaces: list) -> None
|
/// def trezor.msg.setup(ifaces: list) -> None
|
||||||
///
|
/// '''
|
||||||
/// Configures USB interfaces with a list of tuples (interface_number, usage_page)
|
/// Configures USB interfaces with a list of tuples (interface_number, usage_page)
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorMsg_Msg_setup(mp_obj_t self, mp_obj_t ifaces) {
|
STATIC mp_obj_t mod_TrezorMsg_Msg_setup(mp_obj_t self, mp_obj_t ifaces) {
|
||||||
mp_uint_t iface_cnt;
|
mp_uint_t iface_cnt;
|
||||||
mp_obj_t *iface;
|
mp_obj_t *iface;
|
||||||
@ -68,9 +68,9 @@ STATIC mp_obj_t mod_TrezorMsg_Msg_setup(mp_obj_t self, mp_obj_t ifaces) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorMsg_Msg_setup_obj, mod_TrezorMsg_Msg_setup);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorMsg_Msg_setup_obj, mod_TrezorMsg_Msg_setup);
|
||||||
|
|
||||||
/// def trezor.msg.send(iface: int, message: bytes) -> int
|
/// def trezor.msg.send(iface: int, message: bytes) -> int
|
||||||
///
|
/// '''
|
||||||
/// Sends message using USB HID (device) or UDP (emulator).
|
/// Sends message using USB HID (device) or UDP (emulator).
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorMsg_Msg_send(mp_obj_t self, mp_obj_t iface, mp_obj_t message) {
|
STATIC mp_obj_t mod_TrezorMsg_Msg_send(mp_obj_t self, mp_obj_t iface, mp_obj_t message) {
|
||||||
uint8_t iface_num = mp_obj_get_int(iface);
|
uint8_t iface_num = mp_obj_get_int(iface);
|
||||||
mp_buffer_info_t msg;
|
mp_buffer_info_t msg;
|
||||||
@ -84,10 +84,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorMsg_Msg_send_obj, mod_TrezorMsg_Msg_s
|
|||||||
#define TOUCH_IFACE 256
|
#define TOUCH_IFACE 256
|
||||||
|
|
||||||
/// def trezor.msg.select(timeout_us: int) -> tuple
|
/// def trezor.msg.select(timeout_us: int) -> tuple
|
||||||
///
|
/// '''
|
||||||
/// Polls the event queue and returns the event object.
|
/// Polls the event queue and returns the event object.
|
||||||
/// Function returns None if timeout specified in microseconds is reached.
|
/// Function returns None if timeout specified in microseconds is reached.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorMsg_Msg_select(mp_obj_t self, mp_obj_t timeout_us) {
|
STATIC mp_obj_t mod_TrezorMsg_Msg_select(mp_obj_t self, mp_obj_t timeout_us) {
|
||||||
int timeout = mp_obj_get_int(timeout_us);
|
int timeout = mp_obj_get_int(timeout_us);
|
||||||
if (timeout < 0) {
|
if (timeout < 0) {
|
||||||
|
@ -22,10 +22,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_make_new(const mp_obj_type_t *type, size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.ui.display.bar(x: int, y: int, w: int, h: int, fgcolor: int, bgcolor: int=None) -> None
|
/// 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.
|
/// 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.
|
/// When a bgcolor is set, the bar is drawn with rounded corners and bgcolor is used for background.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_bar(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_bar(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -46,10 +46,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_bar(size_t n_args, const mp_obj_t *args) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_bar_obj, 6, 7, mod_TrezorUi_Display_bar);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_bar_obj, 6, 7, mod_TrezorUi_Display_bar);
|
||||||
|
|
||||||
/// def trezor.ui.display.blit(x: int, y: int, w: int, h: int, data: bytes) -> None
|
/// 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.
|
/// 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.
|
/// The data needs to have the correct format.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_blit(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_blit(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -66,10 +66,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_blit(size_t n_args, const mp_obj_t *args) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_blit_obj, 6, 6, mod_TrezorUi_Display_blit);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_blit_obj, 6, 6, mod_TrezorUi_Display_blit);
|
||||||
|
|
||||||
/// def trezor.ui.display.image(x: int, y: int, image: bytes) -> None
|
/// def trezor.ui.display.image(x: int, y: int, image: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Renders an image at position (x,y).
|
/// Renders an image at position (x,y).
|
||||||
/// The image needs to be in TREZOR Optimized Image Format (TOIF) - full-color mode.
|
/// The image needs to be in TREZOR Optimized Image Format (TOIF) - full-color mode.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_image(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_image(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -94,10 +94,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_image(size_t n_args, const mp_obj_t *args)
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_image_obj, 4, 4, mod_TrezorUi_Display_image);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_image_obj, 4, 4, mod_TrezorUi_Display_image);
|
||||||
|
|
||||||
/// def trezor.ui.display.icon(x: int, y: int, icon: bytes, fgcolor: int, bgcolor: int) -> None
|
/// 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.
|
/// 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.
|
/// The image needs to be in TREZOR Optimized Image Format (TOIF) - gray-scale mode.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_icon(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_icon(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -124,10 +124,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_icon(size_t n_args, const mp_obj_t *args) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_icon_obj, 6, 6, mod_TrezorUi_Display_icon);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_icon_obj, 6, 6, mod_TrezorUi_Display_icon);
|
||||||
|
|
||||||
/// def trezor.ui.display.text(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
|
/// 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.
|
/// 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.
|
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_text(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_text(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -142,10 +142,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_text(size_t n_args, const mp_obj_t *args) {
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_obj, 7, 7, mod_TrezorUi_Display_text);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_obj, 7, 7, mod_TrezorUi_Display_text);
|
||||||
|
|
||||||
/// def trezor.ui.display.text_center(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
|
/// 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.
|
/// 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.
|
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_text_center(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_text_center(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -161,10 +161,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_text_center(size_t n_args, const mp_obj_t *
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_center_obj, 7, 7, mod_TrezorUi_Display_text_center);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_center_obj, 7, 7, mod_TrezorUi_Display_text_center);
|
||||||
|
|
||||||
/// def trezor.ui.display.text_right(x: int, y: int, text: bytes, font: int, fgcolor: int, bgcolor: int) -> None
|
/// 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.
|
/// 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.
|
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_text_right(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_text_right(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -180,9 +180,9 @@ STATIC mp_obj_t mod_TrezorUi_Display_text_right(size_t n_args, const mp_obj_t *a
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_right_obj, 7, 7, mod_TrezorUi_Display_text_right);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_text_right_obj, 7, 7, mod_TrezorUi_Display_text_right);
|
||||||
|
|
||||||
/// def trezor.ui.display.text_width(text: bytes, font: int) -> int
|
/// def trezor.ui.display.text_width(text: bytes, font: int) -> int
|
||||||
///
|
/// '''
|
||||||
/// Returns a width of text in pixels. Font font is used for rendering.
|
/// Returns a width of text in pixels. Font font is used for rendering.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_text_width(mp_obj_t self, mp_obj_t text, mp_obj_t font) {
|
STATIC mp_obj_t mod_TrezorUi_Display_text_width(mp_obj_t self, mp_obj_t text, mp_obj_t font) {
|
||||||
mp_buffer_info_t txt;
|
mp_buffer_info_t txt;
|
||||||
mp_get_buffer_raise(text, &txt, MP_BUFFER_READ);
|
mp_get_buffer_raise(text, &txt, MP_BUFFER_READ);
|
||||||
@ -193,10 +193,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_text_width(mp_obj_t self, mp_obj_t text, mp
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorUi_Display_text_width_obj, mod_TrezorUi_Display_text_width);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorUi_Display_text_width_obj, mod_TrezorUi_Display_text_width);
|
||||||
|
|
||||||
/// def trezor.ui.display.qrcode(x: int, y: int, data: bytes, scale: int) -> None
|
/// 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).
|
/// Renders data encoded as a QR code at position (x,y).
|
||||||
/// Scale determines a zoom factor.
|
/// Scale determines a zoom factor.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_qrcode(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_qrcode(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t x = mp_obj_get_int(args[1]);
|
mp_int_t x = mp_obj_get_int(args[1]);
|
||||||
mp_int_t y = mp_obj_get_int(args[2]);
|
mp_int_t y = mp_obj_get_int(args[2]);
|
||||||
@ -212,12 +212,12 @@ STATIC mp_obj_t mod_TrezorUi_Display_qrcode(size_t n_args, const mp_obj_t *args)
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_qrcode_obj, 5, 5, mod_TrezorUi_Display_qrcode);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_qrcode_obj, 5, 5, mod_TrezorUi_Display_qrcode);
|
||||||
|
|
||||||
/// def trezor.ui.display.loader(progress: int, fgcolor: int, bgcolor: int, icon: bytes=None, iconfgcolor: int=None) -> None
|
/// def trezor.ui.display.loader(progress: int, fgcolor: int, bgcolor: int, icon: bytes=None, iconfgcolor: int=None) -> None
|
||||||
///
|
/// '''
|
||||||
/// Renders a rotating loader graphic.
|
/// Renders a rotating loader graphic.
|
||||||
/// Progress determines its position (0-1000), fgcolor is used as foreground color, bgcolor as background.
|
/// 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.
|
/// 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.
|
/// Icon needs to be of exaclty 96x96 pixels size.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_loader(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_loader(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t progress = mp_obj_get_int(args[1]);
|
mp_int_t progress = mp_obj_get_int(args[1]);
|
||||||
mp_int_t fgcolor = mp_obj_get_int(args[2]);
|
mp_int_t fgcolor = mp_obj_get_int(args[2]);
|
||||||
@ -253,11 +253,11 @@ STATIC mp_obj_t mod_TrezorUi_Display_loader(size_t n_args, const mp_obj_t *args)
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_loader_obj, 4, 6, mod_TrezorUi_Display_loader);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_loader_obj, 4, 6, mod_TrezorUi_Display_loader);
|
||||||
|
|
||||||
/// def trezor.ui.display.orientation(degrees: int=None) -> int
|
/// def trezor.ui.display.orientation(degrees: int=None) -> int
|
||||||
///
|
/// '''
|
||||||
/// Sets display orientation to 0, 90, 180 or 270 degrees.
|
/// Sets display orientation to 0, 90, 180 or 270 degrees.
|
||||||
/// Everything needs to be redrawn again when this function is used.
|
/// Everything needs to be redrawn again when this function is used.
|
||||||
/// Call without the degrees parameter to just perform the read of the value.
|
/// Call without the degrees parameter to just perform the read of the value.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_orientation(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_orientation(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t deg;
|
mp_int_t deg;
|
||||||
if (n_args > 1) {
|
if (n_args > 1) {
|
||||||
@ -274,10 +274,10 @@ STATIC mp_obj_t mod_TrezorUi_Display_orientation(size_t n_args, const mp_obj_t *
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_orientation_obj, 1, 2, mod_TrezorUi_Display_orientation);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_orientation_obj, 1, 2, mod_TrezorUi_Display_orientation);
|
||||||
|
|
||||||
/// def trezor.ui.display.backlight(val: int=None) -> int
|
/// def trezor.ui.display.backlight(val: int=None) -> int
|
||||||
///
|
/// '''
|
||||||
/// Sets backlight intensity to the value specified in val.
|
/// Sets backlight intensity to the value specified in val.
|
||||||
/// Call without the val parameter to just perform the read of the value.
|
/// Call without the val parameter to just perform the read of the value.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_backlight(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_TrezorUi_Display_backlight(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_int_t val;
|
mp_int_t val;
|
||||||
if (n_args > 1) {
|
if (n_args > 1) {
|
||||||
@ -294,9 +294,9 @@ STATIC mp_obj_t mod_TrezorUi_Display_backlight(size_t n_args, const mp_obj_t *ar
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_backlight_obj, 1, 2, mod_TrezorUi_Display_backlight);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUi_Display_backlight_obj, 1, 2, mod_TrezorUi_Display_backlight);
|
||||||
|
|
||||||
/// def trezor.ui.display.raw(reg: int, data: bytes) -> None
|
/// def trezor.ui.display.raw(reg: int, data: bytes) -> None
|
||||||
///
|
/// '''
|
||||||
/// Performs a raw command on the display. Read the datasheet to learn more.
|
/// Performs a raw command on the display. Read the datasheet to learn more.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUi_Display_raw(mp_obj_t self, mp_obj_t reg, mp_obj_t data) {
|
STATIC mp_obj_t mod_TrezorUi_Display_raw(mp_obj_t self, mp_obj_t reg, mp_obj_t data) {
|
||||||
mp_int_t r = mp_obj_get_int(reg);
|
mp_int_t r = mp_obj_get_int(reg);
|
||||||
mp_buffer_info_t raw;
|
mp_buffer_info_t raw;
|
||||||
|
@ -28,9 +28,9 @@ STATIC mp_obj_t mod_TrezorUtils_Utils_make_new(const mp_obj_type_t *type, size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// def trezor.utils.memaccess(address: int, length: int) -> bytes
|
/// def trezor.utils.memaccess(address: int, length: int) -> bytes
|
||||||
///
|
/// '''
|
||||||
/// Creates a bytes object that can be used to access certain memory location.
|
/// Creates a bytes object that can be used to access certain memory location.
|
||||||
///
|
/// '''
|
||||||
STATIC mp_obj_t mod_TrezorUtils_Utils_memaccess(mp_obj_t self, mp_obj_t address, mp_obj_t length) {
|
STATIC mp_obj_t mod_TrezorUtils_Utils_memaccess(mp_obj_t self, mp_obj_t address, mp_obj_t length) {
|
||||||
uint32_t addr = mp_obj_get_int(address);
|
uint32_t addr = mp_obj_get_int(address);
|
||||||
uint32_t len = mp_obj_get_int(length);
|
uint32_t len = mp_obj_get_int(length);
|
||||||
|
@ -19,9 +19,9 @@ from .hashlib import sha256
|
|||||||
_alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
_alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
||||||
|
|
||||||
def encode(data: bytes) -> str:
|
def encode(data: bytes) -> str:
|
||||||
###
|
'''
|
||||||
### Convert bytes to base58 encoded string.
|
Convert bytes to base58 encoded string.
|
||||||
###
|
'''
|
||||||
origlen = len(data)
|
origlen = len(data)
|
||||||
data = data.lstrip(b'\0')
|
data = data.lstrip(b'\0')
|
||||||
newlen = len(data)
|
newlen = len(data)
|
||||||
@ -40,9 +40,9 @@ def encode(data: bytes) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def decode(string: str) -> bytes:
|
def decode(string: str) -> bytes:
|
||||||
###
|
'''
|
||||||
### Convert base58 encoded string to bytes.
|
Convert base58 encoded string to bytes.
|
||||||
###
|
'''
|
||||||
origlen = len(string)
|
origlen = len(string)
|
||||||
string = string.lstrip(_alphabet[0])
|
string = string.lstrip(_alphabet[0])
|
||||||
newlen = len(string)
|
newlen = len(string)
|
||||||
@ -61,21 +61,21 @@ def decode(string: str) -> bytes:
|
|||||||
|
|
||||||
|
|
||||||
def encode_check(data: bytes) -> str:
|
def encode_check(data: bytes) -> str:
|
||||||
###
|
'''
|
||||||
### Convert bytes to base58 encoded string, append checksum.
|
Convert bytes to base58 encoded string, append checksum.
|
||||||
###
|
'''
|
||||||
digest = sha256(sha256(data).digest()).digest()
|
digest = sha256(sha256(data).digest()).digest()
|
||||||
return encode(data + digest[:4])
|
return encode(data + digest[:4])
|
||||||
|
|
||||||
def decode_check(string: str) -> bytes:
|
def decode_check(string: str) -> bytes:
|
||||||
###
|
'''
|
||||||
### Convert base58 encoded string to bytes and verify checksum.
|
Convert base58 encoded string to bytes and verify checksum.
|
||||||
###
|
'''
|
||||||
result = decode(string)
|
result = decode(string)
|
||||||
result, check = result[:-4], result[-4:]
|
result, check = result[:-4], result[-4:]
|
||||||
digest = sha256(sha256(result).digest()).digest()
|
digest = sha256(sha256(result).digest()).digest()
|
||||||
|
|
||||||
if check != digest[:4]:
|
if check != digest[:4]:
|
||||||
raise ValueError("Invalid checksum")
|
raise ValueError('Invalid checksum')
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
def new(key, msg, digestmod) -> Hmac:
|
def new(key, msg, digestmod) -> Hmac:
|
||||||
###
|
'''
|
||||||
### Creates a HMAC context object.
|
Creates a HMAC context object.
|
||||||
###
|
'''
|
||||||
return Hmac(key, msg, digestmod)
|
return Hmac(key, msg, digestmod)
|
||||||
|
|
||||||
class Hmac:
|
class Hmac:
|
||||||
@ -18,15 +18,15 @@ class Hmac:
|
|||||||
self.update(msg)
|
self.update(msg)
|
||||||
|
|
||||||
def update(self, msg: bytes) -> None:
|
def update(self, msg: bytes) -> None:
|
||||||
###
|
'''
|
||||||
### Update the context with data.
|
Update the context with data.
|
||||||
###
|
'''
|
||||||
self.__inner.update(msg)
|
self.__inner.update(msg)
|
||||||
|
|
||||||
def digest(self) -> bytes:
|
def digest(self) -> bytes:
|
||||||
###
|
'''
|
||||||
### Returns the digest of processed data.
|
Returns the digest of processed data.
|
||||||
###
|
'''
|
||||||
outer = self.__digestmod()
|
outer = self.__digestmod()
|
||||||
outer.update(bytes((x ^ 0x5C) for x in self.__key))
|
outer.update(bytes((x ^ 0x5C) for x in self.__key))
|
||||||
outer.update(self.__inner.digest())
|
outer.update(self.__inner.digest())
|
||||||
|
@ -4,12 +4,18 @@ except ImportError:
|
|||||||
resdata = None
|
resdata = None
|
||||||
|
|
||||||
def load(name):
|
def load(name):
|
||||||
|
'''
|
||||||
|
Loads resource of a given name as bytes.
|
||||||
|
'''
|
||||||
if resdata and name in resdata:
|
if resdata and name in resdata:
|
||||||
return resdata[name]
|
return resdata[name]
|
||||||
with open(name, 'rb') as f:
|
with open(name, 'rb') as f:
|
||||||
return f.read()
|
return f.read()
|
||||||
|
|
||||||
def gettext(message):
|
def gettext(message):
|
||||||
|
'''
|
||||||
|
Returns localized string. This function is aliased to _.
|
||||||
|
'''
|
||||||
return message
|
return message
|
||||||
|
|
||||||
_ = gettext
|
_ = gettext
|
||||||
|
Loading…
Reference in New Issue
Block a user