#file-transfer #spake2 #chacha20 #poly1305 #wormhole

app portal-client

A Secure file transfer utility, written in Rust. The protocol utilizes SPAKE2 for key negotiation over an insecure channel, and ChaCha20Poly1305 Authenticated Encryption to encrypt the file with the derived shared symmetric key. This enables two peers to transfer a file over any channel without needing to trust the intermediary relay.

3 releases (breaking)

0.4.0 Apr 2, 2022
0.3.0 Mar 28, 2022
0.2.0 Oct 8, 2020
0.1.0 Oct 2, 2020

#233 in Cryptography

Apache-2.0 OR MIT



This crate contains the client-side application for Portal - An encrypted file transfer utility.

Note: The peer must connect to the same portal-relay as you. The default relay is portal-relay.landhb.dev but can be changed in your config. On linux the config is most commonly located at ~/.config/portal/portal.toml.


cargo install portal-client

Send a file

portal send /path/to/file

Recv a file

portal recv

Diagram of Key Derivation



~208K SLoC