openethereum/ethkey
Benjamin Kampmann 861d829420 Fix Cli Return Code on --help for ethkey, ethstore & whisper (#8863)
Docopt handles `--help` automatically for us, however we've handled those
Errors the same as all others: by exiting with Return Code `1`, which is wrong
for a totally appropriate a quit on `--help`. Fortunately `docopt:Error`
provides an `exit` helper function that discriminates properly between fatal
and non-fatal errors and exist appropriately.

This patch makes sure we use that handy function in case we encounter such an
error in the CLI of ethkey, ethstore and whisper. Thus those are now giving
the appropriate Return code on `--help`.

fixes #8851
2018-06-11 20:38:01 +02:00
..
cli Fix Cli Return Code on --help for ethkey, ethstore & whisper (#8863) 2018-06-11 20:38:01 +02:00
src Update `license header` and `scripts` (#8666) 2018-06-04 10:19:50 +02:00
.gitignore secret store separated from util (#1304) 2016-06-20 00:10:34 +02:00
.travis.yml secret store separated from util (#1304) 2016-06-20 00:10:34 +02:00
Cargo.toml bump tinykeccak to 1.4 (#8728) 2018-05-31 13:53:09 +02:00
README.md Assorted improvements for ethstore and ethkey (#6961) 2017-12-01 11:40:07 +03:00

README.md

ethkey

Build Status

Ethereum keys generator.

Documentation

Usage

Ethereum keys generator.
  Copyright 2016, 2017 Parity Technologies (UK) Ltd

Usage:
    ethkey info <secret-or-phrase> [options]
    ethkey generate random [options]
    ethkey generate prefix <prefix> [options]
    ethkey sign <secret> <message>
    ethkey verify public <public> <signature> <message>
    ethkey verify address <address> <signature> <message>
    ethkey recover <address> <known-phrase>
    ethkey [-h | --help]

Options:
    -h, --help         Display this message and exit.
    -s, --secret       Display only the secret.
    -p, --public       Display only the public.
    -a, --address      Display only the address.
    -b, --brain        Use parity brain wallet algorithm.

Commands:
    info               Display public and address of the secret.
    generate random    Generates new random ethereum key.
    generate prefix    Random generation, but address must start with a prefix.
    sign               Sign message using secret.
    verify             Verify signer of the signature.
    recover            Try to find brain phrase matching given address from partial phrase.

Examples

info <secret>

Display info about private key.

  • <secret> - ethereum secret, 32 bytes long
ethkey info 17d08f5fe8c77af811caa0c9a187e668ce3b74a99acc3f6d976f075fa8e0be55
secret:  17d08f5fe8c77af811caa0c9a187e668ce3b74a99acc3f6d976f075fa8e0be55
public:  689268c0ff57a20cd299fa60d3fb374862aff565b20b5f1767906a99e6e09f3ff04ca2b2a5cd22f62941db103c0356df1a8ed20ce322cab2483db67685afd124
address: 26d1ec50b4e62c1d1a40d16e7cacc6a6580757d5

--

info --brain <phrase>

Display info about private key generate from brain wallet recovery phrase.

  • <phrase> - Parity recovery phrase, 12 words
ethkey info --brain "this is sparta"
The recover phrase was not generated by Parity: The word 'this' does not come from the dictionary.

secret:  aa22b54c0cb43ee30a014afe5ef3664b1cde299feabca46cd3167a85a57c39f2
public:  c4c5398da6843632c123f543d714d2d2277716c11ff612b2a2f23c6bda4d6f0327c31cd58c55a9572c3cc141dade0c32747a13b7ef34c241b26c84adbb28fcf4
address: 006e27b6a72e1f34c626762f3c4761547aff1421

--

generate random

Generate new keypair randomly.

ethkey generate random
secret:  7d29fab185a33e2cd955812397354c472d2b84615b645aa135ff539f6b0d70d5
public:  35f222d88b80151857a2877826d940104887376a94c1cbd2c8c7c192eb701df88a18a4ecb8b05b1466c5b3706042027b5e079fe3a3683e66d822b0e047aa3418
address: a8fa5dd30a87bb9e3288d604eb74949c515ab66e

--

generate random --brain

Generate new keypair with recovery phrase randomly.

ethkey generate random --brain
recovery phrase: thwarting scandal creamer nuzzle asparagus blast crouch trusting anytime elixir frenzied octagon
secret:  001ce488d50d2f7579dc190c4655f32918d505cee3de63bddc7101bc91c0c2f0
public:  4e19a5fdae82596e1485c69b687c9cc52b5078e5b0668ef3ce8543cd90e712cb00df822489bc1f1dcb3623538a54476c7b3def44e1a51dc174e86448b63f42d0
address: 00cf3711cbd3a1512570639280758118ba0b2bcb

--

generate prefix <prefix>

Generate new keypair randomly with address starting with prefix.

  • <prefix> - desired address prefix, 0 - 32 bytes long.
ethkey generate prefix ff
secret:  2075b1d9c124ea673de7273758ed6de14802a9da8a73ceb74533d7c312ff6acd
public:  48dbce4508566a05509980a5dd1335599fcdac6f9858ba67018cecb9f09b8c4066dc4c18ae2722112fd4d9ac36d626793fffffb26071dfeb0c2300df994bd173
address: fff7e25dff2aa60f61f9d98130c8646a01f31649

--

generate prefix --brain <prefix>

Generate new keypair with recovery phrase randomly with address starting with prefix.

  • <prefix> - desired address prefix, 0 - 32 bytes long.
ethkey generate prefix --brain 00cf
recovery phrase: thwarting scandal creamer nuzzle asparagus blast crouch trusting anytime elixir frenzied octagon
secret:  001ce488d50d2f7579dc190c4655f32918d505cee3de63bddc7101bc91c0c2f0
public:  4e19a5fdae82596e1485c69b687c9cc52b5078e5b0668ef3ce8543cd90e712cb00df822489bc1f1dcb3623538a54476c7b3def44e1a51dc174e86448b63f42d0
address: 00cf3711cbd3a1512570639280758118ba0b2bcb

--

sign <secret> <message>

Sign a message with a secret.

  • <secret> - ethereum secret, 32 bytes long
  • <message> - message to sign, 32 bytes long
ethkey sign 17d08f5fe8c77af811caa0c9a187e668ce3b74a99acc3f6d976f075fa8e0be55 bd50b7370c3f96733b31744c6c45079e7ae6c8d299613246d28ebcef507ec987
c1878cf60417151c766a712653d26ef350c8c75393458b7a9be715f053215af63dfd3b02c2ae65a8677917a8efa3172acb71cb90196e42106953ea0363c5aaf200

--

verify public <public> <signature> <message>

Verify the signature.

  • <public> - ethereum public, 64 bytes long
  • <signature> - message signature, 65 bytes long
  • <message> - message, 32 bytes long
ethkey verify public 689268c0ff57a20cd299fa60d3fb374862aff565b20b5f1767906a99e6e09f3ff04ca2b2a5cd22f62941db103c0356df1a8ed20ce322cab2483db67685afd124 c1878cf60417151c766a712653d26ef350c8c75393458b7a9be715f053215af63dfd3b02c2ae65a8677917a8efa3172acb71cb90196e42106953ea0363c5aaf200 bd50b7370c3f96733b31744c6c45079e7ae6c8d299613246d28ebcef507ec987
true

--

verify address <address> <signature> <message>

Verify the signature.

  • <address> - ethereum address, 20 bytes long
  • <signature> - message signature, 65 bytes long
  • <message> - message, 32 bytes long
ethkey verify address 689268c0ff57a20cd299fa60d3fb374862aff565b20b5f1767906a99e6e09f3ff04ca2b2a5cd22f62941db103c0356df1a8ed20ce322cab2483db67685afd124 c1878cf60417151c766a712653d26ef350c8c75393458b7a9be715f053215af63dfd3b02c2ae65a8677917a8efa3172acb71cb90196e42106953ea0363c5aaf200 bd50b7370c3f96733b31744c6c45079e7ae6c8d299613246d28ebcef507ec987
true

--

recover <address> <known-phrase>

Try to recover an account given expected address and partial (too short or with invalid words) recovery phrase.

  • <address> - ethereum address, 20 bytes long
  • <known-phrase> - known phrase, can be in a form of thwarting * creamer
RUST_LOG="info" ethkey recover "00cf3711cbd3a1512570639280758118ba0b2bcb" "thwarting scandal creamer nuzzle asparagus blast crouch trusting anytime elixir frenzied octag"
INFO:ethkey::brain_recover: Invalid word 'octag', looking for potential substitutions.
INFO:ethkey::brain_recover: Closest words: ["ocean", "octagon", "octane", "outage", "tag", "acting", "acts", "aorta", "cage", "chug"]
INFO:ethkey::brain_recover: Starting to test 7776 possible combinations.

thwarting scandal creamer nuzzle asparagus blast crouch trusting anytime elixir frenzied octagon
secret:  001ce488d50d2f7579dc190c4655f32918d505cee3de63bddc7101bc91c0c2f0
public:  4e19a5fdae82596e1485c69b687c9cc52b5078e5b0668ef3ce8543cd90e712cb00df822489bc1f1dcb3623538a54476c7b3def44e1a51dc174e86448b63f42d0
address: 00cf3711cbd3a1512570639280758118ba0b2bcb

Parity toolchain

this project is a part of the parity toolchain

  • ethkey - Ethereum keys generator and signer.
  • ethstore - Ethereum key management.
  • ethabi - Ethereum function calls encoding.