Implemented full end-to-end encryption and decryption of an event using trustee public and secret keys. This required modification of the NodeJS crypto server to receive post data from the crypto_rpc py methods and for combining SKs together. Additionally, the new binary voting encoding scheme has been implemented for encryption and decryption of the event. General UI improvements have been made and as well as some other bug fixes
This commit is contained in:
parent
0c354cd542
commit
e33b91f852
23 changed files with 809 additions and 446 deletions
|
@ -1,6 +1,3 @@
|
|||
import os
|
||||
import shlex
|
||||
import subprocess
|
||||
import json
|
||||
import urllib2
|
||||
|
||||
|
@ -10,26 +7,40 @@ All functions in this file have been re-implemenented by Thomas Smith
|
|||
|
||||
File then updated by Vincent de Almeida. Changes include:
|
||||
-Update filename to 'crypto_rpc' to reflect the RPC nature of the methods
|
||||
-Modified RPC calls that send data to POST requests to avoid large query URLs
|
||||
|
||||
'''
|
||||
|
||||
|
||||
def send_post_req(url, data):
|
||||
data = json.dumps(data)
|
||||
|
||||
# Create a request specifying the Content-Type
|
||||
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
|
||||
f = urllib2.urlopen(req)
|
||||
response = f.read()
|
||||
f.close()
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def param():
|
||||
url = 'http://localhost:8080/param' # RPC URL
|
||||
url = 'http://localhost:8080/param'
|
||||
jsondict = json.load(urllib2.urlopen(url))
|
||||
return json.dumps(jsondict)
|
||||
|
||||
def combpk(amount, pks):
|
||||
url = 'http://localhost:8080/cmpkstring' # RPC URL
|
||||
querystring = '?number='+str(amount)
|
||||
for pk in pks:
|
||||
querystring += '&PK='+pk
|
||||
|
||||
print(url+querystring)
|
||||
jsondict = json.load(urllib2.urlopen(url+querystring))
|
||||
print(json.dumps(jsondict))
|
||||
return json.dumps(jsondict)
|
||||
def combpk(pks):
|
||||
url = 'http://localhost:8080/cmpkstring'
|
||||
|
||||
data = {}
|
||||
data['PKs'] = pks
|
||||
|
||||
return send_post_req(url, data)
|
||||
|
||||
|
||||
def addec(amount, ciphers):
|
||||
url = 'http://localhost:8080/addec' # RPC URL
|
||||
url = 'http://localhost:8080/addec'
|
||||
querystring = '?number='+str(amount)
|
||||
c1s = ciphers['c1s']
|
||||
c2s = ciphers['c2s']
|
||||
|
@ -42,23 +53,44 @@ def addec(amount, ciphers):
|
|||
print(json.dumps(jsondict))
|
||||
return json.dumps(jsondict)
|
||||
|
||||
def tally(amount, param, decs, cipher):
|
||||
url = 'http://localhost:8080/tally' # RPC URL
|
||||
querystring = '?number='+str(amount)
|
||||
querystring += '¶m='+urllib2.quote(str(param))
|
||||
|
||||
testquerystring = '?number='+str(amount)
|
||||
testquerystring += '¶m='+str(param)
|
||||
# Deprecated functionality and has been superseded by get_tally
|
||||
def tally(amount, group_param, decs, cipher):
|
||||
url = 'http://localhost:8080/tally'
|
||||
querystring = '?number='+str(amount)
|
||||
querystring += '¶m='+urllib2.quote(str(group_param))
|
||||
|
||||
for i, value in enumerate(decs):
|
||||
querystring += "&decs="+str(value)
|
||||
testquerystring += "&decs="+str(value)
|
||||
|
||||
querystring += '&cipher=' + urllib2.quote(str(cipher))
|
||||
testquerystring += '&cipher=' + str(cipher)
|
||||
|
||||
print(url+querystring)
|
||||
print(url+testquerystring)
|
||||
jsondict = json.load(urllib2.urlopen(url+querystring))
|
||||
print('tally: ' + str(jsondict['M']))
|
||||
return str(jsondict['M'])
|
||||
|
||||
return str(jsondict['M'])
|
||||
|
||||
|
||||
def combine_sks(sks):
|
||||
url = 'http://localhost:8080/comb_sks'
|
||||
|
||||
# Construct POST data
|
||||
data = {}
|
||||
data['SKs'] = sks
|
||||
|
||||
# Return the new combined SK
|
||||
return send_post_req(url, data)
|
||||
|
||||
|
||||
def get_tally(count, ciphers, sk, group_param):
|
||||
url = 'http://localhost:8080/get_tally'
|
||||
|
||||
# Construct POST data
|
||||
data = {}
|
||||
data['count'] = count
|
||||
data['ciphers'] = ciphers
|
||||
data['sk'] = sk
|
||||
data['param'] = group_param
|
||||
|
||||
# Return the tally of votes for the option
|
||||
return send_post_req(url, data)
|
||||
|
||||
|
|
Reference in a new issue