Pavel Ševčík
4 years ago
3 changed files with 62 additions and 3 deletions
@ -0,0 +1,50 @@ |
|||
#!/usr/bin/env python3 |
|||
# Copyright (c) 2015-2018 The Bitcoin Core developers |
|||
# Distributed under the MIT software license, see the accompanying |
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|||
|
|||
from argparse import ArgumentParser |
|||
from base64 import urlsafe_b64encode |
|||
from binascii import hexlify |
|||
from getpass import getpass |
|||
from os import urandom |
|||
|
|||
import hmac |
|||
|
|||
def generate_salt(size): |
|||
"""Create size byte hex salt""" |
|||
return hexlify(urandom(size)).decode() |
|||
|
|||
def generate_password(): |
|||
"""Create 32 byte b64 password""" |
|||
return urlsafe_b64encode(urandom(32)).decode('utf-8') |
|||
|
|||
def password_to_hmac(salt, password): |
|||
m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') |
|||
return m.hexdigest() |
|||
|
|||
def main(): |
|||
parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') |
|||
parser.add_argument('username', help='the username for authentication') |
|||
parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') |
|||
args = parser.parse_args() |
|||
|
|||
if not args.password: |
|||
args.password = generate_password() |
|||
elif args.password == '-': |
|||
args.password = getpass() |
|||
|
|||
# Create 16 byte hex salt |
|||
salt = generate_salt(16) |
|||
password_hmac = password_to_hmac(salt, args.password) |
|||
|
|||
## Comment out original script output |
|||
# print('String to be appended to bitcoin.conf:') |
|||
# print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac)) |
|||
# print('Your password:\n{0}'.format(args.password)) |
|||
|
|||
## Added custom script output to use in restart.sh |
|||
print('{0}:{1}${2}'.format(args.username, salt, password_hmac)) |
|||
|
|||
if __name__ == '__main__': |
|||
main() |
Loading…
Reference in new issue