Commit graph

2,768 commits

Author SHA1 Message Date
1b54d425bd
addr.py,rpc.py,tw.py,tx.py,traceback.py: minor cleanups and refactoring 2018-05-28 12:39:49 +03:00
854d6532dc
Ethereum twview support 2018-05-26 23:50:21 +03:00
a512423f7f
util.py,tw.py: minor bugfixes, cleanups 2018-05-26 23:40:53 +03:00
cf8c6a92ec
Fix CJK padding error 2018-05-26 22:31:54 +03:00
795b5d8b62
*TrackingWallet refactor
MMGenTrackingWallet now split into:

- TwUnspentOutputs, for unspent outputs display
- TrackingWallet, for label and other operations

EthereumTrackingWallet is now subclassed from TrackingWallet
2018-05-26 14:19:17 +03:00
82cd194ed3
*RPCConnection(): define RPC methods at instance creation time 2018-05-26 13:01:31 +03:00
290d3d557d
addr.py,rpc.py,tw.py: minor changes 2018-05-26 12:58:41 +03:00
50e2e9b486
EthereumTrackingWallet: addrimport,listaddresses,add_label 2018-05-25 17:28:12 +03:00
e87842838d
Refactor AddrData.add_tw_data() 2018-05-25 17:12:09 +03:00
3793852920
obj.py,rpc.py: minor changes 2018-05-25 17:08:11 +03:00
5b59712cfa
Refactor listaddresses()
Move the core code from tool.py to new class TwAddrList in tw.py
2018-05-25 10:50:51 +03:00
7ad2fdf66c
Basic Ethereum RPC support (Parity) 2018-05-24 12:08:42 +03:00
06af7342cf
Pre-0.9.7 seed-stealing exploit
Versions of MMGen prior to 0.9.7 were vulnerable to an attack whereby a
compromised MMGen installation on the network-connected machine could trick
an offline installation into revealing the user's seed via a specially crafted
transaction file.

Since sufficient time has passed for users to upgrade, we now deem it safe to
publish the exploit, implemented as a patch against v0.9.6.  Instructions for
use are in the patch itself.
2018-05-22 11:47:24 +03:00
6526aa7ed4
test.py: altcoin generation tests 2018-05-16 18:36:51 +03:00
f14606669e
Ethereum wallet passwords
- A password is now generated for each privkey in Ethereum key-address list
  - As with Monero wallet passwords (df03851), password is first 16 bytes of
    SHA256x2(privkey)
  - Password can be used with geth's private.importRawKey() method to create a
    relatively secure online wallet.  Unlock using private.unlockAccount()
2018-05-16 18:35:23 +03:00
dd1300d946
addr.py,obj.py: minor changes 2018-05-16 13:21:28 +03:00
b5dd04c380
Version 0.9.8 stable_mingw v0.9.8 2018-05-15 14:47:39 +03:00
a14bd9fdfb
Release notes formatting 2018-05-14 23:06:41 +03:00
e38570c30f
Version 0.9.8.rc3 v0.9.8rc3 2018-05-14 19:37:13 +03:00
6972153248
Test UTF-8 passwords; add release notes 2018-05-14 19:36:08 +03:00
156ae60a6d
Version 0.9.8.rc2 v0.9.8rc2 2018-05-12 19:30:43 +03:00
1b25452c8e
Rename some tests and test groups 2018-05-12 18:52:35 +03:00
9f2153c3a8
Require UTF-8 for brainwallet; other UTF-8 fixes
- This commit introduces a backwards incompatibility.  Users with non-UTF-8
  brainwallets (if there are any, which is very unlikely) must export them to
  another MMGen wallet format using an older version of MMGen.
