added func call to generate channel ID from channel token
This commit is contained in:
parent
eef6e8e0dc
commit
67d321e30c
|
@ -7,6 +7,7 @@ import "C"
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"strings"
|
"strings"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type setupResp struct {
|
type setupResp struct {
|
||||||
|
@ -317,6 +318,24 @@ func BidirectionalEstablishCustomerGenerateProof(channelToken ChannelToken, cust
|
||||||
return channelToken, custState, com, comProof, err
|
return channelToken, custState, com, comProof, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func BidirectionalGenerateChannelID(channelToken ChannelToken) (error) {
|
||||||
|
serChannelToken, err := json.Marshal(channelToken)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
resp := C.GoString(C.ffishim_bidirectional_generate_channel_id(C.CString(string(serChannelToken))))
|
||||||
|
r, err := processCResponse(resp)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println("channel id: ", r)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func BidirectionalEstablishMerchantIssueCloseToken(channelState ChannelState, com Commitment, comProof CommitmentProof, channelId []string, initCustBal int, initMerchBal int, merchState MerchState) (Signature, error) {
|
func BidirectionalEstablishMerchantIssueCloseToken(channelState ChannelState, com Commitment, comProof CommitmentProof, channelId []string, initCustBal int, initMerchBal int, merchState MerchState) (Signature, error) {
|
||||||
serChannelState, err := json.Marshal(channelState)
|
serChannelState, err := json.Marshal(channelState)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -22,6 +22,7 @@ char* ffishim_bidirectional_init_customer(const char *ser_channel_token, long lo
|
||||||
|
|
||||||
// channel establish protocol routines
|
// channel establish protocol routines
|
||||||
char* ffishim_bidirectional_establish_customer_generate_proof(const char *ser_channel_token, const char *ser_customer_wallet);
|
char* ffishim_bidirectional_establish_customer_generate_proof(const char *ser_channel_token, const char *ser_customer_wallet);
|
||||||
|
char* ffishim_bidirectional_generate_channel_id(const char *ser_channel_token);
|
||||||
char* ffishim_bidirectional_establish_merchant_issue_close_token(const char *ser_channel_state, const char *ser_com, const char *ser_com_proof, const char *ser_pk_c, long long int init_cust_bal, long long int init_merch_bal, const char *ser_merch_state);
|
char* ffishim_bidirectional_establish_merchant_issue_close_token(const char *ser_channel_state, const char *ser_com, const char *ser_com_proof, const char *ser_pk_c, long long int init_cust_bal, long long int init_merch_bal, const char *ser_merch_state);
|
||||||
char* ffishim_bidirectional_establish_merchant_issue_pay_token(const char *ser_channel_state, const char *ser_com, const char *ser_merch_state);
|
char* ffishim_bidirectional_establish_merchant_issue_pay_token(const char *ser_channel_state, const char *ser_com, const char *ser_merch_state);
|
||||||
char* ffishim_bidirectional_verify_close_token(const char *ser_channel_state, const char *ser_customer_wallet, const char *ser_close_token);
|
char* ffishim_bidirectional_verify_close_token(const char *ser_channel_state, const char *ser_customer_wallet, const char *ser_close_token);
|
||||||
|
|
|
@ -29,6 +29,9 @@ class Libbolt(object):
|
||||||
self.lib.ffishim_bidirectional_establish_customer_generate_proof.argtypes = (c_void_p, c_void_p)
|
self.lib.ffishim_bidirectional_establish_customer_generate_proof.argtypes = (c_void_p, c_void_p)
|
||||||
self.lib.ffishim_bidirectional_establish_customer_generate_proof.restype = c_void_p
|
self.lib.ffishim_bidirectional_establish_customer_generate_proof.restype = c_void_p
|
||||||
|
|
||||||
|
self.lib.ffishim_bidirectional_generate_channel_id.argtypes = (c_void_p, )
|
||||||
|
self.lib.ffishim_bidirectional_generate_channel_id.restype = c_void_p
|
||||||
|
|
||||||
self.lib.ffishim_bidirectional_establish_merchant_issue_close_token.argtypes = (c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p)
|
self.lib.ffishim_bidirectional_establish_merchant_issue_close_token.argtypes = (c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p)
|
||||||
self.lib.ffishim_bidirectional_establish_merchant_issue_close_token.restype = c_void_p
|
self.lib.ffishim_bidirectional_establish_merchant_issue_close_token.restype = c_void_p
|
||||||
|
|
||||||
|
@ -101,6 +104,11 @@ class Libbolt(object):
|
||||||
|
|
||||||
# ESTABLISH PROTOCOL
|
# ESTABLISH PROTOCOL
|
||||||
|
|
||||||
|
def bidirectional_generate_channel_id(self, channel_token):
|
||||||
|
output_string = self.lib.ffishim_bidirectional_generate_channel_id(channel_token.encode())
|
||||||
|
output_dictionary = ast.literal_eval(ctypes.cast(output_string, ctypes.c_char_p).value.decode('utf-8'))
|
||||||
|
return output_dictionary.get('channel_id')
|
||||||
|
|
||||||
def bidirectional_establish_customer_generate_proof(self, channel_token, cust_state):
|
def bidirectional_establish_customer_generate_proof(self, channel_token, cust_state):
|
||||||
output_string = self.lib.ffishim_bidirectional_establish_customer_generate_proof(channel_token.encode(), cust_state.encode())
|
output_string = self.lib.ffishim_bidirectional_establish_customer_generate_proof(channel_token.encode(), cust_state.encode())
|
||||||
output_dictionary = ast.literal_eval(ctypes.cast(output_string, ctypes.c_char_p).value.decode('utf-8'))
|
output_dictionary = ast.literal_eval(ctypes.cast(output_string, ctypes.c_char_p).value.decode('utf-8'))
|
||||||
|
@ -259,6 +267,10 @@ def run_unit_test():
|
||||||
print("com: ", com)
|
print("com: ", com)
|
||||||
|
|
||||||
cust_state_dict = json.loads(cust_state)
|
cust_state_dict = json.loads(cust_state)
|
||||||
|
channel_id = libbolt.bidirectional_generate_channel_id(channel_token)
|
||||||
|
print("channel ID: ", channel_id)
|
||||||
|
#print("wallet chan ID: ", cust_state_dict["wallet"]["channelId"])
|
||||||
|
|
||||||
close_token = libbolt.bidirectional_establish_merchant_issue_close_token(channel_state, com, com_proof, cust_state_dict["wallet"]["channelId"], b0_cust, b0_merch, merch_state)
|
close_token = libbolt.bidirectional_establish_merchant_issue_close_token(channel_state, com, com_proof, cust_state_dict["wallet"]["channelId"], b0_cust, b0_merch, merch_state)
|
||||||
print("close token: ", close_token)
|
print("close token: ", close_token)
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,7 @@ pub mod ffishim {
|
||||||
|
|
||||||
// ESTABLISH
|
// ESTABLISH
|
||||||
|
|
||||||
#[no_mangle] // bidirectional::establish_customer_generate_proof(rng, &mut channel_token, &mut cust_state);
|
#[no_mangle]
|
||||||
pub extern fn ffishim_bidirectional_establish_customer_generate_proof(ser_channel_token: *mut c_char, ser_customer_state: *mut c_char) -> *mut c_char {
|
pub extern fn ffishim_bidirectional_establish_customer_generate_proof(ser_channel_token: *mut c_char, ser_customer_state: *mut c_char) -> *mut c_char {
|
||||||
let rng = &mut rand::thread_rng();
|
let rng = &mut rand::thread_rng();
|
||||||
// Deserialize the channel token
|
// Deserialize the channel token
|
||||||
|
@ -158,6 +158,18 @@ pub mod ffishim {
|
||||||
cser.into_raw()
|
cser.into_raw()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern fn ffishim_bidirectional_generate_channel_id(ser_channel_token: *mut c_char) -> *mut c_char {
|
||||||
|
// Deserialize the channel token
|
||||||
|
let channel_token_result: ResultSerdeType<bidirectional::ChannelToken<Bls12>> = deserialize_result_object(ser_channel_token);
|
||||||
|
let channel_token = handle_errors!(channel_token_result);
|
||||||
|
|
||||||
|
let id = channel_token.compute_channel_id();
|
||||||
|
let ser = ["{\'channel_id\':\'", serde_json::to_string(&id).unwrap().as_str(), "\'}"].concat();
|
||||||
|
let cser = CString::new(ser).unwrap();
|
||||||
|
cser.into_raw()
|
||||||
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern fn ffishim_bidirectional_establish_merchant_issue_close_token(ser_channel_state: *mut c_char, ser_com: *mut c_char, ser_com_proof: *mut c_char, ser_channel_id: *mut c_char, init_cust_bal: i64, init_merch_bal: i64, ser_merch_state: *mut c_char) -> *mut c_char {
|
pub extern fn ffishim_bidirectional_establish_merchant_issue_close_token(ser_channel_state: *mut c_char, ser_com: *mut c_char, ser_com_proof: *mut c_char, ser_channel_id: *mut c_char, init_cust_bal: i64, init_merch_bal: i64, ser_merch_state: *mut c_char) -> *mut c_char {
|
||||||
let rng = &mut rand::thread_rng();
|
let rng = &mut rand::thread_rng();
|
||||||
|
|
Loading…
Reference in New Issue