diff options
author | Henrik Jonsson <me@hkjn.me> | 2017-12-06 12:47:28 +0000 |
---|---|---|
committer | Henrik Jonsson <me@hkjn.me> | 2017-12-06 13:11:02 +0000 |
commit | 3fdb29778a0b598d4ddf05ec5ed4593641d0da6e (patch) | |
tree | 8cc9289e1afe8b72d0f2a0ad28012b6ea2a54bcd /share/rpcauth | |
parent | 497d0e014cc79d46531d570e74e4aeae72db602d (diff) |
Rename rpcuser.py to rpcauth.py
This script creates `rpcauth` entries for bitcoin.conf,
not the deprecated `rpcuser` entry, so this changes the name
of the script to match.
Diffstat (limited to 'share/rpcauth')
-rw-r--r-- | share/rpcauth/README.md | 10 | ||||
-rwxr-xr-x | share/rpcauth/rpcauth.py | 41 |
2 files changed, 51 insertions, 0 deletions
diff --git a/share/rpcauth/README.md b/share/rpcauth/README.md new file mode 100644 index 0000000000..389278a125 --- /dev/null +++ b/share/rpcauth/README.md @@ -0,0 +1,10 @@ +RPC Tools +--------------------- + +### [RPCAuth](/share/rpcauth) ### + +Create login credentials for a JSON-RPC user. + +Usage: + + ./rpcauth.py <username> diff --git a/share/rpcauth/rpcauth.py b/share/rpcauth/rpcauth.py new file mode 100755 index 0000000000..6d9b44f699 --- /dev/null +++ b/share/rpcauth/rpcauth.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# Copyright (c) 2015-2016 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +import hashlib +import sys +import os +from random import SystemRandom +import base64 +import hmac + +if len(sys.argv) < 2: + sys.stderr.write('Please include username as an argument.\n') + sys.exit(0) + +username = sys.argv[1] + +#This uses os.urandom() underneath +cryptogen = SystemRandom() + +#Create 16 byte hex salt +salt_sequence = [cryptogen.randrange(256) for i in range(16)] +hexseq = list(map(hex, salt_sequence)) +salt = "".join([x[2:] for x in hexseq]) + +#Create 32 byte b64 password +password = base64.urlsafe_b64encode(os.urandom(32)) + +digestmod = hashlib.sha256 + +if sys.version_info.major >= 3: + password = password.decode('utf-8') + digestmod = 'SHA256' + +m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), digestmod) +result = m.hexdigest() + +print("String to be appended to bitcoin.conf:") +print("rpcauth="+username+":"+salt+"$"+result) +print("Your password:\n"+password) |