Introduced an EncryptedSeed class and moved the decrypt function there. The recover_ems() function returns EncryptedSeed, which also carries information about the identifier and interation exponent. This is easier to work with if you want to allow the user to supply the passprase later.
recover_ems discards groups that don't meet the member threshold and allows extra shares. In python-shamir-mnemonic if the user provides extra shares, then we fail, which seems like a pointless hassle.
In some places we used threshold, which is ambiguous. Changed to member_threshold.
Including:
In addition to (5), I would also change the signature of recover_ems to accept Share objects instead of mnemonic strings.
Furthermore:
The unicode character 26ab (medium black circle), doesn't actually show up colored in my console font :-). So I tried 25cf (black circle) and that finally works fine. Hopefully not just for me.
Changed input/output of split_ems() to resemble output/input of recover_ems() more closely, e.g. returning shares instead of mnemonics.
Enhanced the ShareGroup class with additional methods to make the code which uses it more comprehensible.
Resolves https://github.com/trezor/python-shamir-mnemonic/issues/33, namely points 5, 6 and 8:
Including:
Furthermore:
split_ems()
to resemble output/input ofrecover_ems()
more closely, e.g. returning shares instead of mnemonics.