summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml1
-rw-r--r--Makefile3
-rw-r--r--sqv/Cargo.toml36
-rw-r--r--sqv/Makefile29
-rw-r--r--sqv/README.md8
-rw-r--r--sqv/build.rs20
-rw-r--r--sqv/make-usage.sh53
-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)bin18064 -> 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)bin310 -> 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.toml4
-rw-r--r--tool/Makefile8
-rw-r--r--tool/build.rs6
21 files changed, 152 insertions, 16 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 00864bf9..a6d68c6f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"
diff --git a/Makefile b/Makefile
index d0bdfa18..134ded7b 100644
--- a/Makefile
+++ b/Makefile
@@ -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
index 72acf4de..72acf4de 100644
--- a/tool/tests/data/bad-subkey-keyring.pgp
+++ b/sqv/tests/data/bad-subkey-keyring.pgp
Binary files differ
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
index 65fc578c..65fc578c 100644
--- a/tool/tests/data/bad-subkey.txt.sig
+++ b/sqv/tests/data/bad-subkey.txt.sig
Binary files differ
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);
}
}