77from getpass import getpass
88from secrets import token_hex , token_urlsafe
99import hmac
10+ import json
1011
1112def generate_salt (size ):
1213 """Create size byte hex salt"""
@@ -24,6 +25,7 @@ def main():
2425 parser = ArgumentParser (description = 'Create login credentials for a JSON-RPC user' )
2526 parser .add_argument ('username' , help = 'the username for authentication' )
2627 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' )
2729 args = parser .parse_args ()
2830
2931 if not args .password :
@@ -35,9 +37,13 @@ def main():
3537 salt = generate_salt (16 )
3638 password_hmac = password_to_hmac (salt , args .password )
3739
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 } ' )
4147
4248if __name__ == '__main__' :
4349 main ()
0 commit comments