Init.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
|
||||
#[macro_use] extern crate rocket;
|
||||
extern crate bls12_381;
|
||||
extern crate rand;
|
||||
|
||||
use rocket_okapi::settings::UrlObject;
|
||||
use rocket_okapi::{openapi, openapi_get_routes, rapidoc::*, swagger_ui::*};
|
||||
use rocket::serde::json::Json;
|
||||
use rocket::Request;
|
||||
|
||||
use ophe::core::{RatelimiterRequest,RatelimiterResponse};
|
||||
use ophe::core;
|
||||
use ophe::utils;
|
||||
use rocket::State;
|
||||
use bls12_381::Scalar;
|
||||
|
||||
|
||||
|
||||
fn make_public_parameters() -> (Vec<Scalar>,core::PublicParameters){
|
||||
let bytes = 32;
|
||||
let k = 2;
|
||||
let keysize = bytes*8/k;
|
||||
let generator = utils::random_gt();
|
||||
let keys = (0..keysize).map(|_|utils::random_scalar()).collect::<Vec<_>>();
|
||||
let public_keys = keys.iter().map(|x|generator*x).collect::<Vec<_>>();
|
||||
let space = utils::prepare_messages_to_space(k);
|
||||
|
||||
(keys,core::PublicParameters{space, ratelimiter_public_keys:public_keys,gt_gen:generator,k})
|
||||
}
|
||||
|
||||
|
||||
#[rocket::main]
|
||||
async fn main() {
|
||||
let (keys,pp) = make_public_parameters();
|
||||
|
||||
let launch_result = rocket::build()
|
||||
.manage(pp)
|
||||
.manage(keys)
|
||||
.mount("/", openapi_get_routes![phe_help,get_public_parameters])
|
||||
.mount(
|
||||
"/swagger-ui/",
|
||||
make_swagger_ui(&SwaggerUIConfig {
|
||||
url: "../openapi.json".to_owned(),
|
||||
..Default::default()
|
||||
}),
|
||||
) .mount(
|
||||
"/rapidoc/",
|
||||
make_rapidoc(&RapiDocConfig {
|
||||
general: GeneralConfig {
|
||||
spec_urls: vec![UrlObject::new("General", "../openapi.json")],
|
||||
..Default::default()
|
||||
},
|
||||
hide_show: HideShowConfig {
|
||||
allow_spec_url_load: false,
|
||||
allow_spec_file_load: false,
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
}),
|
||||
)
|
||||
.register("/",catchers![serialize_failed])
|
||||
.launch()
|
||||
.await;
|
||||
match launch_result {
|
||||
Ok(_) => println!("Rocket shut down gracefully."),
|
||||
Err(err) => println!("Rocket had an error: {}", err),
|
||||
};
|
||||
}
|
||||
|
||||
#[openapi()]
|
||||
#[post("/phe_help",format = "json", data = "<request>")]
|
||||
fn phe_help(request: Json<RatelimiterRequest>,pp: &State<core::PublicParameters>,keys: &State<Vec<Scalar>>) -> Json<RatelimiterResponse> {
|
||||
Json(core::phe_ratelimiter(keys,&request,pp))
|
||||
}
|
||||
|
||||
#[openapi()]
|
||||
#[get("/get_public_parameters")]
|
||||
fn get_public_parameters(pp: &State<core::PublicParameters>) -> Json<&core::PublicParameters>{
|
||||
Json(pp)
|
||||
}
|
||||
|
||||
#[catch(422)]
|
||||
fn serialize_failed(_req: &Request) -> String {
|
||||
format!("Malformed Request")
|
||||
}
|
||||
Reference in New Issue
Block a user