Peerio's end-to-end encryption implements the miniLock protocol and uses the following primitives:
- Curve25519 public key agreement over elliptic curves
- XSalsa20 for symmetric encryption
- Poly1305 for message authentication
- BLAKE2s for integrity checks
- Scrypt for memory-hard private key derivation
Public keys are managed by the Peerio network, with Peerio clients capable of out-of-band public key authentication.
You can find detailed specifications on Peerio's GitHub.