forked from Alex014/NessNodeTester
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-prng.py
More file actions
108 lines (82 loc) · 3.54 KB
/
test-prng.py
File metadata and controls
108 lines (82 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import json
import sys
import urllib.parse
from lib.NessAuth import NessAuth
from Crypto.Hash import MD5
class AuthTester:
data_user = {}
data_node = {}
def __init__(self):
return
def loadUser(self, username: str):
filename = username + ".key.json"
f = open("out/keys/user/" + filename, "r")
return json.loads(f.read())
def loadNode(self, url: str):
filename = urllib.parse.quote_plus(url) + ".key.json"
f = open("out/keys/node/" + filename, "r")
return json.loads(f.read())
def test(self, username: str, node_url: str):
ness_auth = NessAuth()
user = self.loadUser(username)
node = self.loadNode(node_url)
user_private_key = user['keys']["private"][user['keys']['current']]
h = MD5.new()
userhash = username + '-' + node_url + '-' + node["nonce"]
h.update(userhash.encode('utf8'))
userhash = h.hexdigest()
result = ness_auth.get_by_auth_id(node_url + "/prng/seed", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** SEED OK !!! *** ")
print(result['data']['seed'])
result = ness_auth.get_by_auth_id(node_url + "/prng/seedb", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** SEED BIG OK !!! *** ")
print(result['data']['seedb'])
result = ness_auth.get_by_auth_id(node_url + "/prng/numbers", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** NUMBERS OK !!! *** ")
print(result['data']['numbers'])
result = ness_auth.get_by_auth_id(node_url + "/prng/numbersb", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** NUMBERS BIG OK !!! *** ")
print(result['data']['numbersb'])
result = ness_auth.get_by_auth_id(node_url + "/prng/i256", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** NUMBERS i256 OK !!! *** ")
print(result['data']['numbers'])
result = ness_auth.get_by_auth_id(node_url + "/prng/h256", user_private_key, node_url, node["nonce"], username,
userhash, user["nonce"])
if result['result'] == 'error':
print(" ~~~ FAILED ~~~ ")
print(result['error'])
else:
print(" *** NUMBERS h256 OK !!! *** ")
print(result['data']['numbers'])
return True
print('Test PRNG service')
if len(sys.argv) == 3:
tester = AuthTester()
tester.test(sys.argv[1], sys.argv[2])
else:
print('Usage: python test-prng.py <username> <node URL>')