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
somewhere in the dependency tree.default-features = false - 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