def test_tally(self): with petition_contract.test_service(): # create transaction # init init_transaction = petition.init() token = init_transaction['transaction']['outputs'][0] # initialise petition create_petition_transaction = petition.create_petition( (token, ), None, None, UUID, options, sk_owners[0], aggr_pk_owner, t_owners, n_owners, aggr_vk) old_petition = create_petition_transaction['transaction'][ 'outputs'][1] old_list = create_petition_transaction['transaction']['outputs'][2] # add signature to the petition for i in range(3): # some crypto to get the credentials # ------------------------------------ (d, gamma) = elgamal_keygen(bp_params) private_m = [d] Lambda = prepare_blind_sign(bp_params, gamma, private_m) sigs_tilde = [ blind_sign(bp_params, ski, gamma, Lambda) for ski in sk ] sigs = [ unblind(bp_params, sigma_tilde, d) for sigma_tilde in sigs_tilde ] sigma = agg_cred(bp_params, sigs) # ------------------------------------ sign_transaction = petition.sign( (old_petition, old_list), None, None, d, sigma, aggr_vk, 1 # vote ) old_petition = sign_transaction['transaction']['outputs'][0] old_list = sign_transaction['transaction']['outputs'][1] # tally for i in range(t_owners): transaction = petition.tally((old_petition, ), None, None, sk_owners[i], i, t_owners) old_petition = transaction['transaction']['outputs'][0] ## submit transaction response = requests.post('http://127.0.0.1:5000/' + petition_contract.contract_name + '/tally', json=transaction_to_solution(transaction)) self.assertTrue(response.json()['success'])
def test_init(self): with petition_contract.test_service(): ## create transaction transaction = petition.init() ## submit transaction response = requests.post('http://127.0.0.1:5000/' + petition_contract.contract_name + '/init', json=transaction_to_solution(transaction)) self.assertTrue(response.json()['success'])
def test_create_petition(self): with petition_contract.test_service(): ## create transaction # init init_transaction = petition.init() token = init_transaction['transaction']['outputs'][0] # initialise petition transaction = petition.create_petition( (token, ), None, None, UUID, options, sk_owners[0], aggr_pk_owner, t_owners, n_owners, aggr_vk) ## submit transaction response = requests.post('http://127.0.0.1:5000/' + petition_contract.contract_name + '/create_petition', json=transaction_to_solution(transaction)) self.assertTrue(response.json()['success'])
Lambda = cs.prepare_blind_sign( bp_params, gamma, private_m ) # signer prepares a blind signature request from their private key # This would be done by the authority sigs_tilde = [cs.blind_sign(bp_params, ski, gamma, Lambda) for ski in sk] # blind sign from each authority # back with the signer, unblind all the signatures, using the private key sigs = [ cs.unblind(bp_params, sigma_tilde, d) for sigma_tilde in sigs_tilde ] # aggregate all the credentials sigma = cs.agg_cred(bp_params, sigs) return (sigma, d) with petition_contract.test_service(): print("\npetition.init()") init_transaction = petition.init() token = init_transaction['transaction']['outputs'][0] post_transaction(init_transaction, "/init") create_transaction = petition.create_petition( (token, ), None, None, petition_UUID, options, sk_owners[0], # private key of the owner for signing aggr_pk_owner, # public key of the owner t_owners,