From 739816807c8b6a7c0e0be9c909f64d25dc0bf243 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Mon, 30 May 2016 03:32:26 -0400 Subject: sort-of-working crypto With XSalsa20, performance really isn't very good. --- src/crypto.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/crypto.rs') diff --git a/src/crypto.rs b/src/crypto.rs index 07c6cef..d6b65be 100644 --- a/src/crypto.rs +++ b/src/crypto.rs @@ -39,7 +39,6 @@ impl Read for SecretStream { // First try to return any extra older decrypted data if self.read_buf_len > 0 { - println!("crypto: Returning existing data"); let rlen = min(self.read_buf_len, buf.len()); buf[..rlen].clone_from_slice( &self.read_buf[self.read_buf_offset..(self.read_buf_offset+rlen)]); @@ -51,24 +50,25 @@ impl Read for SecretStream { let mut header_buf = [0; 4]; try!(self.inner.read_exact(&mut header_buf)); let len: u32 = unsafe { transmute(header_buf) }; - let len = len.to_be(); + let len = u32::from_be(len); let len = len as usize; if len as usize > self.read_buf.len() { return Err(io::Error::new(ErrorKind::Other, format!("Message too big ({})", len))); } try!(self.inner.read_exact(&mut self.read_buf[..len])); + /* println!("DECRYPT:"); println!("\tlen: {}", len); println!("\tmsg: {:?}", &self.read_buf[..len]); println!("\tnonce: {}", nonce2string(&self.write_nonce)); println!("\tkey: {}", key2string(&self.key)); + */ let cleartext = match secretbox::open(&self.read_buf[..len], &self.read_nonce, &self.key) { Ok(cleartext) => cleartext, Err(_) => { return Err(io::Error::new(ErrorKind::InvalidData, "Failed to decrypt message (could mean corruption or malicious attack"))}, }; - println!("crypto: Successfully decrypted message: {:?}", cleartext); self.read_nonce.increment_le_inplace(); let clen = cleartext.len() as usize; @@ -76,13 +76,12 @@ impl Read for SecretStream { if clen > buf.len() { let buf_len = buf.len(); buf.clone_from_slice(&cleartext[..buf_len]); - println!("copying extra: {} {} {}", self.read_buf.len(), buf_len, clen); self.read_buf[..(clen-buf_len)].clone_from_slice(&cleartext[buf_len..]); self.read_buf_offset = 0; self.read_buf_len = clen - buf_len; return Ok(buf_len); } else { - buf.clone_from_slice(&cleartext[..clen]); + buf[..clen].clone_from_slice(&cleartext[..clen]); return Ok(clen as usize); } } @@ -98,13 +97,14 @@ impl Write for SecretStream { let header_buf: [u8; 4] = unsafe { transmute(len.to_be()) }; try!(self.inner.write_all(&header_buf)); + /* println!("DECRYPT:"); println!("\tlen: {}", len); println!("\tmsg: {:?}", ciphertext); println!("\tnonce: {}", nonce2string(&self.write_nonce)); println!("\tkey: {}", key2string(&self.key)); let check = secretbox::open(&ciphertext, &self.write_nonce, &self.key).unwrap(); - //assert!(buf == check); + */ self.write_nonce.increment_le_inplace(); try!(self.inner.write_all(&ciphertext[..])); -- cgit v1.2.3