Wow, this is pretty cool. It would be interesting to talk with you about your crypto.
1. The sender generates an AES-256 key for the transfer. 2. The receiver sends a public key to the sender. 3. The sender encrypts the AES key with the public key, and sends to the receiver. 4. The receiver decrypts the AES key. 5. The sender then sends all the bytes, encrypted with AES.
The point of using the AES key is that it's faster to encrypt/decrypt. The point of using the public/private keys is to get that key to the receiver in a secure way.
The transfer has a session key from our server so each peer can validate the identity of the other peer.
How's that sound?
Does this meet with your understanding?