Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1c65ac6
Added PlainLock, HashedLock to common.capnp.
realcr Jun 2, 2019
3213f93
Updated payment related messages in capnp schemas.
realcr Jun 2, 2019
2d4affb
Restored read_receipt() and write_receipt().
realcr Jun 2, 2019
e3fbe13
Restored serialization of CancelSendFundsOp.
realcr Jun 2, 2019
ed8e6ee
Restored serialization of RequestSendFundsOp.
realcr Jun 2, 2019
7ddf259
Restored ResponseSendFundsOp serialization.
realcr Jun 2, 2019
7c7e792
Added serialization for CollectSendFundsOp.
realcr Jun 2, 2019
2c96111
Restored serialization for FriendTcOp.
realcr Jun 2, 2019
6fc7935
Restored funder proto serialize tests.
realcr Jun 2, 2019
138480a
Fixed AppPermissions serialization.
realcr Jun 2, 2019
956ac4c
Updated app-server capnp schema to the new protocol.
realcr Jun 2, 2019
3294a48
Some work on AppRequest serialization. Not done yet.
realcr Jun 2, 2019
b1c7b1c
Added serialization for CreatePayment.
realcr Jun 2, 2019
3288342
Added serialization for Rate.
realcr Jun 2, 2019
556e8ca
Added serialization for SetFriendRate.
realcr Jun 2, 2019
deacb22
Added serialization to Commit, MultiCommit.
realcr Jun 2, 2019
7f3801c
Added serialization for AppRequest::CommitInvoice.
realcr Jun 2, 2019
c18c7aa
Added serialization for CreateTransaction.
realcr Jun 2, 2019
9091a07
Added serialization for AppRequest::AddInvoice.
realcr Jun 2, 2019
faef230
Added serialization code for AppRequest::AckClosePayment.
realcr Jun 2, 2019
a23f3b5
Updated index capnp schema.
realcr Jun 2, 2019
66c2349
Added serialization code for RouteCapacityRate.
realcr Jun 2, 2019
7536cb4
Added serialization for MultiRoute.
realcr Jun 2, 2019
f528b08
Added serialization for ResponseRoutes.
realcr Jun 2, 2019
026420d
Updated UpdateFriend serialization code and capnp schema.
realcr Jun 2, 2019
2273a98
Added serialization for ResponseRoutesResult.
realcr Jun 2, 2019
875634e
Added skeleton for AppServerToApp serialization code (Contains unimpl…
realcr Jun 2, 2019
28885db
Added serialization for TransactionResult.
realcr Jun 2, 2019
5e48aec
Added serialization for AppServerToApp::TransactionResult(...).
realcr Jun 2, 2019
7dcb74a
Removed old commented out code.
realcr Jun 2, 2019
e9c1af0
Added serialization for ResponseClosePayment.
realcr Jun 2, 2019
d58a7ef
Added serialization for AppServerToApp::ResponseClosePayment.
realcr Jun 2, 2019
3de6f4a
Updated test_serialize_app_permissions() (Commented out).
realcr Jun 2, 2019
3687b22
Updated report.capnp.
realcr Jun 2, 2019
1dba5e3
Updated FriendReport serialization code.
realcr Jun 2, 2019
149910b
Updated FunderReport serialization.
realcr Jun 2, 2019
2d6c9c4
Added serialization for FunderReportMutation.
realcr Jun 2, 2019
8a6a335
Restored app-server basic serialization tests.
realcr Jun 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
534 changes: 374 additions & 160 deletions components/proto/src/app_server/serialize.rs

Large diffs are not rendered by default.

130 changes: 120 additions & 10 deletions components/proto/src/capnp_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,28 @@ use byteorder::{BigEndian, ByteOrder, ReadBytesExt, WriteBytesExt};
use std::convert::{TryFrom, TryInto};
use std::io;

use common::int_convert::usize_to_u32;

use common_capnp::{
buffer128, buffer256, buffer512, custom_int128, custom_u_int128, dh_public_key, hash,
invoice_id, named_index_server_address, named_relay_address, net_address, public_key,
rand_nonce, receipt, relay_address, salt, signature, uid,
buffer128, buffer256, buffer512, commit, custom_int128, custom_u_int128, dh_public_key, hash,
hashed_lock, invoice_id, multi_commit, named_index_server_address, named_relay_address,
net_address, payment_id, plain_lock, public_key, rand_nonce, rate, receipt, relay_address,
salt, signature, uid,
};

use crate::app_server::messages::{NamedRelayAddress, RelayAddress};
use crate::funder::messages::Receipt;
use crate::funder::messages::{Commit, MultiCommit, Rate, Receipt};
use crate::index_server::messages::NamedIndexServerAddress;
use crate::net::messages::NetAddress;
use crate::serialize::SerializeError;

use crypto::crypto_rand::RandValue;
use crypto::dh::{DhPublicKey, Salt};
use crypto::hash::HashResult;
use crypto::hash_lock::{HashedLock, PlainLock};
use crypto::identity::{PublicKey, Signature};
use crypto::invoice_id::InvoiceId;
use crypto::payment_id::PaymentId;
use crypto::uid::Uid;

/// Read the underlying bytes from given `CustomUInt128` reader.
Expand Down Expand Up @@ -149,6 +154,7 @@ type_capnp_serde!(
read_buffer256,
write_buffer256
);

type_capnp_serde!(
invoice_id,
InvoiceId,
Expand All @@ -158,6 +164,15 @@ type_capnp_serde!(
write_buffer256
);

type_capnp_serde!(
payment_id,
PaymentId,
read_payment_id,
write_payment_id,
read_buffer128,
write_buffer128
);

// 512 bits:
type_capnp_serde!(
signature,
Expand All @@ -168,6 +183,26 @@ type_capnp_serde!(
write_buffer512
);

// 256 bits:
type_capnp_serde!(
plain_lock,
PlainLock,
read_plain_lock,
write_plain_lock,
read_buffer256,
write_buffer256
);

// 256 bits:
type_capnp_serde!(
hashed_lock,
HashedLock,
read_hashed_lock,
write_hashed_lock,
read_buffer256,
write_buffer256
);

pub fn read_custom_u_int128(from: &custom_u_int128::Reader) -> Result<u128, SerializeError> {
let inner = from.get_inner()?;
let data_bytes = read_buffer128(&inner);
Expand Down Expand Up @@ -270,23 +305,98 @@ pub fn write_index_server_address(from: &IndexServerAddress, to: &mut index_serv
*/

pub fn read_receipt(from: &receipt::Reader) -> Result<Receipt, SerializeError> {
unimplemented!();
/*
Ok(Receipt {
response_hash: read_hash(&from.get_response_hash()?)?,
invoice_id: read_invoice_id(&from.get_invoice_id()?)?,
src_plain_lock: read_plain_lock(&from.get_src_plain_lock()?)?,
dest_plain_lock: read_plain_lock(&from.get_dest_plain_lock()?)?,
dest_payment: read_custom_u_int128(&from.get_dest_payment()?)?,
total_dest_payment: read_custom_u_int128(&from.get_total_dest_payment()?)?,
signature: read_signature(&from.get_signature()?)?,
})
*/
}

pub fn write_receipt(from: &Receipt, to: &mut receipt::Builder) {
unimplemented!();
/*
write_hash(&from.response_hash, &mut to.reborrow().init_response_hash());
write_invoice_id(&from.invoice_id, &mut to.reborrow().init_invoice_id());
write_plain_lock(
&from.src_plain_lock,
&mut to.reborrow().init_src_plain_lock(),
);
write_plain_lock(
&from.dest_plain_lock,
&mut to.reborrow().init_dest_plain_lock(),
);
write_custom_u_int128(from.dest_payment, &mut to.reborrow().init_dest_payment());
write_custom_u_int128(
from.total_dest_payment,
&mut to.reborrow().init_total_dest_payment(),
);
write_signature(&from.signature, &mut to.reborrow().init_signature());
*/
}

pub fn read_commit(from: &commit::Reader) -> Result<Commit, SerializeError> {
Ok(Commit {
response_hash: read_hash(&from.get_response_hash()?)?,
dest_payment: read_custom_u_int128(&from.get_dest_payment()?)?,
src_plain_lock: read_plain_lock(&from.get_src_plain_lock()?)?,
dest_hashed_lock: read_hashed_lock(&from.get_dest_hashed_lock()?)?,
signature: read_signature(&from.get_signature()?)?,
})
}

pub fn write_commit(from: &Commit, to: &mut commit::Builder) {
write_hash(&from.response_hash, &mut to.reborrow().init_response_hash());
write_custom_u_int128(from.dest_payment, &mut to.reborrow().init_dest_payment());
write_plain_lock(
&from.src_plain_lock,
&mut to.reborrow().init_src_plain_lock(),
);
write_hashed_lock(
&from.dest_hashed_lock,
&mut to.reborrow().init_dest_hashed_lock(),
);
write_signature(&from.signature, &mut to.reborrow().init_signature());
}

pub fn read_multi_commit(from: &multi_commit::Reader) -> Result<MultiCommit, SerializeError> {
let mut commits = Vec::new();
for commit_reader in from.get_commits()? {
commits.push(read_commit(&commit_reader)?);
}

Ok(MultiCommit {
invoice_id: read_invoice_id(&from.get_invoice_id()?)?,
total_dest_payment: read_custom_u_int128(&from.get_total_dest_payment()?)?,
commits,
})
}

pub fn write_multi_commit(from: &MultiCommit, to: &mut multi_commit::Builder) {
write_invoice_id(&from.invoice_id, &mut to.reborrow().init_invoice_id());
write_custom_u_int128(
from.total_dest_payment,
&mut to.reborrow().init_total_dest_payment(),
);

let mut commits_builder = to
.reborrow()
.init_commits(usize_to_u32(from.commits.len()).unwrap());

for (index, commit) in from.commits.iter().enumerate() {
let mut commit_builder = commits_builder.reborrow().get(usize_to_u32(index).unwrap());
write_commit(commit, &mut commit_builder);
}
}

pub fn read_rate(from: &rate::Reader) -> Result<Rate, SerializeError> {
Ok(Rate {
mul: from.get_mul(),
add: from.get_add(),
})
}

pub fn write_rate(from: &Rate, to: &mut rate::Builder) {
to.reborrow().set_mul(from.mul);
to.reborrow().set_add(from.add);
}
Loading