diff options
author | Gregory Maxwell <greg@xiph.org> | 2015-11-30 12:05:56 -0800 |
---|---|---|
committer | Gregory Maxwell <greg@xiph.org> | 2015-11-30 12:25:28 -0800 |
commit | 438ee59839ad49bf629452279478462c987b7137 (patch) | |
tree | d5b311693784348db81dcef98b145c60d6bd2be4 /share | |
parent | 34e02e0147188a7e364489db23128a05505e7a4c (diff) | |
parent | d52fbf00e32fb0565652c9a62cdaf2bc1e2dddf0 (diff) | |
download | bitcoin-438ee59839ad49bf629452279478462c987b7137.tar.xz |
Merge pull request #7044
d52fbf0 Added additional config option for multiple RPC users. (Gregory Sanders)
Diffstat (limited to 'share')
-rw-r--r-- | share/rpcuser/README.md | 11 | ||||
-rwxr-xr-x | share/rpcuser/rpcuser.py | 41 |
2 files changed, 52 insertions, 0 deletions
diff --git a/share/rpcuser/README.md b/share/rpcuser/README.md new file mode 100644 index 0000000000..7c2c909a42 --- /dev/null +++ b/share/rpcuser/README.md @@ -0,0 +1,11 @@ +RPC Tools +--------------------- + +### [RPCUser](/share/rpcuser) ### + +Create an RPC user login credential. + +Usage: + +./rpcuser.py <username> + diff --git a/share/rpcuser/rpcuser.py b/share/rpcuser/rpcuser.py new file mode 100755 index 0000000000..9fd176908b --- /dev/null +++ b/share/rpcuser/rpcuser.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python2 +# Copyright (c) 2015 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) |