[package] name = "tor-netdoc" version = "0.25.0" authors = ["The Tor Project, Inc.", "Nick Mathewson "] edition = "2021" rust-version = "1.77" license = "MIT OR Apache-2.0" homepage = "https://gitlab.torproject.org/tpo/core/arti/-/wikis/home" description = "Network document formats used with the Tor protocols." keywords = ["tor", "arti"] categories = ["parser-implementations"] repository = "https://gitlab.torproject.org/tpo/core/arti.git/" [features] default = [] full = [ "hs-client", "hs-service", "routerdesc", "ns_consensus", "tor-basic-utils/full", "tor-bytes/full", "tor-cert/full", "tor-checkable/full", "tor-error/full", "tor-hscrypto?/full", "tor-linkspec?/full", "tor-llcrypto/full", "tor-protover/full", "tor-units?/full", "tor-cell/full", ] experimental = [ "build_docs", "experimental-api", "hs-dir", "hs-pow-full", "hsdesc-inner-docs", "dangerous-expose-struct-fields", ] # Enable code to build the objects that represent different network documents. build_docs = ["rand", "__is_experimental"] # Enable the "router descriptor" document type, which is needed by relays and # bridge clients. routerdesc = [] # Expose interfaces useful for testing testing = ["hex-literal", "hsdesc-inner-docs", "visibility"] # Enable the "ns consensus" document type, which some relays cache and serve. ns_consensus = [] # Client-side, directory-side, and service-side support for onion services. # Experimental: not covered by semver guarantees. # TODO hs: mark these as part of "full" once they are done and stable. hs-dir = ["hs-common", "__is_experimental"] hs-client = ["hs-common"] hs-service = ["hs-common", "tor-cert/encode"] hs-common = ["rand", "tor-hscrypto", "tor-linkspec", "tor-units"] # Testing only : expose code to parse inner layers of onion service descriptors. hsdesc-inner-docs = ["visibility", "__is_experimental"] # TODO maybe fold this feature into `testing` # Onion service proof of work schemes hs-pow-full = ["tor-hscrypto/hs-pow-full", "__is_experimental"] # Enable experimental APIs that are not yet officially supported. # # These APIs are not covered by semantic versioning. Using this # feature voids your "semver warrantee". experimental-api = ["testing", "__is_experimental"] # Expose various struct fields as "pub", for testing. # # This feature is *super* dangerous for stability and correctness. If you use it # for anything besides testing, you are probably putting your users in danger. # # The struct fields exposed by this feature are not covered by semantic version. # In fact, using this feature will give you the opposite of a "semver # guarantee": you should be mildly surprised when your code _doesn't_ break from # version to version. dangerous-expose-struct-fields = ["visible", "visibility", "__is_experimental"] __is_experimental = [] [dependencies] amplify = { version = "4", default-features = false, features = ["derive"] } base64ct = { version = "1.5.1", features = ["alloc"] } bitflags = "2" cipher = { version = "0.4.1", features = ["zeroize"] } derive_builder = { version = "0.11.2", package = "derive_builder_fork_arti" } derive_more = { version = "1.0.0", features = ["full"] } digest = "0.10.0" educe = "0.4.6" hex = "0.4" hex-literal = { version = "0.4", optional = true } humantime = "2" itertools = "0.13.0" once_cell = "1" phf = { version = "0.11.1", features = ["macros"] } rand = { version = "0.8", optional = true } serde = "1.0.103" serde_with = "3.0.0" signature = "2" smallvec = "1.10" subtle = "2" thiserror = "2" time = { version = "0.3", features = ["std", "parsing", "macros", "formatting"] } tinystr = "0.8.0" tor-basic-utils = { path = "../tor-basic-utils", version = "0.25.0" } tor-bytes = { path = "../tor-bytes", version = "0.25.0" } tor-cell = { path = "../tor-cell", version = "0.25.0" } tor-cert = { path = "../tor-cert", version = "0.25.0" } tor-checkable = { path = "../tor-checkable", version = "0.25.0" } tor-error = { path = "../tor-error", version = "0.25.0" } tor-hscrypto = { path = "../tor-hscrypto", version = "0.25.0", optional = true } tor-linkspec = { path = "../tor-linkspec", version = "0.25.0", optional = true } tor-llcrypto = { path = "../tor-llcrypto", version = "0.25.0" } tor-protover = { path = "../tor-protover", version = "0.25.0" } tor-units = { version = "0.25.0", path = "../tor-units", optional = true } visibility = { version = "0.1.0", optional = true } visible = { version = "0.0.1", optional = true } void = "1" weak-table = "0.3.0" zeroize = "1" [dev-dependencies] anyhow = "1.0.23" hex-literal = "0.4" itertools = "0.13.0" serde_json = "1.0.50" tor-basic-utils = { version = "0.25.0", path = "../tor-basic-utils" } [package.metadata.docs.rs] all-features = true