Commit graph

202 commits

Author SHA1 Message Date
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
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
6f572cddde
Bech32: additional tests 2018-03-06 10:28:41 +03:00
e4114eedf3
Bech32 address support
- Address type code is 'B'
- Generate with `--type=B` or `--type=bech32`
2018-03-05 12:46:35 +03:00
e2d51469e6
scrambletest.py: add coverage support
test.py altcoin_ref: enable internal ed25519
2018-02-26 20:01:20 +03:00
282fec8054
addrgen,keygen: use internal ed25519 module by user request 2018-02-24 21:43:55 +03:00
8fe92de627
Coverage support for tests via Python trace module 2018-02-24 14:39:49 +03:00
4009e1794f
test-release.sh: indentation fixes 2018-02-24 14:34:30 +03:00
MMGen
6b9df0ea44
Change all eval() calls to ast.literal_eval()
- closes an exploit whereby an infected online MMGen installation could craft
  a special TX file to trick an offline signing MMGen into executing an
  arbitrary expression
- update TX file format (to v3) to permit calling literal_eval() on unmodified
  inputs and outputs data (old v2 file format continues to be supported)
- new TX file conversion script: `scripts/tx-v2-to-v3.py`
- `scripts/tx-old2new.py` modified and renamed to `scripts/tx-v1-to-v3.py`
2018-02-17 15:35:45 +03:00
MMGen
f7e54cce93
Minor fixes and improvements
- mmgen-tool listaddresses: add 'show_age','show_days' options
- init_fail(): make 'silent' override 'MMGEN_TRACEBACK', fixing regression
  introduced by 3909339
- test/test.py: improve formatting of --list output
- test/{test,objtest,scrambletest}.py, mmgen/tool.py: indentation (whitespace) fixes
2018-02-17 12:34:15 +03:00
MMGen
65e2db0512
Monero,autosign: minor improvements
- Monero (create,sync): specify addr range; display total balance for all wallets
- autosign: improve exception handling, launch the standard way
2018-02-10 19:54:17 +03:00
MMGen
258651a531
Monero: new automated wallet syncing utility
- mmgen-tool: `syncmonerowallets`: batch-sync Monero wallets non-interactively
- mmgen-tool: `keyaddrlist2monerowallet` -> `keyaddrlist2monerowallets`
2018-01-21 19:18:00 +03:00
MMGen
83e9899b38
Version 0.9.6 2018-01-14 17:24:36 +03:00
MMGen
d3e96744fe
Monero: add tests to test-release.sh 2017-12-28 21:40:06 +03:00
MMGen
279e8872ef
Improve coin selection logic, allow coin disabling 2017-12-25 09:48:59 +03:00
MMGen
91ac2effb3
Key/address generation support for 144 altcoins
Support for these coins is EXPERIMENTAL, use at your own risk

    EXAMPLE: generate 10 Dogecoin key/address pairs with your default wallet:

        `mmgen-keygen --coin=doge 1-10`

    Keys for different coins are distinct, so users needn't worry about key reuse.

    Supported alts: 2give,42,611,ac,acoin,alf,anc,apex,arco,arg,aur,b2x,bcf,bch,blk,bmc,bqc,bsty,btcd,btq,bucks,cann,cash,cat,cbx,ccn,cdn,chc,clam,con,cpc,crps,csh,dash,dcr,dfc,dgb,dgc,doge,doged,dope,dvc,efl,emc,emd,enrg,esp,etc,eth,fai,fc2,fibre,fjc,flo,flt,fst,ftc,gcr,good,grc,gun,ham,html5,hyp,icash,infx,inpay,ipc,jbs,judge,lana,lat,ldoge,lmc,ltc,mars,mcar,mec,mint,mobi,mona,moon,mrs,mue,mxt,myr,myriad,mzc,neos,neva,nka,nlg,nmc,nto,nvc,ok,omc,omni,onion,onx,part,pink,pivx,pkb,pnd,pot,ppc,ptc,pxc,qrk,rain,rbt,rby,rdd,ric,sdc,sib,smly,song,spr,start,sys,taj,tit,tpc,trc,ttc,tx,uno,via,vpn,vtc,wash,wdc,wisc,wkc,wsx,xcn,xgb,xmg,xpm,xpoke,xred,xst,xvc,zec,zet,zlq,zoom,zrc

	Test the new functionality with `scripts/test-release.sh -Pn master alts`

B2X support disabled pending further testing
2017-12-24 15:26:23 +03:00
MMGen
4876ee47ed
View key support for Zcash z-addresses
- view keys are included in key-address lists
- tests updated to test the new functionality

