trezor / python-shamir-mnemonic

MIT License
165 stars 59 forks source link

CLI does not error or provide message when invalid digest is found #4

Closed Sharpiro closed 5 years ago

Sharpiro commented 5 years ago

Below is an example of shares with an invalid digest being provided to the CLI. Currently, no error or message is displayed to the user that the digest was invalid, and the share counter continues to increment and loop.

example shares with invalid digest:

academic flea academic acid adult decent discuss similar branch acquire credit firm believe lecture object slavery eraser withdraw loud trust transfer terminal aunt plains favorite modern rainbow scene depict unknown pistol arcade viral
academic flea academic agency aspect public view ancestor testify greatest item olympic symbolic painting disaster platform ruler unkind debris briefing dive staff client pitch leaves mailman total staff disaster curious taught tofu warmth
academic flea academic always ambition usher remind envy wits exact maximum seafood cultural empty science guest exceed bulge velvet always welcome slim forecast plunge worthy parking become tolerate literary prayer ivory trip kernel
academic flea academic aquatic ajar hybrid inform machine alarm craft surprise arcade tension grasp grumpy arcade script analysis employer wireless critical window husband practice cowboy regular elite video medal hamster deal acid install
academic flea academic axis airline hybrid change perfect general negative join involve kidney shaft client twin email iris holy emperor laden wisdom physics scroll phrase husky timely trust unfold grownup erode faint papa

program output (before):

[sharpiro@localhost python-shamir-mnemonic]$ shamir recover
Enter a recovery share: academic flea academic acid adult decent discuss similar branch acquire credit firm believe lecture object slavery eraser withdraw loud trust transfer terminal aunt plains favorite modern rainbow scene depict unknown pistol arcade viral

⛬ 1 of 2 shares needed from group academic flea academic
Enter a recovery share: academic flea academic agency aspect public view ancestor testify greatest item olympic symbolic painting disaster platform ruler unkind debris briefing dive staff client pitch leaves mailman total staff disaster curious taught tofu warmth

✓ 2 of 2 shares needed from group academic flea academic
Enter a recovery share: academic flea academic always ambition usher remind envy wits exact maximum seafood cultural empty science guest exceed bulge velvet always welcome slim forecast plunge worthy parking become tolerate literary prayer ivory trip kernel

⛬ 3 of 2 shares needed from group academic flea academic
Enter a recovery share: academic flea academic aquatic ajar hybrid inform machine alarm craft surprise arcade tension grasp grumpy arcade script analysis employer wireless critical window husband practice cowboy regular elite video medal hamster deal acid install

⛬ 4 of 2 shares needed from group academic flea academic
Enter a recovery share: academic flea academic axis airline hybrid change perfect general negative join involve kidney shaft client twin email iris holy emperor laden wisdom physics scroll phrase husky timely trust unfold grownup erode faint papa

⛬ 5 of 2 shares needed from group academic flea academic
Enter a recovery share:

Here is a simple fix that logs that the digest is invalid and stops execution: https://github.com/trezor/python-shamir-mnemonic/compare/master...Sharpiro:cli-digest-fix

program output (after):

[sharpiro@localhost python-shamir-mnemonic]$ python3 -m shamir_mnemonic.cli recover
Enter a recovery share: academic flea academic acid adult decent discuss similar branch acquire credit firm believe lecture object slavery eraser withdraw loud trust transfer terminal aunt plains favorite modern rainbow scene depict unknown pistol arcade viral

⛬ 1 of 2 shares needed from group academic flea academic
Enter a recovery share: academic flea academic agency aspect public view ancestor testify greatest item olympic symbolic painting disaster platform ruler unkind debris briefing dive staff client pitch leaves mailman total staff disaster curious taught tofu warmth
ERROR: Invalid digest of the shared secret.

I'd be glad to help on this fix if you'd like.