瀏覽代碼

adjusted `initialize_connection` so errors aren't potentially panicking

master
Isabelle L. 5 年之前
父節點
當前提交
9ca9fde47d
共有 2 個檔案被更改,包括 8 行新增7 行删除
  1. +2
    -2
      Cargo.toml
  2. +6
    -5
      src/lib.rs

+ 2
- 2
Cargo.toml 查看文件

@@ -5,13 +5,13 @@ authors = ["Isabelle L. <me@izzabelle.dev>"]
edition = "2018" edition = "2018"


[dependencies] [dependencies]
serde = { version = "1.0.110", features = ["derive"]}
serde = { version = "1.0.110", features = ["derive"] }
serde_json = "1.0.53" serde_json = "1.0.53"
futures = "0.3.5" futures = "0.3.5"
futures-util = "0.3.5" futures-util = "0.3.5"
uuid = { version = "0.8.1", features = ["v4"] } uuid = { version = "0.8.1", features = ["v4"] }
chrono = "0.4.11" chrono = "0.4.11"
ring = "0.16.13"
ring = { version = "0.16.13", features = ["std"] }
anyhow = "1.0.30" anyhow = "1.0.30"
thiserror = "1.0.17" thiserror = "1.0.17"
crc32fast = "1.2.0" crc32fast = "1.2.0"


+ 6
- 5
src/lib.rs 查看文件

@@ -40,7 +40,9 @@ struct NetworkPacket(Vec<u8>);


/// a type of data that can be sent /// a type of data that can be sent
pub trait Sendable: Sized { pub trait Sendable: Sized {
/// create a packet from the struct
fn to_packet(&self, encrypt_kind: EncryptKind) -> Result<Packet>; fn to_packet(&self, encrypt_kind: EncryptKind) -> Result<Packet>;
/// create the struct from a packet
fn from_packet(packet: Packet) -> Result<Self>; fn from_packet(packet: Packet) -> Result<Self>;
} }


@@ -169,7 +171,7 @@ pub enum IlmpError {
#[error("orion error")] #[error("orion error")]
Orion(#[from] orion::errors::UnknownCryptoError), Orion(#[from] orion::errors::UnknownCryptoError),
#[error("ring fucking broke")] #[error("ring fucking broke")]
Ring,
Ring(#[from] ring::error::Unspecified),
} }


/// reads a `Packet` from a stream /// reads a `Packet` from a stream
@@ -249,9 +251,8 @@ where
{ {
// create / send agree key // create / send agree key
let rng = rand::SystemRandom::new(); let rng = rand::SystemRandom::new();
let my_priv_key =
agree::EphemeralPrivateKey::generate(&agree::X25519, &rng).expect("ring broke");
let my_pub_key = my_priv_key.compute_public_key().expect("ring broke");
let my_priv_key = agree::EphemeralPrivateKey::generate(&agree::X25519, &rng)?;
let my_pub_key = my_priv_key.compute_public_key()?;
let agree_packet = Agreement::new(my_pub_key.as_ref().into()); let agree_packet = Agreement::new(my_pub_key.as_ref().into());
crate::write(write, agree_packet, &encrypt::NoEncrypt::new()).await?; crate::write(write, agree_packet, &encrypt::NoEncrypt::new()).await?;


@@ -266,7 +267,7 @@ where
agree::agree_ephemeral( agree::agree_ephemeral(
my_priv_key, my_priv_key,
&peer_pub_key, &peer_pub_key,
IlmpError::Ring,
IlmpError::Ring(ring::error::Unspecified),
|key_material| { |key_material| {
let key_material = digest::digest(&digest::SHA256, key_material.as_ref().into()) let key_material = digest::digest(&digest::SHA256, key_material.as_ref().into())
.as_ref() .as_ref()


Loading…
取消
儲存