1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-21 05:48:23 +00:00
Commit Graph

1081 Commits

Author SHA1 Message Date
Jan Pochyla
02aa14fc04 refactor(core): Switch to new Protobuf API 2021-06-08 09:55:19 +02:00
matejcik
8a5cb41060 chore(core): regenerate with new templates 2021-06-08 09:55:19 +02:00
matejcik
d42bc8a4c0 refactor(core): prepare new templates for enums and messages 2021-06-08 09:55:19 +02:00
Pavol Rusnak
23aa69caea fix(core): unify Features.revision reporting with legacy 2021-06-04 12:50:49 +02:00
matejcik
2fac964a29 chore(common): disable Firo support 2021-06-04 11:38:18 +02:00
Pavol Rusnak
fce3640848 fix(common): remove dead coin Hatch 2021-06-04 10:10:26 +02:00
Martin Milata
767e7b8e8d fix(core): spaces in Shamir info texts 2021-06-03 16:54:42 +02:00
matejcik
86089fa5ad feat(core): avoid restarting session for select messages (fixes ) 2021-06-01 14:07:29 +02:00
Pavol Rusnak
155fc7ac67
fix(core): remove tcDisplay from metadata/trezor-ctap2.json 2021-05-19 14:49:54 +02:00
Pavol Rusnak
d358503676
fix(core): remove txAuthSimple from metadata/trezor-ctap2.json 2021-05-19 14:45:02 +02:00
Martin Milata
c54077a714 fix(core): imports needed for T1 startup
Now debug build booted on wiped T1 connects to USB and shows square in
top right corner.
2021-05-17 18:03:07 +02:00
matejcik
1e0a23c133 fix(core/paths): make sure containers are copied along with the numbers they contain 2021-05-06 13:14:21 +02:00
matejcik
ed5c357b78 fix(core): properly cache last successful unlock time 2021-05-06 13:14:21 +02:00
matejcik
959cf7d515 fix(core/homescreen): properly redraw when an outside process kills homescreen
This happens with FIDO which does not use the normal workflow management
and so `workflow.close_others()` is never called.
2021-05-06 13:14:21 +02:00
matejcik
411a7bb802 fix(core/wire): handle codec errors better 2021-05-06 13:14:21 +02:00
matejcik
231a1fe229 refactor(core): do not cache reverse-mapping of message types in RAM
Instead, walk the module for every message.

Also remove the custom wire type registration facility, which is not
used.
2021-05-06 13:14:21 +02:00
matejcik
f1a54f2108 refactor(core): remove more global imports 2021-05-06 13:14:21 +02:00
matejcik
2cb379108c refactor(core/homescreen): load homescreen image on-demand 2021-05-06 13:14:21 +02:00
matejcik
f61d7fffa8 fix(core): fix top-level imports in apps.common.passphrase 2021-05-06 13:14:21 +02:00
matejcik
93db39ad70 fix(core/wire): drop unused reader, clarify writer usage 2021-05-06 13:14:21 +02:00
matejcik
5ee85b6ed9 refactor(core): improve clarity in main.py 2021-05-06 13:14:21 +02:00
matejcik
94521a2065 feat(core): presize some modules to account for their sub-imports 2021-05-06 13:14:21 +02:00
matejcik
5f4240d93c feat(core): preallocate sys.modules to an appropriate size 2021-05-06 13:14:21 +02:00
matejcik
b1e4246b46 refactor(core/webauthn): make sure KEY_AGREEMENT_*KEY is generated once per power-up
This is what the spec recommends and it has been the case before
workflow-restarts, when `apps.webauthn.fido2` was imported exactly once
per lifetime.

With workflow-restarts, `fido2` is being imported repeatedly and the
keys regenerated. This does not seem to be a problem per the spec -- a
FIDO workflow will retain the same keys, and non-FIDO workflows can be
seen as unplugs/replugs as far as the FIDO functionality is concerned.