- mmgen-tool: `compressed` and `segwit` args replaced by --type option
2017-12-18 20:19:01 +03:00
MMGen
1cc64e1eb9
Zcash z-address generation with custom sha256 implementation
- Tests have been updated, test with `scripts/test-release.sh -Pn master alts`
2017-12-16 12:48:47 +03:00
MMGen
bafea57134
Key/address generation for Ethereum, Eth Classic, DASH, and Zcash
- supported commands:
  - mmgen-addrgen
  - mmgen-keygen (decrypt encrypted key-addr files with `mmgen-tool decrypt`)
  - mmgen-tool addrfile_chksum, keyaddrfile_chksum

- ETH and ETC keys are distinct, so users needn't worry about key reuse
- Only Zcash-t addresses supported for now (but z-addresses coming soon)

- Test the new functionality with `scripts/test-release.sh -Pn master alts`
2017-12-16 09:31:00 +03:00
philemon
420d0e9699
B2X support, locktime-based coin splitting utility
- full support for B2X fork
- `mmgen-split` coin splitting utility for replayable forks
- `mmgen-regtest fork` command for testing forking scenarios
- `regtest_split` command added to `test/test.py` test suite
- timelock support for `txcreate` and `txdo`
- nlocktime and nsequence checks after signing and before sending
2017-11-13 22:50:35 +03:00
philemon
333278ce35
new conversion utility: scripts/tx-btc2bch.py
- Beginning with v0.9.5, BCH and BTC transaction files differ.
  This utility converts old BCH transaction files to the new format.
2017-10-31 08:57:05 +03:00
philemon
8fb3efd99c
mmgen-autosign: encrypt signing wallet with session key on removable device 2017-10-29 15:06:16 +03:00
philemon
35d1091159
Basic altcoin framework, full Litecoin support
- LTC: tested on mainnet, full test suite support
- simultaneous autosigning for all supported coins (BTC,BCH,LTC)
2017-10-28 00:11:00 +03:00
philemon
2435f60b03
mmgen-autosign: --coin support, validate that secret is well-formed 2017-10-16 19:20:34 +03:00
philemon
a4c6c45a13
mmgen-autosign: batch offline transaction auto-signing
- once set up, requires no monitor or keyboard input; just insert USB stick,
  wait for signing to complete and remove
- LED status signaling on Raspberry Pi and Orange Pi
2017-10-16 00:55:03 +03:00
philemon
d3f0f26668
bitcoin.py -> protocol.py: CoinProtocol classes and methods
scripts/test-release.sh: BCH tests added
2017-10-03 22:26:24 +03:00
philemon
12ea12e4e2
mmgen-regtest: final implementation; additional test suite tests 2017-09-26 15:41:11 +03:00
philemon
49e1acfb74
mmgen-regtest: improvements + additional tests in test suite 2017-09-25 14:27:39 +03:00
philemon
50f55b9790
mmgen-regtest: test suite support, mswin bugfixes
tx.view(): refactor, bugfixes
new script: test-release.sh
2017-09-19 22:14:00 +03:00
philemon
99295adf20
mmgen-regtest: --empty option, improved debugging output
mmgen-tool: move help data to main_tool.py
2017-09-16 13:55:23 +03:00
philemon
b23b497d77
obj.py rewrite+test suite, Bob and Alice regtest mode, compressed addresses
- basic data types in obj.py rewritten
- new test suite 'test/objtest.py' for testing basic data types
- new compressed address type with the 'C' identifier

- Bob and Alice regtest mode for testing MMGen in a mock two-user environment
  * All MMGen commands are available in this mode.
  * Set up with 'mmgen-regtest setup'. Bob and Alice's wallets are funded with
    500 BTC each.  Use the --mixed switch to import mixed address types in
    Bob and Alice's tracking wallets.
  * Transact as Bob by adding --bob switch to MMGen commands
  * Transact as Alice by adding --alice switch to MMGen commands
  * After sending a transaction, mine a block to confirm it with
    'mmgen-regtest generate'
    The bitcoin daemon is stopped and restarted automatically when switching
    between users.
2017-08-14 13:04:25 +03:00
philemon
52fdf29b67
new classes: KeyGenerator,AddrGenerator,PrivKey; read-only attrs rewrite
- OO rewrite of key/addr generation interface (KeyGenerator,AddrGenerator)
- New data objects: PrivKey,PubKey,WifKey
- rewrite of read-only attr implementation for addr/tx/tw list entries
  (MMGenImmutableAttr,MMGenListItemAttr descriptors)
