enregistrement avec serveur
This commit is contained in:
@@ -9,3 +9,12 @@ tokio = { version = "1", features = ["full"] }
|
||||
rand = "0.10.0-rc.5"
|
||||
hex = "0.4.3"
|
||||
sha2 = "0.10.9"
|
||||
ecdsa = "0.16.9"
|
||||
getrandom = "0.3.4"
|
||||
p256 = "0.13.2"
|
||||
rand_core = "0.6"
|
||||
os-rng = "0.0.0"
|
||||
rand_os = "0.2.2"
|
||||
http = "1.4.0"
|
||||
reqwest = "0.12.24"
|
||||
bytes = "1.11.0"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
mod data;
|
||||
mod protocol;
|
||||
|
||||
/// Messages sent to the Network thread by the GUI.
|
||||
pub enum NetworkCommand {
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
use http::{Request, Response};
|
||||
use p256::ecdsa::{
|
||||
Signature, SigningKey, VerifyingKey,
|
||||
signature::{Signer, Verifier},
|
||||
};
|
||||
use rand_core::OsRng;
|
||||
|
||||
struct KeyRegistration {
|
||||
priv_key: SigningKey,
|
||||
pub_key: VerifyingKey,
|
||||
username: String,
|
||||
}
|
||||
|
||||
impl KeyRegistration {
|
||||
fn new(username: String) -> KeyRegistration {
|
||||
let priv_key = SigningKey::random(&mut OsRng);
|
||||
let pub_key = VerifyingKey::from(&priv_key);
|
||||
KeyRegistration {
|
||||
priv_key: priv_key,
|
||||
pub_key: pub_key,
|
||||
username: username,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn register_with_the_server(key: KeyRegistration) -> Result<bytes::Bytes, reqwest::Error> {
|
||||
let client = reqwest::Client::new();
|
||||
|
||||
let pubkey_ser = key.pub_key.to_encoded_point(false);
|
||||
let pubkey_str = hex::encode(pubkey_ser);
|
||||
let uri = format!("https://jch.irif.fr:8443/peers/{}/key", key.username);
|
||||
let resp = client.put(uri).send().await?.error_for_status()?;
|
||||
|
||||
resp.bytes().await
|
||||
}
|
||||
|
||||
/*#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn key_genereation() {
|
||||
let keys = KeyRegistration::new();
|
||||
let pubkey = keys.pub_key;
|
||||
let pubkey_ser = pubkey.to_encoded_point(false);
|
||||
println!("string pubkey: {}", hex::encode(pubkey_ser));
|
||||
println!("string privkey: {}", hex::encode(keys.priv_key.to_bytes()))
|
||||
}
|
||||
}*/
|
||||
|
||||
Reference in New Issue
Block a user