However, regenerating the keys is slow, which is a problem for the
hardware-based unit tests. We can avoid the slowness by returning to the
spec-mandated behavior and generating once per power-up.
2021-05-06 13:14:21 +02:00
matejcik
f6f3c7ffcf fix(core): prevent flickering when homescreen does not need to redraw 2021-05-06 13:14:21 +02:00
matejcik
5d12b943b3 feat(core): ensure all module names are interned 2021-05-06 13:14:21 +02:00
matejcik
96fd347ca8 fix(core): keep value of experimental_features cached across workflow restarts 2021-05-06 13:14:21 +02:00
matejcik
aaa3ce6117 fix(core/bitcoin): fix CoinJoin authorization with new cache 2021-05-06 13:14:21 +02:00
matejcik
dd655422f1 refactor(core/wire): simplify the message handling loop 2021-05-06 13:14:21 +02:00
matejcik
b387970468 refactor(core/debug): move "wipe with debug build" to boot.py
otherwise it gets wiped after every workflow
2021-05-06 13:14:21 +02:00
matejcik
1822aebdb4 feat(core): prefill field_cache in bitcoin app 2021-05-06 13:14:21 +02:00
matejcik
f3db4f2dd3 refactor(core): defragment PathSchema memory usage 2021-05-06 13:14:21 +02:00
matejcik
b1ca6ca848 refactor(core/debug): offload debug configuration from apps.debug 2021-05-06 13:14:21 +02:00
matejcik
e859c13d70 refactor(core): limit global imports in key places
so that by importing `apps.base`, we don't pull in the whole circus
2021-05-06 13:14:21 +02:00
matejcik
7ca67cc4d9 feat(core): clear out memory space after every workflow
A small fixed list of modules is kept pre-loaded in the GC arena.
These must not keep references to anything else, as all other modules
are unloaded and the memory is cleared.
2021-05-06 13:14:21 +02:00
matejcik
e629a72c3a refactor(core): move app registrations to a single handler function
apps.webauthn.boot() does not need an if-condition because it's only
called from session.py when the usb interface is enabled

This means that they do not need to be stored in RAM at all. The obvious
drawback is that we need to hand-edit the if/elif sequence, but we don't
register new handlers all that often so 🤷
2021-05-06 13:14:21 +02:00
matejcik
391976bcda refactor(core/usb): do not require serial number on instantiaton of USB
On a cleanly wiped device, storage must be unlocked in order to create
and retrieve the serial number. However, storage unlocking happens in
boot.py, which is imported _after_ usb.py

