main.rs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. use serde_json::Value;
  2. use spiral_rs::util::*;
  3. use spiral_rs::client::*;
  4. use std::env;
  5. fn send_api_req_text(path: &str, data: Vec<u8>) -> Option<String> {
  6. let client = reqwest::blocking::Client::builder()
  7. .timeout(None)
  8. .build().unwrap();
  9. client.post(format!("https://spiralwiki.com:8088{}", path))
  10. .body(data)
  11. .send()
  12. .ok()?
  13. .text()
  14. .ok()
  15. }
  16. fn send_api_req_vec(path: &str, data: Vec<u8>) -> Option<Vec<u8>> {
  17. let client = reqwest::blocking::Client::builder()
  18. .timeout(None)
  19. .build().unwrap();
  20. Some(client.post(format!("https://spiralwiki.com:8088{}", path))
  21. .body(data)
  22. .send()
  23. .ok()?
  24. .bytes()
  25. .ok()?
  26. .to_vec())
  27. }
  28. fn main() {
  29. let cfg = r#"
  30. {'n': 2,
  31. 'nu_1': 9,
  32. 'nu_2': 6,
  33. 'p': 256,
  34. 'q_prime_bits': 20,
  35. 's_e': 87.62938774292914,
  36. 't_GSW': 8,
  37. 't_conv': 4,
  38. 't_exp': 8,
  39. 't_exp_right': 56}
  40. "#;
  41. let cfg = cfg.replace("'", "\"");
  42. let params = params_from_json(&cfg);
  43. let args: Vec<String> = env::args().collect();
  44. let idx_target: usize = (&args[1]).parse().unwrap();
  45. println!("initializing client");
  46. let mut c = Client::init(&params);
  47. println!("generating public parameters");
  48. let pub_params = c.generate_keys();
  49. let pub_params_buf = pub_params.serialize();
  50. println!("pub_params size {}", pub_params_buf.len());
  51. let query = c.generate_query(idx_target);
  52. let mut query_buf = query.serialize();
  53. println!("initial query size {}", query_buf.len());
  54. let setup_resp_str = send_api_req_text("/setup", pub_params_buf).unwrap();
  55. println!("{}", setup_resp_str);
  56. let resp_json: Value = serde_json::from_str(&setup_resp_str).unwrap();
  57. let id = resp_json["id"].as_str().unwrap();
  58. let mut full_query_buf = id.as_bytes().to_vec();
  59. println!("id size {}", full_query_buf.len());
  60. full_query_buf.append(&mut query_buf);
  61. let query_resp = send_api_req_vec("/query", full_query_buf).unwrap();
  62. println!("query_resp len {}", query_resp.len());
  63. let _result = c.decode_response(query_resp.as_slice());
  64. // println!("{:x?}", result);
  65. }