diff options
Diffstat (limited to 'share')
-rw-r--r-- | share/rpcauth/README.md | 4 | ||||
-rwxr-xr-x | share/rpcauth/rpcauth.py | 54 | ||||
-rw-r--r-- | share/setup.nsi.in | 3 |
3 files changed, 36 insertions, 25 deletions
diff --git a/share/rpcauth/README.md b/share/rpcauth/README.md index 389278a125..20d16f0a97 100644 --- a/share/rpcauth/README.md +++ b/share/rpcauth/README.md @@ -8,3 +8,7 @@ Create login credentials for a JSON-RPC user. Usage: ./rpcauth.py <username> + +in which case the script will generate a password. To specify a custom password do: + + ./rpcauth.py <username> <password> diff --git a/share/rpcauth/rpcauth.py b/share/rpcauth/rpcauth.py index d6580281d4..566c55aba9 100755 --- a/share/rpcauth/rpcauth.py +++ b/share/rpcauth/rpcauth.py @@ -1,41 +1,47 @@ #!/usr/bin/env python3 # Copyright (c) 2015-2017 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying +# 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) +def generate_salt(): + # This uses os.urandom() underneath + cryptogen = SystemRandom() -username = sys.argv[1] + # Create 16 byte hex salt + salt_sequence = [cryptogen.randrange(256) for _ in range(16)] + return ''.join([format(r, 'x') for r in salt_sequence]) -#This uses os.urandom() underneath -cryptogen = SystemRandom() +def generate_password(): + """Create 32 byte b64 password""" + return base64.urlsafe_b64encode(os.urandom(32)).decode('utf-8') -#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]) +def password_to_hmac(salt, password): + m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') + return m.hexdigest() -#Create 32 byte b64 password -password = base64.urlsafe_b64encode(os.urandom(32)) +def main(): + if len(sys.argv) < 2: + sys.stderr.write('Please include username (and an optional password, will generate one if not provided) as an argument.\n') + sys.exit(0) -digestmod = hashlib.sha256 + username = sys.argv[1] -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() + salt = generate_salt() + if len(sys.argv) > 2: + password = sys.argv[2] + else: + password = generate_password() + password_hmac = password_to_hmac(salt, password) -print("String to be appended to bitcoin.conf:") -print("rpcauth="+username+":"+salt+"$"+result) -print("Your password:\n"+password) + print('String to be appended to bitcoin.conf:') + print('rpcauth={0}:{1}${2}'.format(username, salt, password_hmac)) + print('Your password:\n{0}'.format(password)) + +if __name__ == '__main__': + main() diff --git a/share/setup.nsi.in b/share/setup.nsi.in index dd42085a27..9fee9b42e0 100644 --- a/share/setup.nsi.in +++ b/share/setup.nsi.in @@ -20,7 +20,8 @@ SetCompressor /SOLID lzma !define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup !define MUI_STARTMENUPAGE_DEFAULTFOLDER "@PACKAGE_NAME@" -!define MUI_FINISHPAGE_RUN $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@ +!define MUI_FINISHPAGE_RUN "$WINDIR\explorer.exe" +!define MUI_FINISHPAGE_RUN_PARAMETERS $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@ !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" !define MUI_UNWELCOMEFINISHPAGE_BITMAP "@abs_top_srcdir@/share/pixmaps/nsis-wizard.bmp" !define MUI_UNFINISHPAGE_NOAUTOCLOSE |