7
7
from getpass import getpass
8
8
from secrets import token_hex , token_urlsafe
9
9
import hmac
10
+ import json
10
11
11
12
def generate_salt (size ):
12
13
"""Create size byte hex salt"""
@@ -24,6 +25,7 @@ def main():
24
25
parser = ArgumentParser (description = 'Create login credentials for a JSON-RPC user' )
25
26
parser .add_argument ('username' , help = 'the username for authentication' )
26
27
parser .add_argument ('password' , help = 'leave empty to generate a random password or specify "-" to prompt for password' , nargs = '?' )
28
+ parser .add_argument ("-j" , "--json" , help = "output to json instead of plain-text" , action = 'store_true' )
27
29
args = parser .parse_args ()
28
30
29
31
if not args .password :
@@ -35,9 +37,13 @@ def main():
35
37
salt = generate_salt (16 )
36
38
password_hmac = password_to_hmac (salt , args .password )
37
39
38
- print ('String to be appended to bitcoin.conf:' )
39
- print (f'rpcauth={ args .username } :{ salt } ${ password_hmac } ' )
40
- print (f'Your password:\n { args .password } ' )
40
+ if args .json :
41
+ odict = {'username' :args .username , 'password' :args .password , 'rpcauth' :f'{ args .username } :{ salt } ${ password_hmac } ' }
42
+ print (json .dumps (odict ))
43
+ else :
44
+ print ('String to be appended to bitcoin.conf:' )
45
+ print (f'rpcauth={ args .username } :{ salt } ${ password_hmac } ' )
46
+ print (f'Your password:\n { args .password } ' )
41
47
42
48
if __name__ == '__main__' :
43
49
main ()
0 commit comments