[package] name = "vsmtp-rsasl" version = "1.4.2" authors = [ "Nadja Reitzenstein ", "Mathieu LALA ", ] edition = "2021" rust-version = "1.56.0" description = """See https://crates.io/crates/rsasl""" documentation = "https://docs.rs/rsasl" readme = "README.md" homepage = "https://github.com/dequbed/rsasl" repository = "https://github.com/dequbed/rsasl" license = "Apache-2.0 OR MIT" keywords = ["sasl", "authentication", "sso", "framework", "middleware"] categories = ["authentication", "api-bindings", "network-programming"] # Manually list files to include; out-of-tree integration tests and testing binaries that arent useful when # rsasl is only used as a dependency. include = [ "Cargo.toml", "/src/", "README.md", "CHANGELOG.md", "LICENSE.MIT", "LICENSE.APACHE-2.0", "/docs/", "/tests/", "/examples/", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [badges] maintenance = { status = "deprecated" } [features] default = [ "config_builder", "registry_static", "scram-sha-1", "scram-sha-2", "anonymous", "external", "xoauth2", "plain", "login", ] #! ## Compile-time mechanism selection ## Enable `SCRAM-SHA-1` and `SCRAM-SHA-1-PLUS` scram-sha-1 = [ "std", "saslprep", "hmac", "digest", "sha-1", "base64", "rand", "pbkdf2", ] ## Enable `SCRAM-*` and `SCRAM-*-PLUS` mechanisms using `SHA-2`, i.e. `SHA-256` and `SHA-512` scram-sha-2 = [ "std", "saslprep", "hmac", "digest", "sha2", "base64", "rand", "pbkdf2", ] ## Enable `ANONYMOUS` anonymous = ["std"] ## Enable `EXTERNAL` external = ["std"] ## Enable `PLAIN` plain = ["std", "saslprep"] ## Enable `LOGIN` login = ["std"] ## Enable `XOAUTH2` xoauth2 = ["std"] #! ## Provider flags #! These flags are relevant for crates that want to use rsasl as authentication provider, i.e. crates implementing #! network protocols ## Enable provider mode ## ## This feature enables all the required code for providers, e.g. code surrounding `Session` provider = ["std"] ## Enable transparent Base64 wrapping for provider mode ## ## This enables the `step64` method to wrap a call to `step` in base64-encoding. Adds a dependency on the `base64` crate provider_base64 = ["std", "provider", "base64"] #! ## Supplier flags #! These flags are relevant for crates that want to use rsasl as supplier, i.e. applications and libraries making use #! of protocol implementations with rsasl support ## Enable the ConfigBuilder config_builder = ["std"] ## Enables the static registry using `linkme` registry_static = ["std", "linkme"] #! ## Misc flags #! Other miscellanious flags ## Enable utilities for testing authentication and SASL handling testutils = ["std", "config_builder"] ## Enable adding custom mechanisms. ## ## **NOTE: This flag indicates an opt-out of SemVer stability guarantees** ## The code for adding mechanism from other crates has not stabilized yet and is subject to *breaking* changes even in ## a minor release. unstable_custom_mechanism = ["std"] ## Enable use of libstd ## If this flag is not set, rsasl is marked ![no_std]. However, currently this flag will *always* be enabled as core ## parts of rsasl depend on the stdlib. std = [] # Dependency flag, shouldn't be set explicitly saslprep = ["std", "stringprep"] [dependencies] thiserror = "1.0" base64 = { version = "0.13", optional = true } rand = { version = "0.8", optional = true } hmac = { version = "0.12", optional = true, features = ["reset"] } digest = { version = "0.10", optional = true } sha-1 = { version = "0.10", optional = true } sha2 = { version = "0.10", optional = true } pbkdf2 = { version = "0.10", optional = true, default_features = false } stringprep = { version = "0.1", optional = true } linkme = { version = "0.2", optional = true } [dev-dependencies] static_assertions = "1.1.0" [[example]] name = "client_simple" required-features = ["provider", "plain"] [[example]] name = "server_plain" required-features = ["provider", "plain"] [[example]] name = "server_scram" required-features = ["provider", "plain", "scram-sha-2"] [[example]] name = "mechanism_selection" required-features = ["provider", "login", "plain", "scram-sha-1", "scram-sha-2"] [[test]] name = "plain" required-features = ["provider_base64", "plain"] [[test]] name = "scram" required-features = ["provider_base64", "plain"] [workspace] members = ["bin/interop-client", "bin/interop-server"]