2018-05-12 18:26:54 +03:00
84e57ea2d7
Version 0.9.8rc1 v0.9.8rc1 2018-05-10 17:33:02 +03:00
a2a3c87d6d
test.py: update zcash address file data 2018-05-10 13:54:53 +03:00
2cb4df72c4
Litecoin Bech32 address support 2018-05-09 17:37:18 +03:00
b74b0fb57e
gentest.py: support pycoin v0.90a 2018-05-09 17:28:00 +03:00
33fc67e241
zcash: update address, viewkey prefixes 2018-05-09 17:23:33 +03:00
cc39b8da5e
monero: support v0.12.0.0 (Lithium Luna) 2018-05-09 13:32:46 +03:00
21042737fe
Support UTF-8 wallet labels; new UTF-8 restrictions
- this means .mmdat wallet file itself is now UTF-8 (formerly ASCII-only)
- control and combining characters are now forbidden in all labels
2018-05-08 14:00:16 +03:00
0b6d047c25
test.py: add throwaway tmp dir 2018-05-08 13:44:12 +03:00
90ebc94170
Stealth mnemonic entry
Different keyboard keys make different clicking sounds when pressed.  In
particular, the ENTER and SPACE keys are noticeably louder on most keyboards.
This makes possible an acoustic side-channel attack whereby an eavesdropper
with a microphone could gain knowledge about the lengths of the words in a
user's mnemonic seed phrase as they're being typed.  This information could
also be obtained by analyzing the pauses between words.

Since the words in the Electrum wordlist used by MMGen vary in length from three
to twelve letters, the keyspace required to be searched in a brute-force attack
on the seed could thus be drastically reduced.

Stealth mnemonic entry mitigates this vulnerability by treating all characters
that are not lowercase letters in the range 'a-z' as “pad characters”.  Pad
characters are simply discarded and can be typed either before, after or in the
middle of words.  For each word, once a sufficient number of characters,
including pad characters, have been typed (currently 12), any pad character
can be used to enter the word.  Since each word can now be entered using the
same number of keystrokes and padded with random characters at random
positions, acoustic analysis of the user's keyboard clicks will yield little
useful information for an attacker.

This feature is enabled by default as it doesn't impact existing functionality
and can simply be ignored if one chooses not to use it.
2018-05-06 15:54:48 +03:00
774730673d
crypto.py: user random cleanups 2018-05-06 15:31:17 +03:00
a83952b4ec
Terminal code cleanups, use os.read() for raw keypress reads 2018-05-05 23:51:07 +03:00
5f8c35c42c
Documentation updates (Bech32, password generation)
- Getting-Started-with-MMGen.md (bech32)
- MMGen-Quick-Start-with-Regtest-Mode.md (error fix)
- Recovering-Your-Keys-Without-the-MMGen-Software.md (bech32, password generation)
2018-05-03 22:00:06 +03:00
ea6629d644
Format full-width CJK characters properly 2018-04-27 10:48:00 +03:00
3deb346133
Minor changes, bugfixes 2018-04-27 10:37:36 +03:00
00079ae156
Implement _b58tonum() as generator func; utf8 label test, bugfixes 2018-04-25 16:14:28 +03:00
bf5334f4cb
Update signing keys, links 2018-04-08 09:42:53 +03:00
d49c8627aa
Support 40-character UTF-8 tracking wallet comments 2018-03-09 18:16:20 +03:00
896c7fe996
Support UTF-8 filenames and paths 2018-03-09 16:16:10 +03:00
b230b43d4b
MMGEN_DEBUG_ALL env var; tw display and other fixes 2018-03-09 14:29:58 +03:00
351f5f9118
Use new-style string formatting 2018-03-07 12:59:35 +03:00
b80b059815
Use map() instead of list comprehension where possible 2018-03-07 12:55:06 +03:00
a201aeae94
Minor fixes, cleanups 2018-03-07 12:51:24 +03:00
3cfcd45d59
test/gentest.py: add p2sh-segwit wallet dump 2018-03-06 10:31:57 +03:00
27c3196269
TX size estimation: --vsize-adj fixes, tests 2018-03-06 10:29:20 +03:00
6f572cddde
Bech32: additional tests 2018-03-06 10:28:41 +03:00
165f0483e8
Display long addresses correctly 2018-03-06 10:27:51 +03:00
9b109fec58
Minor fixes 2018-03-06 10:26:41 +03:00