adapted to changes in signer lib
This commit is contained in:
parent
cd4bf0c99e
commit
50d5f9f387
@ -29,6 +29,15 @@ wit_bindgen::generate!({
|
|||||||
additional_derives: [PartialEq, serde::Deserialize, serde::Serialize, process_macros::SerdeJsonInto],
|
additional_derives: [PartialEq, serde::Deserialize, serde::Serialize, process_macros::SerdeJsonInto],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
enum SignerRequest {
|
||||||
|
Sign,
|
||||||
|
Verify { node: String, signature: Vec<u8> },
|
||||||
|
}
|
||||||
|
#[derive(Debug, Serialize, Deserialize, SerdeJsonInto)]
|
||||||
|
struct SignResponse {
|
||||||
|
signature: Vec<u8>,
|
||||||
|
}
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
enum FrontendRequest {
|
enum FrontendRequest {
|
||||||
Sign,
|
Sign,
|
||||||
@ -37,22 +46,11 @@ enum FrontendRequest {
|
|||||||
Debug(String),
|
Debug(String),
|
||||||
}
|
}
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
enum SignerRequest {
|
struct LoginMessage {
|
||||||
Sign(SignRequest),
|
|
||||||
Verify { from: Address, data: SignResponse },
|
|
||||||
}
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
|
||||||
struct SignRequest {
|
|
||||||
pub site: String,
|
pub site: String,
|
||||||
pub time: u64,
|
pub time: u64,
|
||||||
pub nonce: Option<String>,
|
pub nonce: Option<String>,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Serialize, Deserialize, SerdeJsonInto)]
|
|
||||||
struct SignResponse {
|
|
||||||
pub body: SignRequest,
|
|
||||||
pub message: Vec<u8>,
|
|
||||||
pub signature: Vec<u8>,
|
|
||||||
}
|
|
||||||
const ICON: &str = include_str!("icon");
|
const ICON: &str = include_str!("icon");
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
@ -94,6 +92,35 @@ impl VersionedState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn _signer_test(our: &Address) -> anyhow::Result<()> {
|
||||||
|
let target = Address::new(our.node(), ("sign", "sign", "sys"));
|
||||||
|
let login_message = LoginMessage {
|
||||||
|
site: WEB2_URL.to_string(),
|
||||||
|
nonce: Some(WEB2_LOGIN_NONCE.to_string()),
|
||||||
|
time: get_now(),
|
||||||
|
};
|
||||||
|
let blob = serde_json::to_vec(&login_message)?;
|
||||||
|
// Get the signature from login:sys:sys
|
||||||
|
let res: SignResponse = Request::to(target.clone())
|
||||||
|
.blob_bytes(blob.clone())
|
||||||
|
.body(serde_json::to_vec(&SignerRequest::Sign)?)
|
||||||
|
.send_and_await_response(10)??
|
||||||
|
.body()
|
||||||
|
.try_into()?;
|
||||||
|
// Send signature to designated endpoint on Web2 app
|
||||||
|
let body2 = SignerRequest::Verify {
|
||||||
|
node: our.node().to_string(),
|
||||||
|
signature: res.signature,
|
||||||
|
};
|
||||||
|
let verify_res = Request::to(target)
|
||||||
|
.blob_bytes(blob)
|
||||||
|
.body(serde_json::to_vec(&body2)?)
|
||||||
|
.send_and_await_response(10)??;
|
||||||
|
let is_good: bool = serde_json::from_slice(verify_res.body())?;
|
||||||
|
kiprintln!("verify_res \n{:#?}", is_good);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
call_init!(initialize);
|
call_init!(initialize);
|
||||||
fn initialize(our: Address) {
|
fn initialize(our: Address) {
|
||||||
init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap();
|
init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap();
|
||||||
@ -115,12 +142,6 @@ fn initialize(our: Address) {
|
|||||||
http_server
|
http_server
|
||||||
.bind_ws_path("/", WsBindingConfig::default())
|
.bind_ws_path("/", WsBindingConfig::default())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
// let http_config = HttpBindingConfig::default().secure_subdomain(true);
|
|
||||||
|
|
||||||
// http_server
|
|
||||||
// .serve_ui("ui", vec!["/hypr-login"], http_config.clone())
|
|
||||||
// .expect("Failed to serve UI");
|
|
||||||
// http_server.secure_bind_http_path("/").unwrap();
|
|
||||||
|
|
||||||
main_loop(&our, &mut state, &mut http_server);
|
main_loop(&our, &mut state, &mut http_server);
|
||||||
}
|
}
|
||||||
@ -207,15 +228,17 @@ fn handle_login_request(
|
|||||||
let request = serde_json::from_slice::<FrontendRequest>(request_bytes)?;
|
let request = serde_json::from_slice::<FrontendRequest>(request_bytes)?;
|
||||||
match request {
|
match request {
|
||||||
FrontendRequest::Sign => {
|
FrontendRequest::Sign => {
|
||||||
let target = Address::new(our.node(), ("login", "login", "sys"));
|
let target = Address::new(our.node(), ("sign", "sign", "sys"));
|
||||||
let lr = SignerRequest::Sign(SignRequest {
|
let body = LoginMessage {
|
||||||
site: WEB2_URL.to_string(),
|
site: WEB2_URL.to_string(),
|
||||||
nonce: Some(WEB2_LOGIN_NONCE.to_string()),
|
nonce: Some(WEB2_LOGIN_NONCE.to_string()),
|
||||||
time: get_now(),
|
time: get_now(),
|
||||||
});
|
};
|
||||||
|
let body_bytes = serde_json::to_vec(&body)?;
|
||||||
// Get the signature from login:sys:sys
|
// Get the signature from login:sys:sys
|
||||||
let res: SignResponse = Request::to(target)
|
let res: SignResponse = Request::to(target)
|
||||||
.body(serde_json::to_vec(&lr)?)
|
.blob_bytes(body_bytes)
|
||||||
|
.body(serde_json::to_vec(&SignerRequest::Sign)?)
|
||||||
.send_and_await_response(10)??
|
.send_and_await_response(10)??
|
||||||
.body()
|
.body()
|
||||||
.try_into()?;
|
.try_into()?;
|
||||||
@ -255,7 +278,8 @@ fn attempt_login(
|
|||||||
let mut json_headers = HashMap::new();
|
let mut json_headers = HashMap::new();
|
||||||
json_headers.insert("Content-type".to_string(), "application/json".to_string());
|
json_headers.insert("Content-type".to_string(), "application/json".to_string());
|
||||||
let node = our.node();
|
let node = our.node();
|
||||||
let message = signature_response.message;
|
let blob = get_blob().ok_or(anyhow::anyhow!("no blob"))?;
|
||||||
|
let message = blob.bytes();
|
||||||
let signature = signature_response.signature;
|
let signature = signature_response.signature;
|
||||||
let json =
|
let json =
|
||||||
serde_json::to_vec(&json!({"node":node, "message": message, "signature": signature}))?;
|
serde_json::to_vec(&json!({"node":node, "message": message, "signature": signature}))?;
|
||||||
|
@ -227,6 +227,7 @@ fn mother_script(prefix: &str) -> String {
|
|||||||
<script>
|
<script>
|
||||||
const HYPERWARE_APP_PATH = '{0}';
|
const HYPERWARE_APP_PATH = '{0}';
|
||||||
</script>
|
</script>
|
||||||
|
<script src="./proxy.js" />
|
||||||
"#,
|
"#,
|
||||||
prefix
|
prefix
|
||||||
);
|
);
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -8,14 +8,14 @@
|
|||||||
"homepage:homepage:sys",
|
"homepage:homepage:sys",
|
||||||
"http-server:distro:sys",
|
"http-server:distro:sys",
|
||||||
"http-client:distro:sys",
|
"http-client:distro:sys",
|
||||||
"login:login:sys",
|
"sign:sign:sys",
|
||||||
"vfs:distro:sys"
|
"vfs:distro:sys"
|
||||||
],
|
],
|
||||||
"grant_capabilities": [
|
"grant_capabilities": [
|
||||||
"homepage:homepage:sys",
|
"homepage:homepage:sys",
|
||||||
"http-server:distro:sys",
|
"http-server:distro:sys",
|
||||||
"http-client:distro:sys",
|
"http-client:distro:sys",
|
||||||
"login:login:sys",
|
"sign:sign:sys",
|
||||||
"vfs:distro:sys"
|
"vfs:distro:sys"
|
||||||
],
|
],
|
||||||
"public": false
|
"public": false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user