Commit Graph

20 Commits

Author SHA1 Message Date
Pavol Rusnak 73708aa47e
refactor recovery.is_same_mnemonic function to storage_containsMnemonic 2017-06-26 15:44:01 +02:00
Pavol Rusnak c6fd70b471
gettext: mark localizable strings as proof-of-concept 2017-06-18 22:47:32 +02:00
Pavol Rusnak 00f6312a81
rename failures, unify strings where possible 2017-06-18 21:19:21 +02:00
Saleem Rashid 25b9bfd97b timer: Use Cortex-M3 SysTick timers
Removed `usbDelay(uint32_t cycles)`, added `usbSleep(uint32_t millis)`

The same method signature could cause silent code breakage at runtime,
as opposed to noisy code breakage at compile time which is the better
kind.
2016-11-17 02:07:46 +01:00
Pavol Rusnak 5e57a1ceaf
Merge branch 'u2f' 2016-06-12 22:53:28 +02:00
Pavol Rusnak b1e3c52b08
remove DialogIcon enum, use bitmap structure directly 2016-06-08 19:20:07 +02:00
Jochen Hoenicke 73e7d82e3f Allow initialize() to abort PIN wait 2016-05-28 16:24:14 +02:00
Jochen Hoenicke 053fe7cb66 Remove Cancel Option
U2F doesn't allow cancellation on device.

Also fix button state in protect.  This fixes the following bug:
1. wipe device
2. press and hold right button, click left button to cancel.
3. release all buttons.
4. wipe device again, now automatic.
2016-05-24 01:59:37 +02:00
Jochen Hoenicke 68b34af19e More standard conform behaviour
Tested with u2f-ref-code/u2f-tests.
Known incompatibility:
 - changed challenge invalidates button press.
2016-05-24 01:16:55 +02:00
Jochen Hoenicke da98a3a6fd Don't reflash storage after each PIN entry
Instead of reflashing the whole storage, we use a designated area
in the second storage block, where we mark each PIN failure by a
single zero bit. This is because one can set bits in flash to zero but
not to one.  If the PIN was entered successfully the whole word is
set to zero and the next word stores the new PIN failure counter.
2016-04-27 18:39:04 +02:00
Jochen Hoenicke 218b9984bb New usbDelay that delays and handles USB requests
Added usbDelay that polls usb port (for system requests) while delaying.
This is called instead of delay in the button and pin delay functions.
Experimental evaluation gave that the cycle count should be roughly divided
by 28.5.
2015-04-29 19:10:48 +02:00
Pavol Rusnak 7d8fb375f0 seconds counter during pin lockdown 2015-04-16 18:16:30 +02:00
Jochen Hoenicke 286ee0525c PIN handling - constant time.
This diff contains three changes.
1. Make timing isPinCorrect independent of storage.pin, to avoid timing attacks
2. Only update failed PIN counter if the user entered a PIN.
   Of course, the fail counter is still incremented, before the PIN is checked.
3. Don't cache the PIN, but just the fact that the PIN was entered.  The
   cache should be in sync with storage.pin in any case.
2015-02-22 15:42:31 +01:00
Pavol Rusnak 40efefc571 rework pin handling 2015-01-27 13:00:25 +01:00
Pavol Rusnak 012d38a9a0 increasePinFails before asking PIN 2015-01-26 21:41:43 +01:00
Pavol Rusnak 849e758eb4 double the delay before buttonupdate 2014-06-26 00:26:47 +02:00
Pavol Rusnak 465ec2104b throw UnexpectedMessage failure on unknown messages 2014-06-06 02:45:15 +02:00
Pavol Rusnak 2b68813a4c adjust script_sig size for use with multisig
adjust delays used when wrong pin is entered
2014-06-04 18:00:35 +02:00
Pavol Rusnak d7169a342c fix initialize handling in interactive mode 2014-05-20 15:37:58 +02:00
Pavol Rusnak 0d0a1ab5f2 import v1.0.0 2014-04-29 14:38:32 +02:00