A small Protocol Library for Portal - An encrypted file transfer utility
This crate enables a consumer to:
```rust // receiver let dir = Some(Direction::Receiver); let pass ="test".tostring(); let (mut receiver,receivermsg) = Portal::init(dir,"id".to_string(),pass,None);
// sender let dir = Some(Direction::Sender); let pass ="test".tostring(); let (mut sender,sendermsg) = Portal::init(dir,"id".to_string(),pass,None);
receiver.confirmpeer(&sendermsg).unwrap(); sender.confirmpeer(&receivermsg).unwrap();
assert_eq!(receiver.key,sender.key); ```
```rust // open file read-only for sending let mut file = portal.load_file(fpath)?;
// Encrypt the file and share state file.encrypt()?; file.syncfilestate(&mut client)?;
// Get an iterator over the file in chunks let chunks = portal.getchunks(&file,portal::CHUNKSIZE);
// Iterate over the chunks sending the via the client TcpStream for data in chunks.intoiter() { client.writeall(&data)?; total += data.len(); } ```
```rust // create outfile let mut file = portal.create_file(&fname, fsize)?;
// Receive until connection is done let len = match file.downloadfile(&client,|x| {pb.setposition(x)})?;
assert_eq!(len as u64, fsize);
// Decrypt the file file.decrypt()?; ```