ソースを参照

minor changes when working with the actual server/client

master
Isabelle L. 5年前
コミット
9ec1604849
1個のファイルの変更6行の追加21行の削除
  1. +6
    -21
      src/lib.rs

+ 6
- 21
src/lib.rs ファイルの表示

@@ -35,7 +35,7 @@ pub trait Sendable: Sized {

/// data to be sent
pub struct Packet {
kind: PacketKind,
pub kind: PacketKind,
integrity_hash: Vec<u8>,
contents: Vec<u8>,
}
@@ -44,11 +44,7 @@ impl Packet {
/// create a new `Packet`
pub fn new(kind: PacketKind, contents: Vec<u8>) -> Packet {
let integrity_hash = digest::digest(&digest::SHA256, &contents).as_ref().to_vec();
Packet {
kind,
integrity_hash,
contents,
}
Packet { kind, integrity_hash, contents }
}

// generate a checksum from the packet
@@ -86,18 +82,12 @@ impl Packet {

/// verifies SHA256 integrity
pub fn verify_integrity(&self) -> Result<()> {
let expected = digest::digest(&digest::SHA256, &self.contents)
.as_ref()
.to_vec();
let expected = digest::digest(&digest::SHA256, &self.contents).as_ref().to_vec();

if expected == self.integrity_hash {
Ok(())
} else {
Err(IlmpError::BadHashIntegrity {
found: self.integrity_hash.clone(),
expected,
}
.into())
Err(IlmpError::BadHashIntegrity { found: self.integrity_hash.clone(), expected }.into())
}
}

@@ -118,7 +108,6 @@ impl Packet {
#[repr(u8)]
pub enum PacketKind {
Message = 0,
PublicKey = 1,
}

impl PacketKind {
@@ -162,7 +151,7 @@ where

let kind = PacketKind::from_u8(info_buf[0]).unwrap();
let length = u64::from_le_bytes(info_buf[1..9].try_into().unwrap()) as usize;
let checksum = u32::from_le_bytes(info_buf[10..14].try_into().unwrap());
let checksum = u32::from_le_bytes(info_buf[9..13].try_into().unwrap());

let mut integrity_hash: Vec<u8> = vec![0; 32];
stream.read(&mut integrity_hash).await?;
@@ -170,11 +159,7 @@ where
let mut contents: Vec<u8> = vec![0; length];
stream.read(&mut contents).await?;

let packet = Packet {
kind,
contents,
integrity_hash,
};
let packet = Packet { kind, contents, integrity_hash };
packet.verify_integrity()?;
packet.verify_checksum(checksum)?;



読み込み中…
キャンセル
保存