diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2018-11-26 17:24:47 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2018-11-26 19:50:41 +0100 |
commit | 02e61f0758e93b44a054a01b4137ea25ff7dd5ec (patch) | |
tree | b1ef6b097e5fc93faf20433219565bbabfa04fb5 | |
parent | 557aca35bad457622642308c1d780757b174bf50 (diff) |
sqv: Move sqv into a new crate.
- This allows us to use sequoia-openpgp without compression support
reducing binary size and trusted computing base.
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | sqv/Cargo.toml | 36 | ||||
-rw-r--r-- | sqv/Makefile | 29 | ||||
-rw-r--r-- | sqv/README.md | 8 | ||||
-rw-r--r-- | sqv/build.rs | 20 | ||||
-rw-r--r-- | sqv/make-usage.sh | 53 | ||||
-rw-r--r-- | sqv/src/sqv-usage.rs (renamed from tool/src/sqv-usage.rs) | 0 | ||||
-rw-r--r-- | sqv/src/sqv.rs (renamed from tool/src/sqv.rs) | 0 | ||||
-rw-r--r-- | sqv/src/sqv_cli.rs (renamed from tool/src/sqv_cli.rs) | 0 | ||||
-rw-r--r-- | sqv/tests/bad-subkey.rs (renamed from tool/tests/bad-subkey.rs) | 0 | ||||
-rw-r--r-- | sqv/tests/data/bad-subkey-keyring.pgp (renamed from tool/tests/data/bad-subkey-keyring.pgp) | bin | 18064 -> 18064 bytes | |||
-rw-r--r-- | sqv/tests/data/bad-subkey-keyring.txt (renamed from tool/tests/data/bad-subkey-keyring.txt) | 0 | ||||
-rw-r--r-- | sqv/tests/data/bad-subkey.txt (renamed from tool/tests/data/bad-subkey.txt) | 0 | ||||
-rw-r--r-- | sqv/tests/data/bad-subkey.txt.sig (renamed from tool/tests/data/bad-subkey.txt.sig) | bin | 310 -> 310 bytes | |||
-rw-r--r-- | sqv/tests/duplicate-signatures.rs (renamed from tool/tests/sqv-duplicate-signatures.rs) | 0 | ||||
-rw-r--r-- | sqv/tests/multiple-signatures.rs (renamed from tool/tests/sqv-multiple-signatures.rs) | 0 | ||||
-rw-r--r-- | sqv/tests/not-before-after.rs (renamed from tool/tests/not-before-after.rs) | 0 | ||||
-rw-r--r-- | tool/Cargo.toml | 4 | ||||
-rw-r--r-- | tool/Makefile | 8 | ||||
-rw-r--r-- | tool/build.rs | 6 |
21 files changed, 152 insertions, 16 deletions
@@ -29,6 +29,7 @@ sequoia-ffi = { path = "ffi", version = "0.1.0" } sequoia-net = { path = "net", version = "0.1.0" } sequoia-store = { path = "store", version = "0.1.0" } sequoia-tool = { path = "tool", version = "0.1.0" } +sequoia-sqv = { path = "sqv", version = "0.1.0" } [lib] name = "sequoia" @@ -86,8 +86,9 @@ install: build-release $(CARGO_TARGET_DIR)/release/sequoia-public-key-store $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin $(INSTALL) -t $(DESTDIR)$(PREFIX)/bin \ - $(CARGO_TARGET_DIR)/release/sq $(CARGO_TARGET_DIR)/release/sqv + $(CARGO_TARGET_DIR)/release/sq $(MAKE) -Cffi install + $(MAKE) -Csqv install # Infrastructure for creating source distributions. .PHONY: dist diff --git a/sqv/Cargo.toml b/sqv/Cargo.toml new file mode 100644 index 00000000..f9edb942 --- /dev/null +++ b/sqv/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "sequoia-sqv" +description = "A simple signature verification program" +version = "0.1.0" +authors = [ + "Justus Winter <justus@sequoia-pgp.org>", + "Kai Michaelis <kai@sequoia-pgp.org>", + "Neal H. Walfield <neal@sequoia-pgp.org>", +] +documentation = "https://docs.sequoia-pgp.org/sqv" +homepage = "https://sequoia-pgp.org/" +repository = "https://gitlab.com/sequoia-pgp/sequoia" +readme = "README.md" +keywords = ["cryptography", "openpgp", "pgp", "verification", "detached signatures"] +categories = ["cryptography", "command-line-utilities"] +license = "GPL-3.0" + +[badges] +gitlab = { repository = "https://gitlab.com/sequoia-pgp/sequoia" } +maintenance = { status = "actively-developed" } + +[dependencies] +sequoia-openpgp = { path = "../openpgp", version = "0.1", default-features = false } +clap = "2.32.0" +failure = "0.1.2" +time = "0.1.38" + +[build-dependencies] +clap = "2.27.1" + +[dev-dependencies] +assert_cli = "0.6" + +[[bin]] +name = "sqv" +path = "src/sqv-usage.rs" diff --git a/sqv/Makefile b/sqv/Makefile new file mode 100644 index 00000000..10df31b9 --- /dev/null +++ b/sqv/Makefile @@ -0,0 +1,29 @@ +# Configuration. +CARGO_TARGET_DIR ?= $(shell pwd)/../target +# We currently only support absolute paths. +CARGO_TARGET_DIR := $(abspath $(CARGO_TARGET_DIR)) +SQV ?= $(CARGO_TARGET_DIR)/debug/sqv + +# Tools. +CARGO ?= cargo +INSTALL ?= install + +all: src/sqv-usage.rs + +# Installation. +.PHONY: build-release +build-release: + CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \ + $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-sqv + +.PHONY: install +install: build-release + $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin + $(INSTALL) -t $(DESTDIR)$(PREFIX)/bin $(CARGO_TARGET_DIR)/release/sqv + +# Maintenance. +.PHONY: update-usage +update-usage: src/sqv-usage.rs + +src/sqv-usage.rs: make-usage.sh $(SQV) + sh make-usage.sh $(SQV) >$@ diff --git a/sqv/README.md b/sqv/README.md new file mode 100644 index 00000000..7cfb9c04 --- /dev/null +++ b/sqv/README.md @@ -0,0 +1,8 @@ +A simple signature verification program. + +`sqv` verifies detached OpenPGP signatures. It is a replacement for +`gpgv`. Unlike `gpgv`, it can take additional constraints on the +signature into account. + +See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872271 for +the motivation. diff --git a/sqv/build.rs b/sqv/build.rs new file mode 100644 index 00000000..290a1a6b --- /dev/null +++ b/sqv/build.rs @@ -0,0 +1,20 @@ +extern crate clap; + +use std::env; +use clap::Shell; + +mod sqv_cli { + include!("src/sqv_cli.rs"); +} + +fn main() { + let outdir = match env::var_os("OUT_DIR") { + None => return, + Some(outdir) => outdir, + }; + let mut sqv = sqv_cli::build(); + for shell in &[Shell::Bash, Shell::Fish, Shell::Zsh, Shell::PowerShell, + Shell::Elvish] { + sqv.gen_completions("sqv", *shell, &outdir); + } +} diff --git a/sqv/make-usage.sh b/sqv/make-usage.sh new file mode 100644 index 00000000..bec96386 --- /dev/null +++ b/sqv/make-usage.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +tool=$1 + +quote() { + sed 's@^@//! @' | sed 's/ $//' +} + +begin_code() { + printf '```text\n' +} + +end_code() { + printf '```\n' +} + +dump_help() { # subcommand, indention + if [ -z "$1" ] + then + printf "\n# Usage\n\n" + set "" "#" + else + printf "\n$2 Subcommand$1\n\n" + fi + + help="`$tool $1 --help`" + + begin_code + printf "$help\n" | tail -n +2 + end_code + + if echo $help | fgrep -q SUBCOMMANDS + then + printf "$help\n" | + sed -n '/^SUBCOMMANDS:/,$p' | + tail -n+2 | + while read subcommand desc + do + if [ "$subcommand" = help ]; then + continue + fi + + dump_help "$1 $subcommand" "#$2" + done + fi +} + +( + printf "A command-line frontend for Sequoia.\n" + dump_help +) | quote + +printf '\ninclude!("'"$(basename $tool)"'.rs");\n' diff --git a/tool/src/sqv-usage.rs b/sqv/src/sqv-usage.rs index d7e55716..d7e55716 100644 --- a/tool/src/sqv-usage.rs +++ b/sqv/src/sqv-usage.rs diff --git a/tool/src/sqv.rs b/sqv/src/sqv.rs index 567f6427..567f6427 100644 --- a/tool/src/sqv.rs +++ b/sqv/src/sqv.rs diff --git a/tool/src/sqv_cli.rs b/sqv/src/sqv_cli.rs index b06382ab..b06382ab 100644 --- a/tool/src/sqv_cli.rs +++ b/sqv/src/sqv_cli.rs diff --git a/tool/tests/bad-subkey.rs b/sqv/tests/bad-subkey.rs index 6a6b7fc7..6a6b7fc7 100644 --- a/tool/tests/bad-subkey.rs +++ b/sqv/tests/bad-subkey.rs diff --git a/tool/tests/data/bad-subkey-keyring.pgp b/sqv/tests/data/bad-subkey-keyring.pgp Binary files differindex 72acf4de..72acf4de 100644 --- a/tool/tests/data/bad-subkey-keyring.pgp +++ b/sqv/tests/data/bad-subkey-keyring.pgp diff --git a/tool/tests/data/bad-subkey-keyring.txt b/sqv/tests/data/bad-subkey-keyring.txt index d98d157b..d98d157b 100644 --- a/tool/tests/data/bad-subkey-keyring.txt +++ b/sqv/tests/data/bad-subkey-keyring.txt diff --git a/tool/tests/data/bad-subkey.txt b/sqv/tests/data/bad-subkey.txt index 257cc564..257cc564 100644 --- a/tool/tests/data/bad-subkey.txt +++ b/sqv/tests/data/bad-subkey.txt diff --git a/tool/tests/data/bad-subkey.txt.sig b/sqv/tests/data/bad-subkey.txt.sig Binary files differindex 65fc578c..65fc578c 100644 --- a/tool/tests/data/bad-subkey.txt.sig +++ b/sqv/tests/data/bad-subkey.txt.sig diff --git a/tool/tests/sqv-duplicate-signatures.rs b/sqv/tests/duplicate-signatures.rs index 691afb50..691afb50 100644 --- a/tool/tests/sqv-duplicate-signatures.rs +++ b/sqv/tests/duplicate-signatures.rs diff --git a/tool/tests/sqv-multiple-signatures.rs b/sqv/tests/multiple-signatures.rs index a2bff844..a2bff844 100644 --- a/tool/tests/sqv-multiple-signatures.rs +++ b/sqv/tests/multiple-signatures.rs diff --git a/tool/tests/not-before-after.rs b/sqv/tests/not-before-after.rs index 5be41bf0..5be41bf0 100644 --- a/tool/tests/not-before-after.rs +++ b/sqv/tests/not-before-after.rs diff --git a/tool/Cargo.toml b/tool/Cargo.toml index 04d53ffd..32b0239d 100644 --- a/tool/Cargo.toml +++ b/tool/Cargo.toml @@ -41,7 +41,3 @@ assert_cli = "0.6" [[bin]] name = "sq" path = "src/sq-usage.rs" - -[[bin]] -name = "sqv" -path = "src/sqv-usage.rs" diff --git a/tool/Makefile b/tool/Makefile index 53df7de5..0d90b3cd 100644 --- a/tool/Makefile +++ b/tool/Makefile @@ -3,14 +3,12 @@ CARGO_TARGET_DIR ?= $(shell pwd)/../target # We currently only support absolute paths. CARGO_TARGET_DIR := $(abspath $(CARGO_TARGET_DIR)) SQ ?= $(CARGO_TARGET_DIR)/debug/sq -SQV ?= $(CARGO_TARGET_DIR)/debug/sqv -all: src/sq-usage.rs src/sqv-usage.rs +all: src/sq-usage.rs +# Maintenance. .PHONY: update-usage -update-usage: src/sq-usage.rs src/sqv-usage.rs +update-usage: src/sq-usage.rs src/sq-usage.rs: make-usage.sh $(SQ) sh make-usage.sh $(SQ) >$@ -src/sqv-usage.rs: make-usage.sh $(SQV) - sh make-usage.sh $(SQV) >$@ diff --git a/tool/build.rs b/tool/build.rs index 2dc5371d..eb58c086 100644 --- a/tool/build.rs +++ b/tool/build.rs @@ -7,20 +7,14 @@ mod sq_cli { include!("src/sq_cli.rs"); } -mod sqv_cli { - include!("src/sqv_cli.rs"); -} - fn main() { let outdir = match env::var_os("OUT_DIR") { None => return, Some(outdir) => outdir, }; let mut sq = sq_cli::build(); - let mut sqv = sqv_cli::build(); for shell in &[Shell::Bash, Shell::Fish, Shell::Zsh, Shell::PowerShell, Shell::Elvish] { sq.gen_completions("sq", *shell, &outdir); - sqv.gen_completions("sqv", *shell, &outdir); } } |