Cargo Features

[dependencies]
snow = { version = "0.10.0-alpha.1", default-features = false, features = ["default-resolver", "default-resolver-crypto", "nightly", "ring-resolver", "ring-accelerated", "libsodium-resolver", "libsodium-accelerated", "vector-tests", "hfs", "risky-raw-split", "pqclean_kyber1024", "xchachapoly", "std", "use-curve25519", "use-chacha20poly1305", "use-xchacha20poly1305", "use-blake2", "use-sha2", "use-aes-gcm", "use-pqcrypto-kyber1024", "use-p256"] }

This is slightly mumbo-jumboey, but in short:
Features with a -resolver suffix simply enables the existence of a specific resolver,
and -accelerated suffix means that this resolver will be the default used by the Builder.

If default features are disabled and default-resolver is used, required crypto primitives must be enabled individually.

default = default-resolver, default-resolver-crypto, std

These default features are set whenever snow is added without default-features = false somewhere in the dependency tree.

default-resolver default libsodium-accelerated? ring-accelerated? use-aes-gcm? use-blake2? use-chacha20poly1305? use-curve25519? use-p256? use-pqcrypto-kyber1024? use-sha2? use-xchacha20poly1305?
default-resolver-crypto default = use-aes-gcm, use-blake2, use-chacha20poly1305, use-curve25519, use-sha2
nightly

Enables simd_opt of blake2 and nightly of subtle

subtle:

DEPRECATED: As of 2.4.1, this feature does nothing.

ring-resolver ring-accelerated? = ring, std
ring-accelerated = default-resolver, ring-resolver, std
libsodium-resolver libsodium-accelerated? = byteorder, sodiumoxide, std
libsodium-accelerated = default-resolver, libsodium-resolver, std
vector-tests
hfs use-pqcrypto-kyber1024?

Affects constants::MAXKEMPUBLEN, constants::MAXKEMCTLEN, constants::MAXKEMSSLEN, params::KemChoice, params::NoiseParams.kem, resolvers::CryptoResolver.resolve_kem, types::Kem

risky-raw-split
pqclean_kyber1024 = use-pqcrypto-kyber1024

Backwards-compatibility aliases

xchachapoly = use-xchacha20poly1305
std default libsodium-accelerated? libsodium-resolver? ring-accelerated? ring-resolver?

Enable std features on dependencies if possible.

Enables std of blake2, byteorder, and rand_core ^0.6

rand_core:

TODO: Waiting on https://github.com/RustCrypto/traits/issues/1642

and std of ring, sha2, and subtle

ring:

ring crypto provider

use-curve25519 default-resolver-crypto = curve25519-dalek, default-resolver

Crypto primitives for default-resolver.

use-chacha20poly1305 default-resolver-crypto = chacha20poly1305, default-resolver
use-xchacha20poly1305 xchachapoly? = chacha20poly1305, default-resolver
use-blake2 default-resolver-crypto = blake2, default-resolver
use-sha2 default-resolver-crypto = default-resolver, sha2
use-aes-gcm default-resolver-crypto = aes-gcm, default-resolver
use-pqcrypto-kyber1024 pqclean_kyber1024? = default-resolver, hfs, pqcrypto-kyber, pqcrypto-traits
use-p256 = default-resolver, p256

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

aes-gcm use-aes-gcm?

Enables aes-gcm

default crypto provider

chacha20poly1305 use-chacha20poly1305? use-xchacha20poly1305?
blake2 nightly? std use-blake2?
sha2 std use-sha2?
curve25519-dalek use-curve25519?
p256 use-p256?

Affects constants::MAXDHLEN

pqcrypto-kyber use-pqcrypto-kyber1024?
pqcrypto-traits use-pqcrypto-kyber1024?
ring ring-resolver? std
sodiumoxide libsodium-resolver?

Enables sodiumoxide

libsodium crypto provider

byteorder libsodium-resolver? std