We must therefore sidestep asking for the serial number.
2021-05-06 13:14:21 +02:00
matejcik
276bb59dba refactor(core/cardano): update caching mechanism 2021-05-06 13:14:21 +02:00
matejcik
3cdb09c294 refactor(core): modify cache to preallocate all its data
also get rid of expensive "wire" import
2021-05-06 13:14:21 +02:00
matejcik
ea505b592c refactor(core): move empty_bytearray to trezor.utils 2021-05-06 13:14:21 +02:00
matejcik
b0116d0bdc refactor(core): modify wire to preallocate its buffers 2021-05-06 13:14:21 +02:00
gabrielkerekes
bf3e64ff20 fix(common): add isort:skip_file to files generated by pb2py 2021-04-23 11:09:29 +02:00
gabrielkerekes
6f59892824 refactor(core/cardano): introduce derive_public_key to simplify pub key derivation 2021-04-23 11:09:29 +02:00
gabrielkerekes
905970fd6a refactor(core/cardano): generalise _paginate_lines 2021-04-23 11:09:29 +02:00
gabrielkerekes
2313293477 feat(core/cardano): add support for catalyst voting registration 2021-04-23 11:09:29 +02:00
gabrielkerekes
2c503b16f5 fix(common): fix one value enums in pb2py 2021-04-23 11:09:29 +02:00
mcudev
6137a55b06 core/embed/usb: use all available usb endpoints and update the usb fifo sizing 2021-04-09 12:50:40 +02:00
Pavol Rusnak
2852b947ec
chore(core): regenerate coins 2021-04-08 14:17:43 +02:00
Martin Milata
ac711fb8ee style(core): use more recent type annotation syntax
https://www.python.org/dev/peps/pep-0585/ - Type Hinting Generics In Standard Collections
https://www.python.org/dev/peps/pep-0604/ - Allow writing union types as X | Y
2021-04-01 11:12:30 +02:00
Martin Milata
0278998f72 style(common): mypy: disable implicit Optional for function arguments 2021-04-01 11:12:30 +02:00
Martin Milata
8b3ac659a0 style(core): mypy: disable implicit Optional for function arguments
https://www.python.org/dev/peps/pep-0484/#union-types
2021-04-01 11:12:30 +02:00
Martin Milata
f97af2af1b chore(core/ui): typing: no implicit Optional 2021-03-30 22:34:01 +02:00
Martin Milata
da72482c2f refactor(core/ui): get rid of confirm_wipe 2021-03-30 22:34:01 +02:00
Martin Milata
c0174ff217 refactor(core/ui): raise exception on dialog cancel by default 2021-03-30 22:34:01 +02:00
Martin Milata
2b6ea25712 refactor(core): convert rest of apps.bitcoin to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
b1e38fe382 refactor(core): no implicit spaces in render_text 2021-03-30 22:34:01 +02:00
Martin Milata
2a5f5c1c20 refactor(core): convert parts of apps.monero to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
6668921a4f refactor(core): convert apps.common.request_pin to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
01900b8536 refactor(core): convert parts of apps.webauthn to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
ffe6d65f72 refactor(core): convert parts of apps.management to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
c09a142e2a refactor(core): convert apps.misc.* to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
0b5d17bf49 refactor(core/ui): merge confirm_hexdata and show_pubkey 2021-03-30 22:34:01 +02:00
Martin Milata
6ded531f8f refactor(core): convert apps.common.sdcard to layouts 2021-03-30 22:34:01 +02:00
Martin Milata
035f114125 fix(core/ui): don't return CONFIRMED/CANCELLED from layouts 2021-03-30 22:34:01 +02:00
Rafael Korbas
a9b8b0e119 feat(core/cardano): chunked serialization of signed transaction 2021-03-26 11:15:19 +01:00
gabrielkerekes
3cb686d452 fix(core/cardano): make witnesses order deterministic 2021-03-26 11:15:19 +01:00
Andrew Kozlik
2836bfc64c fix(core): Improve error handling and range checking in modtrezorconfig. 2021-03-26 10:54:56 +01:00
Andrew Kozlik
3084d1196d feat(core): Support 50 digit PIN and wipe code. 2021-03-25 14:24:41 +01:00
Pavol Rusnak
da7214d82f
fix(common): update support.json to include Firo 2021-03-25 13:39:59 +01:00
Pavol Rusnak
4649b80b44
feat(core): allow secp256k1-zkp for bitcoin-only build
(but keep it disabled)
2021-03-18 15:42:52 +01:00
matejcik
cb7152542d feat: drop DebugLinkShowText functionality 2021-03-18 10:59:51 +01:00
Rafael Korbas
74ed5b7018 feat(core/cardano): Implement bech32 asset ids based on CIP-0014 2021-03-18 09:53:33 +01:00
Rafael Korbas
bd4512b53a fix(core/cardano): Allow stake pool registrations with zero margin 2021-03-18 09:35:08 +01:00
Andrew Kozlik
b10acbe153 feat(core): Allow decreasing output amount in RBF transactions. 2021-03-17 15:15:50 +01:00
Andrew Kozlik
5593862dc1 fix(core): Disable hold-to-confirm animation when animations are disabled. 2021-03-17 15:15:50 +01:00
Andrew Kozlik
6de20a7dcd chore(core/bitcoin): Add DecredApprover. 2021-03-17 12:16:08 +01:00
Andrew Kozlik
523b1051c5 chore(core/bitcoin): Add stricter script_type checks in sanitizers. 2021-03-17 12:16:08 +01:00
Andrew Kozlik
6e8eebfc9c chore(core/bitcoin): Separate Decred-specific scripts from Bitcoin scripts. 2021-03-17 12:16:08 +01:00
JoeGruff
e3ea32a986 multi: Add decred staking.
Add two new input and four output script types.

