mmgen-wallet/test/ref/mmgen.cfg
The MMGen Project 04add0dfa5
new mnemonic entry modes, new 'mn2hex_interactive' tool command
Auto-completion functionality for seed phrase entry provides real benefit to the
user, reducing the number of keystrokes required and permitting quick re-entry
of mistyped words.  In addition, unifying the number of keystrokes among words
improves security against acoustic side-channel attacks.  To this end, three
new interactive mnemonic entry modes are introduced by this patch.

Each entry mode is optimized for a particular wordlist.  The “short” mode, for
example, takes advantage of the fact that each word in the Monero wordlist is
uniquely identifiable by its first three letters.  For MMGen’s default Electrum
wordlist, which lacks this unique substring property, the “minimal” mode was
developed to reduce keystrokes to a minimum while retaining the option of
obfuscating entry with pad characters.

Users who prefer not to use auto-completion may specify the “full” mode, which
emulates the previous default behavior.

Overview of the key entry modes:

- 'full' (all wordlists): words are typed in full and entered with the ENTER
  or SPACE key, or by exceeding the pad character limit (see below).

- 'short' (BIP39, Monero): words are entered automatically once user types
  UNIQ_SS_LEN (see below) valid word letters.  3-letter words in the BIP39
  wordlist must be entered with the ENTER or SPACE key, or by exceeding the
  pad character limit.

- 'fixed' (BIP39, Electrum): words are entered automatically once user types
  UNIQ_SS_LEN characters in total.  Words shorter than UNIQ_SS_LEN must be
  padded to fit.  Thus the total number of characters entered is the same for
  all words.

- 'minimal' (Electrum): words are entered automatically once user types the
  minimum number of characters required to uniquely identify a word (varies
  from word to word).  Words that are substrings of other words in the wordlist
  must be entered with the ENTER or SPACE key, or by exceeding the pad
  character limit.  This is the only mode that checks user input letter by
  letter.

Pad character limits by mode:
-----------------------------
  short:   16
  minimal: 16
  full:    longest_word - word_len
  fixed:   uniq_ss_len - word_len

Wordlist parameters:
--------------------
  Parameter        Electrum   BIP39   XMRSEED
  ---------        --------   -----   -------
  uniq_ss_len:     10         4       3
  shortest_word:   3          3       4
  longest word:    12         8       12
  optimum mode:    minimal    fixed   short

Default modes for each wordlist may be configured in 'mmgen.cfg' via the
'mnemonic_entry_modes' option.

Usage / testing:

    $ mmgen-walletconv -i words
    $ mmgen-walletconv -i bip39

    $ mmgen-tool mn2hex_interactive fmt=mmgen mn_len=12 print_mn=1
    $ mmgen-tool mn2hex_interactive fmt=bip39
    $ mmgen-tool mn2hex_interactive fmt=xmrseed

    $ test/unit_tests.py mn_entry
    $ test/test.py -e input
2020-03-12 17:12:43 +00:00

107 lines
2.7 KiB
INI

# Configuration file for the MMGen suite
# Everything following a '#' is ignored.
##################
## User options ##
##################
# Uncomment to suppress the GPL license prompt:
# no_license true
# Uncomment to enable quieter output:
# quiet true
# Uncomment to disable color output:
# color false
# Uncomment to force 256-color output when 'color' is true:
# force_256_color true
# Uncomment to use regtest mode (this also sets testnet to true):
# regtest true
# Uncomment to use testnet instead of mainnet:
# testnet true
# Set the RPC host (the host the coin daemon is running on):
# rpc_host localhost
# Set the RPC host's port number:
# rpc_port 8332
# Uncomment to override 'rpcuser' from coin daemon config file:
# rpc_user myusername
# Uncomment to override 'rpcpassword' from coin daemon config file:
# rpc_password mypassword
# Uncomment to set the coin daemon datadir:
# daemon_data_dir /path/to/datadir
# Set the default hash preset:
# hash_preset 3
# Set the default number of subseeds:
# subseeds 100
# Set the default number of entropy characters to get from user.
# Must be between 10 and 80.
# A value of 0 disables user entropy, but this is not recommended:
# usr_randchars 30
# Set the maximum transaction fee for BTC:
# btc_max_tx_fee 0.003
# Set the transaction fee adjustment factor. Auto-calculated fees are
# multiplied by this value:
# tx_fee_adj 1.0
# Set the maximum transaction file size:
# max_tx_file_size 100000
# Set the maximum input size - applies both to files and standard input:
# max_input_size 1048576
# Set the mnemonic entry mode for each supported wordlist. Setting this option
# also turns off all information output for the configured wordlists:
# mnemonic_entry_modes mmgen:minimal bip39:fixed xmrseed:short
#####################
## Altcoin options ##
#####################
# Set the maximum transaction fee for BCH:
# bch_max_tx_fee 0.1
# Set the maximum transaction fee for LTC:
# ltc_max_tx_fee 0.3
# Set the maximum transaction fee for ETH:
# eth_max_tx_fee 0.005
# Set the Ethereum mainnet name:
# eth_mainnet_chain_name foundation
# Set the Ethereum testnet name:
# eth_testnet_chain_name kovan
# Set the Monero wallet RPC host:
# monero_wallet_rpc_host localhost
# Set the Monero wallet RPC username:
# monero_wallet_rpc_user monero
# Set the Monero wallet RPC password to something secure:
# monero_wallet_rpc_password passw0rd
#######################################################################
## The following options are probably of interest only to developers ##
#######################################################################
# Uncomment to display lots of debugging information:
# debug true
# Set the timeout for RPC connections:
# http_timeout 60