summaryrefslogtreecommitdiffstats
path: root/openpgp/Cargo.toml
blob: 39b56b3d89d590b2143dd03b58eec07d2717d1bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
[package]
name = "sequoia-openpgp"
description = "OpenPGP data types and associated machinery"
version = "1.14.0"
authors = [
    "Igor Matuszewski <igor@sequoia-pgp.org>",
    "Justus Winter <justus@sequoia-pgp.org>",
    "Kai Michaelis <kai@sequoia-pgp.org>",
    "Neal H. Walfield <neal@sequoia-pgp.org>",
    "Nora Widdecke <nora@sequoia-pgp.org>",
    "Wiktor Kwapisiewicz <wiktor@sequoia-pgp.org>",
]
build = "build.rs"
documentation = "https://docs.rs/sequoia-openpgp"
autobenches = false
homepage = "https://sequoia-pgp.org/"
repository = "https://gitlab.com/sequoia-pgp/sequoia"
readme = "README.md"
keywords = ["cryptography", "openpgp", "pgp", "encryption", "signing"]
categories = ["cryptography", "authentication", "email"]
license = "LGPL-2.0-or-later"
edition = "2021"
rust-version = "1.60"

[badges]
gitlab = { repository = "sequoia-pgp/sequoia" }
maintenance = { status = "actively-developed" }

[dependencies]
anyhow = "1.0.18"
buffered-reader = { path = "../buffered-reader", version = "1.0.0", default-features = false }
base64 = ">=0.12, <0.20"
bzip2 = { version = "0.4", optional = true }
dyn-clone = "1"
flate2 = { version = "1.0.1", optional = true }
idna = ">=0.2, <0.4"
lalrpop-util = ">=0.17"
lazy_static = "1.4.0"
libc = "0.2.66"
memsec = { version = ">=0.5", default-features = false }
nettle = { version = "7.2.2", optional = true }
once_cell = "1"
regex = "1"
regex-syntax = "0.6"
sha1collisiondetection = { version = "0.2.3", default-features = false, features = ["std"] }
thiserror = "1.0.2"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
# At least 0.10.46 is needed due `no-cast` check:
# https://github.com/sfackler/rust-openssl/blob/master/openssl/CHANGELOG.md
openssl = { version = ">= 0.10.47", optional = true }
# We need to directly depend on the sys crate so that the metadata produced
# in its build script is passed to sequoia-openpgp's build script
# see: https://doc.rust-lang.org/cargo/reference/build-scripts.html#the-links-manifest-key
openssl-sys = { version = ">= 0.9.82", optional = true }
foreign-types-shared = { version = "0.1.1", optional = true }

# Botan.
botan = { version = "0.10", optional = true }

# RustCrypto crates.
aes = { version = "0.6.0", optional = true }
block-modes = { version = "0.7.0", optional = true }
block-padding = { version = "0.2.1", optional = true }
blowfish = { version = "0.7.0", optional = true }
cast5 = { version = "0.9.0", optional = true }
cipher = { version = "0.2.5", optional = true, features = ["std"] }
des = { version = "0.6.0", optional = true }
digest = { version = "0.9.0", optional = true }
eax = { version = "0.3.0", optional = true }
ecdsa = { version = "0.11", optional = true, features = ["hazmat", "arithmetic"] } # XXX
ed25519-dalek = { version = "1", default-features = false, features = ["rand", "u64_backend"], optional = true }
generic-array = { version = "0.14.4", optional = true }
idea = { version = "0.3.0", optional = true }
md-5 = { version = "0.9.1", optional = true }
num-bigint-dig = { version = "0.6", default-features = false, optional = true }
p256 = { version = "0.8", optional = true, features = ["ecdh", "ecdsa"] }
rand07 = { package = "rand", version = "0.7.3", optional = true }
rand_core = { version = "0.6", optional = true }
ripemd160 = { version = "0.9.1", optional = true }
rsa = { version = "0.3.0", optional = true }
sha-1 = { version = "0.9.2", optional = true }
sha2 = { version = "0.9.2", optional = true }
twofish = { version = "0.5.0", optional = true }
typenum = { version = "1.12.0", optional = true }
x25519-dalek = { version = "1.1.0", optional = true }

[target.'cfg(windows)'.dependencies]
win-crypto-ng = { version = "0.4", features = ["rand", "block-cipher"], optional = true }
winapi = { version = "0.3.8", default-features = false, features = ["bcrypt"], optional = true }

[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies]
chrono = { version = "0.4.10", default-features = false, features = ["std", "wasmbind"] }
getrandom = { version = "0.2", features = ["js"] }
rand07 = { package = "rand", version = "0.7", features = ["wasm-bindgen"] }

[build-dependencies]
lalrpop = { version = ">=0.17", default-features = false }

[dev-dependencies]
quickcheck = { version = "1", default-features = false }
rand = { version = "0.8" }
rpassword = "6.0"
criterion = { version = "0.3.4", features = ["html_reports"] }

[features]
default = ["compression", "crypto-nettle"]
# TODO(#333): Allow for/implement more backends
crypto-nettle = ["nettle"]
crypto-rust = [
    "aes", "block-modes", "block-padding", "blowfish", "cast5", "cipher", "des",
    "digest", "eax", "ed25519-dalek", "generic-array", "idea", "md-5", "num-bigint-dig", "rand07",
    "ripemd160", "rsa", "sha-1", "sha2", "twofish", "typenum", "x25519-dalek", "p256",
    "rand_core", "rand_core/getrandom", "ecdsa"
]
crypto-cng = ["eax", "winapi", "win-crypto-ng", "ed25519-dalek", "num-bigint-dig"]
crypto-openssl = ["openssl", "openssl-sys", "foreign-types-shared"]
crypto-botan = ["botan"]
__implicit-crypto-backend-for-tests = []

# Experimental and variable-time cryptographic backends opt-ins
allow-experimental-crypto = []
allow-variable-time-crypto = []

# The compression algorithms.
compression = ["compression-deflate", "compression-bzip2"]
compression-deflate = ["flate2", "buffered-reader/compression-deflate"]
compression-bzip2 = ["bzip2", "buffered-reader/compression-bzip2"]

[lib]
bench = false

[[example]]
name = "pad"
required-features