This commit is contained in:
Fritz Schmid
2022-06-15 13:25:18 +02:00
parent 73dd812daa
commit efafddbca9
11 changed files with 3172 additions and 0 deletions
+85
View File
@@ -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")
}