- txsign: build key list of addrlist objects rather than addr,key tuples
2017-08-07 22:02:24 +03:00
philemon
b04650e22f
Version 0.9.2 2017-07-31 17:33:51 +03:00
philemon
3b0257358b
Support for Segwit (P2SH-P2WPKH) addresses:
- Generate Segwit addresses by invoking 'mmgen-addrgen' with the
  '--type segwit' option
- Import Segwit addresses into the tracking wallet as usual
- Segwit and legacy MMGen addresses are distinguished by 'S' and 'L'
  identifiers in the tracking wallet and command line

Transaction example:

  mmgen-txcreate F00BAA12:L:21,1.23 F00BAA12:S:1

(spend 1.23 BTC to legacy address 21 of your default wallet (with Seed ID
F00BAA12) and send the change to Segwit address 1)

Segwit and legacy addresses for a given seed are generated from different
sub-seeds so are cryptographically unrelated to each other.

Since MMGen's legacy P2PKH addresses are uncompressed, use of the new Segwit
addresses significantly reduces transaction size.

Until Segwit activation on mainnet, users can try out the new functionality on
testnet or in regtest mode.
2017-07-27 22:55:52 +03:00
philemon
229845c8b6
Version 0.8.9rc1 2016-12-08 18:02:28 +03:00
philemon
48845020c3
[mswin]: full test suite support with pexpect (PopenSpawn)
[mswin]: secure wallet deletion with sdelete
[mswin]: keyaddrfile binary mode write bugfix (main_addrgen.py)
2016-12-05 21:53:16 +03:00
philemon
0b3a40bd29
[mswin]: Bitcoin .cookie filename fix
[opt/cfg]: Add --bitcoin-data-dir option
2016-12-03 20:14:04 +03:00
philemon
978565f5bf
Data directory, config file and default wallet support:
* Under Linux, data directory is '~/.mmgen'; config file is 'mmgen.cfg'.
 * If default wallet is enabled, specifying the wallet on the command line is
   no longer necessary.  If not, all MMGen commands behave as previously.
 * The datadir structure mirrors that of Bitcoin Core: mainnet and testnet
   share a common config file, but testnet puts its other files including its
   default wallet in a separate subdirectory 'testnet3'.

New routines have been added to the test suite to test these features.
Tested only under Linux.
2016-11-21 19:59:03 +03:00
philemon
456cc1f76c
Long (common) opts added for setting global vars; display with '--longhelp'.
Datadir '~/.mmgen' and config file 'mmgen.cfg' added:
  * Global vars are now overriden in this order:
    1) config file
    2) environmental variables beginning with 'MMGEN_' (listed in globalvars.py)
    3) command line

Always get user entropy, even for non-critical randomness, unless '-r0'.

rpcuser,rpcpassword now override cookie authentication, as with Core.

RPC to remote daemon now supported with '--rpc-host' option.
2016-11-17 18:10:27 +03:00
philemon
3897ec3297
Version 0.8.7a
--testnet option added to all relevant scripts
  utility scripts under scripts/ updated
2016-11-14 14:45:08 +03:00
philemon
680ea8a5fc OO rewrite mostly done
Colored output
2016-07-26 22:16:25 +03:00
philemon
5ca6412b23 object-oriented tracking wallet code
updates for oo tx code
updates for test/test.py
2016-07-12 22:25:53 +03:00
philemon
3f2a866c47 New object-oriented TX code 2016-07-04 21:47:32 +03:00
philemon
a3c4bd8731 New feature: export wallet to incognito format
Incognito wallet is 48, 56 or 64 bytes of apparently random data.

  Allows user to hide wallet data in a pre-existing file or on a disk
  partition (preferably filled in advance with random data).

  Can be used to hide wallet securely in unencrypted cloud storage or
  on paper, without revealing the nature of the data.

  Data may be written at a user-specified offset into the file or
  partition, in which case user must remember the offset.

  Each export operation uses a new random init vector to create different
  data each time.  This allows the user to hide wallets at different
  locations on the Net without detection.

  User must remember hash preset in addition to passphrase (though trial
  and error can be used if it's forgotten).

  Fully integrated with address generation and tx signing operations.
2014-07-14 18:31:00 +04:00
philemon
afa3fe609a Code cleanups 2014-03-15 23:03:24 +04:00
philemon
e18c75eb36 renamed: scripts/pywallet.py -> mmgen-pywallet 2014-02-02 22:53:47 +04:00
philemon
d801580b76 Added custom pywallet.py in scripts/
Features: prompt for password; dump keys to flat list
2014-01-30 23:56:38 +04:00