1004 B

Tested and provably thread safe.

  • Sodium::CryptoBox::*
  • Sodium::Cipher::Aead::XChaCha20Poly1305Ietf
  • Sodium::SecretBox
  • Sodium::Sign::*


  • Only uses stack allocation. Keys are stored in readonly memory.

Thread safe when hashing, deriving or creating keys after setting parameters.

  • Sodium::Password::Hash
  • Sodium::Password::Key
  • Sodium::Password::Key::Create


  • Don't change parameters between threads without a Mutex.

Keeps state.

  • Sodium::Cipher::Chalsa subclasses.
  • Sodium::Cipher::SecretStream
  • Sodium::Digest::Blake2b
  • Sodium::Kdf
  • Sodium::SecureBuffer (Half thread safe. Thread safety is documented with each method)


  • Use one instance per thread or wrap in a Mutex.

Not thread safe.

  • Sodium::Nonce


  • Use Nonce.random with multiple threads or let the API provide the nonce's for you.
  • #increment isn't safe, not even when wrapped in a mutex unless you also wrap #encrypt/#decrypt within the same #synchronize call.