Decred ticket purchases consist of a stake submission, op returns, and
change addresses. Although change addresses are allowed by consensus,
they are no longer used in practice and so have been given the
restrictions of a null pubkey and no value. Stake scripts are almost
identical to p2pkh or p2sh except for an extra opcode in front. Inputs
are currently only used in the form of one input three outputs with the
first output, or stake submission, paying to a public key hash, or with
two inputs and five outputs with the stake submission paying to a
multisig script hash. The op returns are directed to the user in the
case of one and the voting service provider and user in the case of two.

One of the sstx commitment for a ticket must pay back to the trezor
wallet. This is checked and an error is thrown if we don't find the
expected public key hash.

Because this adds the ability to create new types of outputs once the
ticket votes, two new input script types are also needed. A successful
vote will lead to a stake generation script that must be spent, and an
unsuccessful vote will lead to a revocation script that must be spent.
If we allowed stake change scripts to have a valid pubkey, that too
would require another op code, but we disallow those for output.
2021-03-17 12:16:08 +01:00
Pavol Rusnak
6c11bc60d7
common/defs/fido: add namecheap 2021-03-15 17:22:12 +01:00
Martin Milata
ee2ec85983 fix(core): fix title shown for multisig address 2021-03-11 14:21:03 +01:00
Andrew Kozlik
850aa56691 docs(core): Add references to SLIPs in the code. 2021-03-09 20:01:59 +01:00
Andrew Kozlik
a8c500bffd feat(core): Ensure that WebAuthn runs on port 21326 by default for both production and debug emulator. 2021-03-09 16:13:21 +01:00
Roman Zeyde
7ce4e13bcf feat(core): add public_key to ECDHSessionKey 2021-03-08 15:59:00 +01:00
Roman Zeyde
b2877afa7f feat(common): add public_key to ECDHSessionKey 2021-03-08 15:59:00 +01:00
Pavol Rusnak
4b0f41d41e
fix(common): change msg_id of RebootToBootloader from 804 to 87 2021-03-03 12:07:00 +01:00
Ondrej Mikle
77e99078c3
chore(trezorlib): add generated message files 2021-03-03 12:07:00 +01:00
Ondrej Mikle
1579c62332
chore(legacy): reboot to bootloader protobuf generated messages 2021-03-03 12:06:59 +01:00
matejcik
ed0ac98970 fix(common/tools): strip "mainnet" from Ethereum network names 2021-03-01 12:05:54 +01:00
Pavol Rusnak
17fa6ab4ec chore(common): update chains+tokens 2021-03-01 12:05:54 +01:00
Rafael Korbas
ceea21ec1f feat(cardano): Format stake pool ids as bech32 instead of hex 2021-02-25 16:49:19 +01:00
Rafael Korbas
3197741795 fix(core/Cardano): account index validation in _should_hide_output() 2021-02-25 16:41:12 +01:00
Rafael Korbas
cf871ee754 fix(core/Cardano): do not show change output in byron-shelley transfers 2021-02-25 16:41:12 +01:00
Martin Milata
c28763c169 refactor(core): use reload_settings_from_storage on boot 2021-02-24 00:10:10 +01:00
Martin Milata
9b60cc0098 feat(core): restart loader from current position
On "hold to confirm" dialogs, when you hold your finger, lift it, and
quickly hold again, the progress bar jumps to the beginning. This commit
changes the behavior so the progress continues from its current position
of the reverse animation.
2021-02-24 00:10:10 +01:00
Martin Milata
06b9d1314d fix(core): do not autolock when already locked
Gets rid of unnecessary screen redraw.
2021-02-24 00:10:10 +01:00
Martin Milata
192d0dcf87 feat(core): hold homescreen to lock 2021-02-24 00:10:10 +01:00
Martin Milata
db2db8e6f3 feat(common): add hold_ms to DebugLinkDecision 2021-02-24 00:10:10 +01:00
Pavol Rusnak
b4daf2f3e3
chore(core): run make gen to regenerate fido2 icons
updated here - https://github.com/trezor/trezor-firmware/pull/1456
2021-02-16 11:20:21 +01:00
Buck Perley
682298d7bb
fix(core): add exceptions for unchained capital paths 2021-02-12 21:56:03 +01:00