sequoia-sq/Cargo.toml
Neal H. Walfield 3b45a6bb63
Release 0.40.0.
* Changes in 0.40.0
** New functionality
   - New subcommand `sq download`, which downloads a file and a
     signature file, and then authenticates the file.
** Notable changes
   - `sq toolbox keyring merge` now supports merging bare revocation
     certificates.
   - `sq verify` now deletes the output file on failure.
   - `sq decrypt` now deletes the output file on failure.
   - Add a global option, `--policy-as-of`, that selects the
     cryptographic policy as of the specified time.
   - `sq key subkey export` takes an additional argument, `--cert`,
     which is required.  The specified keys must be attached to that
     certificate.  This ensures that if a key is attached to multiple
     certificates, the correct certificate is exported.
   - Add a new argument, `--cli-version`, which requests a particular
     semver-compatible version of the CLI.  This enables breaking
     changes to the CLI in the future.
   - The `help` subcommand has been removed everywhere except at the
     top-level (`--help` still works).
   - If designated signers are specified for `sq verify`, `sq
     decrypt`, and `sq download`, they are now the only certificates
     that are considered when verifying signatures.  If no signers are
     specified, the certificate store is consulted.
   - The argument `sq cert lint --list-keys` has been removed.
   - `sq key list` now has a DWIM search parameter.
   - The flag `sq sign --detached` is now called `sq sign
     --signature-file`.
   - The flag `sq sign --clearsign` is now called `sq sign
     --cleartext`.
   - Both `sq sign` and `sq verify` now require an explicit mode,
     one of `--signature-file`, `--message`, or `--cleartext`.
   - The flag `sq --no-cert-store` has been replaced with `sq
     --cert-store=none`.
   - The flag `sq --no-key-store` has been replaced with `sq
     --key-store=none`.
   - Similarly, `sq --home=none` disables all state, unless explicitly
     re-enabled using `--cert-store` or `--key-store`.
   - `sq pki link add`, `sq pki link authorize`, `sq pki vouch
     certify`, and `sq pki vouch authorize` have a `--userid-or-add`
     flag.  Replace it with an `--userid-or-add` argument, and an
     `--email-or-add` argument.
   - The `--email` and `--email-or-add` arguments to `sq pki link add`,
     etc. cannot be used to designate a self-signed user ID, if
     multiple self-signed user IDs include the specified email
     address.  Previously, the arguments would designate all
     self-signed user IDs with the specified email address.
   - The new argument `sq sign --mode` can be used to create text
     signatures in addition to binary signatures.
   - The argument `sq network wkd publish --create` has been split
     into two arguments, `--create` and `--method`, avoiding an
     ambiguity when parsing the arguments.
   - `sq key userid revoke` no longer accepts the `--userid-or-add` flag
     to indicate that a user ID specified using `--userid`, an email
     specified using `--email`, or a name specified using `--name`
     should be used even if there is no corresponding self-signed user
     ID.  This functionality is replaced by the `--userid-or-add`,
     `--email-or-add` and `--name-or-add` arguments.
   - `sq pki path` previously interpreted the last positional argument
     as the user ID to authenticate.  Make it a named argument
     instead, `--userid`.
   - Add `sq pki path --email` and `sq pki path --name` as additional
     ways to specify the user ID to authenticate.
   - The argument `sq encrypt --set-metadata-time` has been removed.
   - The argument `sq encrypt --set-metadata-filename` now takes a
     string that specifies the file name to be set.
   - `sq pki authenticate`'s positional argument for specifying the
     certificate to authenticate must now be specified using a named
     argument, `--cert`.
   - `sq pki identify`'s positional argument for specifying the
     certificate to identify must now be specified using a named
     argument, `--cert`.
   - Drop `sq cert list --email`'s flag, and replace it with the
     `--userid` and `--email` positional arguments, which match on
     user IDs.
   - Drop `sq pki authenticate --email`'s flag, and replace it with
     the `--userid` and `--email` positional arguments, which match on
     user IDs.
   - Drop `sq pki lookup --email`'s flag, and replace it with the
     `--userid` and `--email` positional arguments, which match on
     user IDs.
   - `sq toolbox keyring` is now just `sq keyring`.
   - `sq toolbox packet` is now just `sq packet`.
   - `sq toolbox armor` is now `sq packet armor`.
   - `sq toolbox dearmor` is now `sq packet dearmor`.
   - `sq key userid revoke`, `sq pki link add`, `sq pki link
     authorize`, `sq pki vouch certify`, and `sq pki vouch authorize`
     now check that user IDs that are not self-signed are in canonical
     form.  Add a flag, `--allow-non-canonical-userids`, to disable
     this check.
   - `sq key approvals update` now requires an action, like
     `--add-authenticated`.
   - `sq key approvals --add-authenticated` is now a simple flag, and
     we always require full authentication.
   - `sq toolbox strip-userid` has been removed.
   - All cert designators now use the `--cert-` prefix, e.g.  `sq key
     export --email` has been changed to `sq key export --cert-email`
     for consistency reasons, and to free `--name`, `--email`, and
     `--userid` for user ID designators.
   - The `--binary` argument has been removed from all commands but
     those that emit signed and or encrypted messages.
   - The command `sq toolbox extract-cert` has been removed in favor
     of `sq key delete` and `sq key subkey delete`.
   - The command `sq packet split` now writes to stdout by default.
   - The argument `sq packets split --prefix` is now called
     `--output-prefix`.
   - `sq pki vouch certify` is now called `sq pki vouch add`.
   - We now certify newly generated keys with a per-host shadow CA.
   - The argument `sq encrypt --signature-notation` has been added.
   - All arguments to add signature notations have been renamed from
     `--notation` to `--signature-notation`.
   - When generating keys, either `--own-key` or `--shared-key` has to
     be given.  The former marks the key's user IDs as authenticated
     and makes it a trusted introducer.  The latter marks the key's
     user IDs as authenticated, and marks the key as a group key.
   - The argument `sq cert lint --export-secret-keys` has been
     removed: if a secret key is provided as file input, it will be
     emitted.
   - The argument `sq key subkey export --cert-file` has been removed.
   - `sq` now reads a configuration file that can be used to tweak a
     number of defaults, like the cipher suite to generate new keys,
     the set of key servers to query, and the cryptographic policy.
   - The command `sq keyring filter` is now considered experimental
     and may change in the future.  To acknowledge this, it has to be
     invoked with the `--experimental` flag.
2024-11-28 06:45:13 +01:00

178 lines
5.1 KiB
TOML

[package]
name = "sequoia-sq"
description = "Command-line frontends for Sequoia"
version = "0.40.0"
authors = [
"Azul <azul@sequoia-pgp.org>",
"Heiko Schaefer <heiko@schaefer.name>",
"Igor Matuszewski <igor@sequoia-pgp.org>",
"Justus Winter <justus@sequoia-pgp.org>",
"Kai Michaelis <kai@sequoia-pgp.org>",
"Lars Wirzenius <liw@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-sq"
homepage = "https://sequoia-pgp.org/"
repository = "https://gitlab.com/sequoia-pgp/sequoia-sq"
readme = "README.md"
keywords = ["cryptography", "openpgp", "pgp", "encryption", "signing"]
categories = ["cryptography", "authentication", "command-line-utilities"]
license = "LGPL-2.0-or-later"
edition = "2021"
rust-version = "1.79"
[badges]
gitlab = { repository = "sequoia-pgp/sequoia-sq" }
maintenance = { status = "actively-developed" }
[dependencies]
aho-corasick = "1"
buffered-reader = { version = "1.3.1", default-features = false, features = ["compression"] }
dirs = "5"
fs_extra = "1"
sequoia-directories = "0.1"
sequoia-openpgp = { version = "1.18", default-features = false, features = ["compression"] }
sequoia-autocrypt = { version = "0.25", default-features = false }
sequoia-net = { version = "0.28", default-features = false }
sequoia-policy-config = ">= 0.7, <0.8"
anyhow = "1.0.18"
chrono = "0.4.10"
clap = { version = "4", features = ["derive", "env", "string", "wrap_help"] }
futures-util = "0.3"
gethostname = { version = ">=0.4, <0.6" }
humantime = "2"
indicatif = "0.17"
once_cell = "1.17"
reqwest = { version = ">=0.11.27, <0.13", features = ["hickory-dns", "stream"] }
sequoia-cert-store = "0.6.0"
sequoia-keystore = { version = ">=0.5, <0.7" }
sequoia-wot = { version = "0.13.2", default-features = false }
tempfile = "3.1"
thiserror = { version = ">=1, <3" }
tokio = { version = "1.13.1" }
toml_edit = { version = "0.22", default-features = false, features = ["display", "parse"] }
regex = "1"
rpassword = "7.0"
serde = { version = "1.0.137", features = ["derive"] }
terminal_size = ">=0.2.6, <0.5"
termcolor = "1.2.0"
textwrap = { version = ">=0.15, <0.17", default-features = false, features = ["smawk", "unicode-width"] }
typenum = "1"
# This is for subplot only. If you don't enable the subplot feature,
# feel free to patch it out.
subplotlib = { version = "0.11", optional = true }
culpa = { version = "1", optional = true }
[build-dependencies]
anyhow = "1.0.18"
buffered-reader = { version = "1.0.0", default-features = false, features = ["compression"] }
clap = { version = "4", features = ["derive", "env", "string", "wrap_help"] }
clap_complete = "4"
chrono = "0.4.38"
dirs = "5"
roff = "0.2.1"
serde = { version = "1.0.137", features = ["derive"] }
sequoia-directories = "0.1"
sequoia-openpgp = { version = "1.21.1", default-features = false }
sequoia-net = { version = "0.28", default-features = false }
textwrap = ">=0.15, <0.17"
typenum = "1"
cfg-if = "1"
terminal_size = ">=0.2.6, <0.5"
# This is for subplot only. If you don't enable the subplot feature,
# feel free to patch it out.
subplot-build = { version = "0.11", optional = true }
[dev-dependencies]
assert_cmd = "2"
predicates = ">=2, <4"
regex = "1"
libc = "0.2"
[[bin]]
name = "sq"
path = "src/main.rs"
bench = false
[[test]]
name = "sq-subplot"
path = "tests/sq-subplot.rs"
required-features = ["subplot"]
[features]
default = [
"crypto-nettle",
]
crypto-nettle = ["sequoia-openpgp/crypto-nettle"]
crypto-openssl = ["sequoia-openpgp/crypto-openssl"]
crypto-botan = ["sequoia-openpgp/crypto-botan"]
crypto-botan2 = ["sequoia-openpgp/crypto-botan2"]
crypto-cng = ["sequoia-openpgp/crypto-cng"]
crypto-rust = ["sequoia-openpgp/crypto-rust"]
subplot = ["culpa", "subplot-build", "subplotlib"]
[profile.release]
debug = true
# The Rust Crypto crates are *very* slow when compiled without any
# optimizations. Turn on some optimizations.
[profile.dev.package.aes]
opt-level = 2
[profile.dev.package.aes-gcm]
opt-level = 2
[profile.dev.package.block-padding]
opt-level = 2
[profile.dev.package.blowfish]
opt-level = 2
[profile.dev.package.camellia]
opt-level = 2
[profile.dev.package.cast5]
opt-level = 2
[profile.dev.package.cipher]
opt-level = 2
[profile.dev.package.cfb-mode]
opt-level = 2
[profile.dev.package.des]
opt-level = 2
[profile.dev.package.digest]
opt-level = 2
[profile.dev.package.dsa]
opt-level = 2
[profile.dev.package.eax]
opt-level = 2
[profile.dev.package.ecb]
opt-level = 2
[profile.dev.package.ecdsa]
opt-level = 2
[profile.dev.package.ed25519]
opt-level = 2
[profile.dev.package.ed25519-dalek]
opt-level = 2
[profile.dev.package.idea]
opt-level = 2
[profile.dev.package.md-5]
opt-level = 2
[profile.dev.package.num-bigint-dig]
opt-level = 2
[profile.dev.package.p256]
opt-level = 2
[profile.dev.package.p384]
opt-level = 2
[profile.dev.package.p521]
opt-level = 2
[profile.dev.package.ripemd]
opt-level = 2
[profile.dev.package.rsa]
opt-level = 2
[profile.dev.package.sha2]
opt-level = 2
[profile.dev.package.twofish]
opt-level = 2
[profile.dev.package.x25519-dalek]
opt-level = 2