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
|
import json
import urllib
import urllib2
import ssl
import base64
from lib import *
class sslparameters:
sslcontext = None
def get_opener():
try:
opener = urllib2.build_opener(urllib2.HTTPSHandler(context=sslparameters.sslcontext))
except TypeError:
opener = urllib2.build_opener(urllib2.HTTPSHandler())
return opener
def urlopen(url, data=None):
return get_opener().open(url, data)
def get_sth(baseurl):
result = urlopen(baseurl + "gaol/v1/get-sth").read()
return json.loads(result)
def get_entries(baseurl, start, end):
params = urllib.urlencode({"start":start, "end":end})
# try:
result = urlopen(baseurl + "gaol/v1/get-entries?" + params).read()
return json.loads(result)
def get_consistency_proof(baseurl, tree_size1, tree_size2):
# try:
params = urllib.urlencode({"first":tree_size1,
"second":tree_size2})
result = \
urlopen(baseurl + "gaol/v1/get-sth-consistency?" + params).read()
return json.loads(result)["consistency"]
# except urllib2.HTTPError, e:
# print "ERROR:", e.read()
# sys.exit(1)
def extract_original_entry(entry):
leaf_input = base64.decodestring(entry["leaf_input"])
(data_blob, timestamp, issuer_key_hash) = unpack_mtl(leaf_input)
return (data_blob, timestamp)
def make_blob(data):
return base64.b64encode(data)
def add_blob(baseurl, blob):
try:
result = urlopen(baseurl + "gaol/v1/add-blob", json.dumps({"blob" : blob})).read()
return json.loads(result)
except urllib2.HTTPError, e:
return "ERROR " + str(e.code) + " : " + e.read()
# if e.code == 400:
return None
# sys.exit(1)
except ValueError, e:
print "==== FAILED REQUEST ===="
print submission
print "======= RESPONSE ======="
print result
print "========================"
raise e
|