wip
This commit is contained in:
parent
097653f175
commit
7f151868e1
|
@ -1,73 +0,0 @@
|
|||
use chrono::prelude::DateTime;
|
||||
use cryptoxide::ed25519;
|
||||
use uuid::Uuid;
|
||||
|
||||
use mr_wolf_tonic::clock_client::ClockClient;
|
||||
use mr_wolf_tonic::{AddReq, TimeReq};
|
||||
|
||||
pub mod mr_wolf_tonic {
|
||||
tonic::include_proto!("mrwolf");
|
||||
}
|
||||
|
||||
use mr_wolf::types::{mk_message, Witness};
|
||||
|
||||
fn mk_witness(keypair: [u8; 64], iou: u64) -> Witness {
|
||||
let nonce = Uuid::new_v4().as_bytes().clone();
|
||||
let message = mk_message(iou, &nonce);
|
||||
let sig = ed25519::signature(&message, &keypair);
|
||||
Witness { iou, nonce, sig }
|
||||
}
|
||||
|
||||
fn mk_request(keypair: [u8; 64], id: &str, iou: u64) -> tonic::Request<TimeReq> {
|
||||
let witness = mk_witness(keypair, iou);
|
||||
tonic::Request::new(TimeReq {
|
||||
id: id.to_string(),
|
||||
iou: witness.iou,
|
||||
nonce: witness.nonce.into_iter().collect::<Vec<u8>>(),
|
||||
sig: witness.sig.into_iter().collect::<Vec<u8>>(),
|
||||
})
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut client = ClockClient::connect("http://0.0.0.0:50051").await?;
|
||||
// Subscriber generates secret and declares pub_key
|
||||
let prv_key = [0u8; 32]; // private key only for example !
|
||||
let (keypair, pub_key_arr) = ed25519::keypair(&prv_key);
|
||||
let pub_key = pub_key_arr.into_iter().collect::<Vec<u8>>();
|
||||
|
||||
// Provider and subscriber agree terms.
|
||||
// Provider adds details to service
|
||||
// And hands back subscriber id
|
||||
let add_req = tonic::Request::new(AddReq {
|
||||
pot: 20000,
|
||||
pub_key,
|
||||
});
|
||||
|
||||
let add_res = client.add(add_req).await?;
|
||||
// Subscriber id
|
||||
let id = add_res.into_inner().id;
|
||||
|
||||
// Make a request
|
||||
let request = mk_request(keypair, &id, 1);
|
||||
let response = client.whats_the_time(request).await?;
|
||||
let start = response.into_inner().message;
|
||||
let start_time = DateTime::parse_from_str(&start, "New %+").unwrap();
|
||||
println!("ID={} UTC={:?}", id, start);
|
||||
for ii in 2..20000 {
|
||||
let request = mk_request(keypair, &id, ii);
|
||||
let response = client.whats_the_time(request).await?;
|
||||
let _utc = response.into_inner().message;
|
||||
}
|
||||
let request = mk_request(keypair, &id, 20000);
|
||||
let response = client.whats_the_time(request).await?;
|
||||
let end = response.into_inner().message;
|
||||
println!("ID={} UTC={:?}", id, end);
|
||||
let end_time = DateTime::parse_from_str(&end, "New %+").unwrap();
|
||||
println!(
|
||||
"ID={} DIFF={:?}",
|
||||
id,
|
||||
end_time.signed_duration_since(start_time)
|
||||
);
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue