Updates to serialization routine for establish-phase1

This commit is contained in:
J. Ayo Akinyele 2019-03-31 03:52:07 -04:00
parent d93210dd8a
commit c1e2fbe349
3 changed files with 17 additions and 4 deletions

View File

@ -1643,7 +1643,9 @@ pub mod ffishim {
}
#[no_mangle]
pub extern fn ffishim_bidirectional_establish_customer_phase1(serialized_pp: *mut c_char, serialized_customer_data: *mut c_char, serialized_merchant_data: *mut c_char) -> *mut c_char {
pub extern fn ffishim_bidirectional_establish_customer_phase1(serialized_pp: *mut c_char,
serialized_customer_data: *mut c_char,
serialized_merchant_bases: *mut c_char) -> *mut c_char {
// Deserialize the pp
let deserialized_pp: bidirectional::PublicParams = deserialize_object(serialized_pp);
@ -1651,9 +1653,10 @@ pub mod ffishim {
let deserialized_customer_data: bidirectional::InitCustomerData = deserialize_object(serialized_customer_data);
// Deserialize the merchant data
let deserialized_merchant_data: bidirectional::InitMerchantData = deserialize_object(serialized_merchant_data);
//let deserialized_merchant_data: bidirectional::InitMerchantData = deserialize_object(serialized_merchant_data);
let deserialized_merchant_bases: serialization_wrappers::VecG2Wrapper = deserialize_object(serialized_merchant_bases);
let proof1 = bidirectional::establish_customer_phase1(&deserialized_pp, &deserialized_customer_data, &deserialized_merchant_data.bases);
let proof1 = bidirectional::establish_customer_phase1(&deserialized_pp, &deserialized_customer_data, &deserialized_merchant_bases.0);
let ser = ["{\'proof\':\'", serde_json::to_string(&proof1).unwrap().as_str(), "\'}"].concat();
let cser = CString::new(ser).unwrap();
cser.into_raw()

View File

@ -190,6 +190,10 @@ class Libbolt(object):
dictionary = self.interperate_json_string_as_dictionary(keypair)
return json.dumps(dictionary['pk'])
def util_extract_pub_bases_from_keypair(self, keypair):
dictionary = self.interperate_json_string_as_dictionary(keypair)
return json.dumps(dictionary['bases'])
if platform == 'darwin':
prefix = 'lib'
ext = 'dylib'
@ -221,7 +225,8 @@ cm_csp = libbolt.bidirectional_generate_commit_setup(pp, libbolt.util_extract_pu
cust_data, channel_state = libbolt.bidirectional_init_customer(pp, channel_state, b0_cust, b0_merch, cm_csp, cust_keys)
proof1 = libbolt.bidirectional_establish_customer_phase1(pp, cust_data, merch_data)
merch_bases = libbolt.util_extract_pub_bases_from_keypair(merch_data)
proof1 = libbolt.bidirectional_establish_customer_phase1(pp, cust_data, merch_bases)
wallet_sig, channel_state = libbolt.bidirectional_establish_merchant_phase2(pp, channel_state, merch_data, proof1)

View File

@ -428,6 +428,11 @@ pub struct FrWrapper( #[serde(serialize_with = "serialize_generic_encodable", de
#[derive(Serialize, Deserialize)]
pub struct VecFrWrapper( #[serde(serialize_with = "serialize_generic_encodable_vec", deserialize_with = "deserialize_fr_vec")] pub Vec<Fr>);
// Wrapper class for Vec<G2>
#[derive(Serialize, Deserialize)]
pub struct VecG2Wrapper( #[serde(serialize_with = "serialize_generic_encodable_vec", deserialize_with = "deserialize_g_two_vec")] pub Vec<G2>);
// Wrapper class for commitment and the CSParams
#[derive(Serialize, Deserialize)]
pub struct WalletCommitmentAndParamsWrapper {