[package] name = "picky" version = "7.0.0-rc.9" authors = [ "Benoît CORTIER ", "Jonathan Trepanier ", "François Dubois ", "Richard Markiewicz ", "Ionut Mihalcea ", "Kim Altintop ", "Alexandr Yusuk ", "Flavio Castelli ", "Xynnn_ ", ] description = "Portable X.509, PKI, JOSE and HTTP signature implementation." keywords = ["x509", "jwt", "signature", "jose", "pki"] edition = "2021" rust-version = "1.65" license = "MIT OR Apache-2.0" repository = "https://github.com/Devolutions/picky-rs" include = ["src/**/*", "README.md", "CHANGELOG.md", "LICENSE-*"] [dependencies] picky-asn1 = { version = "0.9", path = "../picky-asn1", features = ["zeroize"] } picky-asn1-der = { version = "0.5", path = "../picky-asn1-der" } picky-asn1-x509 = { version = "0.13", path = "../picky-asn1-x509", features = ["legacy", "zeroize"] } serde = { version = "1", features = ["derive"] } base64 = "0.22" thiserror = "1" byteorder = { version = "1.5", optional = true } chrono = { version = "0.4", default-features = false, features = ["clock"], optional = true } time = { version = "0.3", optional = true } serde_json = { version = "1", optional = true } hex = "0.4" http = { version = "1.1", optional = true } cab = { version = "0.6", optional = true } lexical-sort = { version = "0.3", optional = true } zeroize = "1.8" # FIXME: either use ureq, or even better: do not require this kind of dependency at all to let user decide which lib to use. # (currently users should *really* not forget to use `spawn_blocking` when calling associated functions from async context) reqwest = { version = "0.12", default-features = false, features = ["blocking"], optional = true } # /!\ ===== cryptography dependencies ===== /!\ # These should be updated as soon as possible. # /!\ ===================================== /!\ rand = "0.8" rand_core = "0.6" num-bigint-dig = "0.8" ed25519-dalek = { version = "2", features = ["hazmat", "rand_core"] } x25519-dalek = { version = "2", features = ["static_secrets"] } p256 = { version = "0.13", features = ["ecdh"] } p384 = { version = "0.13", features = ["ecdh"] } p521 = { version = "0.13", features = ["ecdh"] } rsa = { version = "0.9", features = ["std"] } digest = "0.10" md5 = { package = "md-5", version = "0.10", features = ["oid"] } sha1 = { version = "0.10", features = ["oid"] } sha2 = { version = "0.10", features = ["oid"] } sha3 = { version = "0.10", features = ["oid"] } aes-gcm = { version = "0.10", optional = true } aes = { version = "0.8", optional = true } aes-kw = { version = "0.2", optional = true, features = ["std"] } argon2 = { version = "0.5", optional = true } ctr = { version = "0.9", optional = true } cbc = { version = "0.1", optional = true, features = ["alloc"] } bcrypt-pbkdf = { version = "0.10", optional = true } des = { version = "0.8", optional = true } rc2 = { version = "0.8", optional = true } pbkdf2 = { version = "0.12", optional = true } hmac = { version = "0.12", optional = true } [dev-dependencies] pretty_assertions = "1.4" cfg-if = "1.0" ring = "0.17" rstest = "0.21" expect-test = "1" tempfile = "3.10" rand_chacha = "0.3" [features] default = ["x509", "jose", "http_signature", "http_trait_impl", "pkcs12"] # main features x509 = [] jose = ["dep:serde_json", "dep:aes-gcm", "dep:cbc", "dep:aes-kw"] http_signature = [] pkcs12 = ["picky-asn1-x509/pkcs12", "dep:des", "dep:rc2", "dep:cbc", "dep:pbkdf2", "dep:hmac", "dep:aes", "x509"] # secondary features pkcs7 = ["x509", "picky-asn1-x509/pkcs7"] http_timestamp = ["dep:reqwest"] ctl = ["picky-asn1-x509/ctl", "pkcs7", "chrono_conversion"] ctl_http_fetch = ["dep:reqwest", "dep:cab", "ctl"] wincert = ["x509", "dep:byteorder"] ssh = ["dep:byteorder", "dep:aes", "dep:ctr", "dep:cbc", "dep:bcrypt-pbkdf", "dep:lexical-sort"] http_trait_impl = ["dep:http"] chrono_conversion = ["dep:chrono", "picky-asn1/chrono_conversion"] time_conversion = ["dep:time", "picky-asn1/time_conversion"] putty = ["dep:argon2", "dep:hmac", "ssh"] [package.metadata.docs.rs] # Enable all features when building documentation for docs.rs all-features = true