Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package signing-party for openSUSE:Factory checked in at 2021-05-15 23:16:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/signing-party (Old) and /work/SRC/openSUSE:Factory/.signing-party.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "signing-party" Sat May 15 23:16:16 2021 rev:6 rq:893285 version:2.11 Changes: -------- --- /work/SRC/openSUSE:Factory/signing-party/signing-party.changes 2019-06-17 10:34:52.833217994 +0200 +++ /work/SRC/openSUSE:Factory/.signing-party.new.2988/signing-party.changes 2021-05-15 23:17:16.264482211 +0200 @@ -1,0 +2,6 @@ +Sat May 15 08:53:33 UTC 2021 - Andreas Stieger <andreas.stie...@gmx.de> + +- signing-party 2.11: + * fixes for other distributions only + +------------------------------------------------------------------- Old: ---- signing-party-2.10.tar.gz New: ---- signing-party-2.11.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ signing-party.spec ++++++ --- /var/tmp/diff_new_pack.2qvcTx/_old 2021-05-15 23:17:16.732480384 +0200 +++ /var/tmp/diff_new_pack.2qvcTx/_new 2021-05-15 23:17:16.732480384 +0200 @@ -1,7 +1,7 @@ # # spec file for package signing-party # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: signing-party -Version: 2.10 +Version: 2.11 Release: 0 Summary: GPG Tools License: GPL-2.0-or-later @@ -94,7 +94,7 @@ rm -rf keyanalyze %endif -make %{?_smp_mflags} V=1 CFLAGS="%{optflags}" +%make_build CFLAGS="%{optflags}" %install @@ -129,29 +129,7 @@ %doc caff/README caff/README.gpg-agent caff/README.many-keys caff/README.v3-keys caff/caffrc.sample %doc gpgsigs/gpgsigs-lt2k5*.txt gpg-mailkeys/example.gpg-mailkeysrc %doc keylookup/NEWS -%{_bindir}/caff -%{_bindir}/gpg-key2ps -%{_bindir}/gpg-mailkeys -%{_bindir}/gpglist -%{_bindir}/gpgsigs -%{_bindir}/keyart -%{_bindir}/keylookup -%{_bindir}/pgp-clean -%{_bindir}/pgp-fixkey -%if 0%{?suse_version} > 1320 -%{_bindir}/signing-party-pgpring -%endif -%{_mandir}/man1/caff.1%{?ext_man} -%{_mandir}/man1/gpg-key2ps.1%{?ext_man} -%{_mandir}/man1/gpg-mailkeys.1%{?ext_man} -%{_mandir}/man1/gpglist.1%{?ext_man} -%{_mandir}/man1/gpgsigs.1%{?ext_man} -%{_mandir}/man1/keyart.1%{?ext_man} -%{_mandir}/man1/keylookup.1%{?ext_man} -%{_mandir}/man1/pgp-clean.1%{?ext_man} -%{_mandir}/man1/pgp-fixkey.1%{?ext_man} -%if 0%{?suse_version} > 1320 -%{_mandir}/man1/signing-party-pgpring.1%{?ext_man} -%endif +%{_bindir}/* +%{_mandir}/man1/*%{?ext_man} %changelog ++++++ signing-party-2.10.tar.gz -> signing-party-2.11.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/NEWS new/signing-party-2.11/debian/NEWS --- old/signing-party-2.10/debian/NEWS 1970-01-01 01:00:00.000000000 +0100 +++ new/signing-party-2.11/debian/NEWS 2020-07-08 18:35:26.000000000 +0200 @@ -0,0 +1,29 @@ +signing-party (1.0-1) unstable; urgency=low + + There are several new tools: + * gpgparticipants creates a list of party participants for the organiser. + * sig2dot and springgraph were imported from their formerly separate + packages. + + -- Christoph Berg <m...@debian.org> Wed, 12 Mar 2008 22:58:00 +0100 + +signing-party (0.4.2-1) unstable; urgency=low + + * New: gpglist -- show who signed which of your UIDs + + -- Christoph Berg <c...@df7cb.de> Mon, 8 Aug 2005 00:03:55 +0200 + +signing-party (0.4.0-1) unstable; urgency=low + + * Signing-party has now been merged with the (never released) pgp-tools + package. It now includes two new tools. The package will be extended + further in the near future. + + * New: caff -- CA - fire and forget: + caff takes a list of keyids on the command line, fetches them from a + keyserver and calls GnuPG so that you can sign it. It then mails each + key to all its email addresses - only including the one UID that we + send to in each mail. + * New: gpgsigs -- annotates a list of GPG keys with already done signatures. + + -- Thijs Kinkhorst <k...@squirrelmail.org> Fri, 3 Jun 2005 11:18:36 +0200 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/NEWS.Debian new/signing-party-2.11/debian/NEWS.Debian --- old/signing-party-2.10/debian/NEWS.Debian 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/NEWS.Debian 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -signing-party (1.0-1) unstable; urgency=low - - There are several new tools: - * gpgparticipants creates a list of party participants for the organiser. - * sig2dot and springgraph were imported from their formerly separate - packages. - - -- Christoph Berg <m...@debian.org> Wed, 12 Mar 2008 22:58:00 +0100 - -signing-party (0.4.2-1) unstable; urgency=low - - * New: gpglist -- show who signed which of your UIDs - - -- Christoph Berg <c...@df7cb.de> Mon, 8 Aug 2005 00:03:55 +0200 - -signing-party (0.4.0-1) unstable; urgency=low - - * Signing-party has now been merged with the (never released) pgp-tools - package. It now includes two new tools. The package will be extended - further in the near future. - - * New: caff -- CA - fire and forget: - caff takes a list of keyids on the command line, fetches them from a - keyserver and calls GnuPG so that you can sign it. It then mails each - key to all its email addresses - only including the one UID that we - send to in each mail. - * New: gpgsigs -- annotates a list of GPG keys with already done signatures. - - -- Thijs Kinkhorst <k...@squirrelmail.org> Fri, 3 Jun 2005 11:18:36 +0200 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/changelog new/signing-party-2.11/debian/changelog --- old/signing-party-2.10/debian/changelog 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/changelog 2020-07-08 18:35:26.000000000 +0200 @@ -1,10 +1,29 @@ -signing-party (2.10-1) unstable; urgency=high +signing-party (2.11-1) UNRELEASED; urgency=medium - * gpg-key2ps: Security fix for CVE-2018-15599: unsafe shell call enabling + * d/control, d/install: Apply wrap-and-sort(1). + * d/control: Remove useless Build-Depends: python. + * d/control, d/rules: Replace dh_python2 with dh_python3. This has AFAICT + no impact on the binary packages which have been ported to python3 in + 2.8-1. (Closes: #938480.) + * Set Rules-Requires-Root: no. + * Trim trailing whitespace. + * Move source package lintian overrides to debian/source. + * Rename debian/NEWS.Debian to debian/NEWS. + * Update standards version to 4.5.0, no changes needed. + * Bump debhelper from 9 to 13. Remove now useless Build-Depends: + autotools-dev. + * Set debhelper-compat version in Build-Depends. + * Use the dh sequencer in debian/rules. + + -- Guilhem Moulin <guil...@debian.org> Fri, 30 Aug 2019 12:14:38 +0200 + +signing-party (2.10-2) unstable; urgency=high + + * gpg-key2ps: Security fix for CVE-2019-11627: unsafe shell call enabling shell injection via a User ID. Use Perl's (core) module Encode.pm instead of shelling out to `iconv`. (Closes: #928256.) - -- Guilhem Moulin <guil...@debian.org> Wed, 01 May 2019 12:21:59 +0200 + -- Guilhem Moulin <guil...@debian.org> Sun, 05 May 2019 15:13:54 +0200 signing-party (2.9-1) unstable; urgency=medium @@ -593,7 +612,7 @@ signing-party (1.1.2-1) unstable; urgency=low - * gpgsigs: + * gpgsigs: + Added patch from Roland Rosenfeld to support RIPEMD160 checksum. (Closes: #533747). + Updated man page to mention support for SHA256 and RIPEMD160 checksum. @@ -633,7 +652,7 @@ + Update caff's manpage to mention a keyid specified with -u requires to be listed in the configuration file through the keyid variable. Add a note in caffrc.sample about using the -u option to select which - keyid from the CONFIG{'keyid'} as to be used for signing. + keyid from the CONFIG{'keyid'} as to be used for signing. (Closes: #482693) * keyanalyze/top50.pl: Fix the error message when a line from stdin does not match. @@ -1044,4 +1063,3 @@ * Initial Release (Closes: #117977). -- Simon Richter <s...@debian.org> Fri, 2 Nov 2001 19:33:42 +0100 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/compat new/signing-party-2.11/debian/compat --- old/signing-party-2.10/debian/compat 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/compat 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/control new/signing-party-2.11/debian/control --- old/signing-party-2.10/debian/control 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/control 2020-07-08 18:35:26.000000000 +0200 @@ -3,46 +3,47 @@ Priority: optional Maintainer: Guilhem Moulin <guil...@debian.org> Uploaders: Simon Richter <s...@debian.org> -Build-Depends: debhelper (>= 9), python, dh-python, - autoconf, automake, autotools-dev, - libmd-dev -Standards-Version: 4.3.0 +Build-Depends: autoconf, + automake, + debhelper-compat (= 13), + dh-python, + libmd-dev, + python3 +Standards-Version: 4.5.0 Vcs-Git: https://salsa.debian.org/signing-party-team/signing-party.git Vcs-Browser: https://salsa.debian.org/signing-party-team/signing-party +Rules-Requires-Root: no Package: signing-party Architecture: any -Depends: - ${perl:Depends}, - ${python:Depends}, - ${misc:Depends}, - ${shlibs:Depends}, - gnupg, - libclass-methodmaker-perl, - libgnupg-interface-perl, - libmailtools-perl, - libmime-tools-perl, - libnet-idn-encode-perl, - libterm-readkey-perl, - libtext-template-perl, - qprint -Recommends: - default-mta | mail-transport-agent, - dialog | whiptail, - libgd-gd2-noxpm-perl | libgd-gd2-perl, - libpaper-utils -Suggests: - fonts-noto-cjk, - fonts-noto-mono, - imagemagick | graphicsmagick-imagemagick-compat, - mutt | neomutt, - qrencode, - texlive-font-utils, - texlive-latex-extra, - texlive-latex-recommended, - texlive-xetex, - wipe -Provides: sig2dot, springgraph, keyanalyze +Depends: gnupg, + libclass-methodmaker-perl, + libgnupg-interface-perl, + libmailtools-perl, + libmime-tools-perl, + libnet-idn-encode-perl, + libterm-readkey-perl, + libtext-template-perl, + qprint, + ${misc:Depends}, + ${perl:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Recommends: default-mta | mail-transport-agent, + dialog | whiptail, + libgd-gd2-noxpm-perl | libgd-gd2-perl, + libpaper-utils +Suggests: fonts-noto-cjk, + fonts-noto-mono, + imagemagick | graphicsmagick-imagemagick-compat, + mutt | neomutt, + qrencode, + texlive-font-utils, + texlive-latex-extra, + texlive-latex-recommended, + texlive-xetex, + wipe +Provides: keyanalyze, sig2dot, springgraph Description: Various OpenPGP related tools signing-party is a collection for all kinds of PGP/GnuPG related things, including tools for signing keys, keyring analysis, and party preparation. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/dirs new/signing-party-2.11/debian/dirs --- old/signing-party-2.10/debian/dirs 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/dirs 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -usr/bin -usr/share/doc/signing-party -usr/share/doc/signing-party/caff diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/docs new/signing-party-2.11/debian/docs --- old/signing-party-2.10/debian/docs 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/docs 2020-07-08 18:35:26.000000000 +0200 @@ -1,4 +1,3 @@ -debian/NEWS.Debian debian/changelog.keylookup debian/changelog.sig2dot debian/changelog.springgraph diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/install new/signing-party-2.11/debian/install --- old/signing-party-2.10/debian/install 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/install 2020-07-08 18:35:26.000000000 +0200 @@ -1,17 +1,18 @@ caff/caff usr/bin caff/pgp-clean usr/bin caff/pgp-fixkey usr/bin -gpglist/gpglist usr/bin -gpg-key2ps/gpg-key2ps usr/bin gpg-key2latex/gpg-key2latex usr/bin +gpg-key2ps/gpg-key2ps usr/bin gpg-mailkeys/gpg-mailkeys usr/bin +gpgdir/gpgdir usr/bin +gpglist/gpglist usr/bin gpgparticipants/gpgparticipants usr/bin +gpgparticipants/gpgparticipants-filter usr/bin gpgparticipants/gpgparticipants-prefill usr/bin - +gpgwrap/bin/gpgwrap usr/bin keyanalyze/analyze.sh usr/share/doc/signing-party/examples/keyanalyze keyanalyze/scripts/* usr/share/doc/signing-party/examples/keyanalyze/scripts keyanalyze/willy/* usr/share/doc/signing-party/examples/keyanalyze/willy - -keyart/keyart usr/bin -keyart/doc/examples/* usr/share/doc/signing-party/examples/keyart keyart/doc/druken-bishop.txt keyart/doc/party-worksheet keyart/README usr/share/doc/signing-party/keyart +keyart/doc/examples/* usr/share/doc/signing-party/examples/keyart +keyart/keyart usr/bin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/manpages new/signing-party-2.11/debian/manpages --- old/signing-party-2.10/debian/manpages 1970-01-01 01:00:00.000000000 +0100 +++ new/signing-party-2.11/debian/manpages 2020-07-08 18:35:26.000000000 +0200 @@ -0,0 +1,20 @@ +caff/caff.1 +caff/pgp-clean.1 +caff/pgp-fixkey.1 +gpg-key2latex/gpg-key2latex.1 +gpg-key2ps/gpg-key2ps.1 +gpg-mailkeys/gpg-mailkeys.1 +gpgdir/gpgdir.1 +gpglist/gpglist.1 +gpgparticipants/gpgparticipants-filter.1 +gpgparticipants/gpgparticipants-prefill.1 +gpgparticipants/gpgparticipants.1 +gpgsigs/gpgsigs.1 +gpgwrap/doc/gpgwrap.1 +keyanalyze/keyanalyze.1 +keyanalyze/pgpring/pgpring.1 +keyanalyze/process_keys.1 +keyart/doc/keyart.1 +keylookup/keylookup.1 +sig2dot/sig2dot.1 +springgraph/springgraph.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/rules new/signing-party-2.11/debian/rules --- old/signing-party-2.10/debian/rules 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/rules 2020-07-08 18:35:26.000000000 +0200 @@ -1,87 +1,16 @@ #!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS := hardening=+bindnow,+pie -DPKG_EXPORT_BUILDFLAGS = 1 --include /usr/share/dpkg/buildflags.mk -INSTALL = install -INSTALL_PROGRAM = $(INSTALL) -INSTALL_DATA = $(INSTALL) -m 644 +NAME = signing-party +datarootdir = $(CURDIR)/debian/$(NAME)/usr/share +docdir = $(datarootdir)/doc/$(NAME) -GPGDIR_DIR = gpgdir -GPGDIR_PROG = gpgdir +%: + dh $@ --with python3 -GPGWRAP_DIR = gpgwrap -GPGWRAP_PROG = bin/gpgwrap - -DESTDIR = $(CURDIR)/debian/signing-party -DESTDIR_BIN = $(DESTDIR)/usr/bin -DESTDIR_DOC = $(DESTDIR)/usr/share/doc/signing-party - -configure: configure-stamp -configure-stamp: - dh_testdir - touch $@ - -build: build-arch build-indep -build-arch: build-stamp -build-indep: build-stamp -build-stamp: configure-stamp - dh_testdir - dh_update_autotools_config - $(MAKE) - touch $@ - -clean: - dh_testdir - dh_testroot - $(MAKE) clean - rm -f build-stamp configure-stamp - dh_clean - -install: build - dh_testdir - dh_testroot - dh_prep - dh_installdirs - $(MAKE) install DESTDIR=$(DESTDIR) - dh_install - dh_installman */*.1 */*/*.1 - $(INSTALL_DATA) caff/README \ - caff/README.gpg-agent \ - caff/README.many-keys \ - caff/README.v3-keys \ - caff/caffrc.sample \ - $(DESTDIR_DOC)/caff - - $(INSTALL_PROGRAM) $(GPGDIR_DIR)/$(GPGDIR_PROG) $(DESTDIR_BIN) - $(INSTALL_DATA) $(GPGDIR_DIR)/ChangeLog $(DESTDIR_DOC)/changelog.gpgdir - - $(INSTALL_PROGRAM) $(GPGWRAP_DIR)/$(GPGWRAP_PROG) $(DESTDIR_BIN) - $(INSTALL_DATA) $(GPGWRAP_DIR)/NEWS $(DESTDIR_DOC)/changelog.gpgwrap - - dh_lintian - -binary-indep: build install -binary-arch: build install - dh_testdir - dh_testroot +override_dh_installdocs: dh_installdocs - dh_installmenu - dh_installcron - dh_installinfo - dh_installchangelogs - dh_perl - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_python2 - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch - -.PHONY: build clean binary-indep binary-arch binary install configure + install -Dt $(docdir)/caff caff/README caff/README.* caff/caffrc.sample + install -T gpgdir/ChangeLog $(docdir)/changelog.gpgdir + install -T gpgwrap/NEWS $(docdir)/changelog.gpgwrap diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/source/lintian-overrides new/signing-party-2.11/debian/source/lintian-overrides --- old/signing-party-2.10/debian/source/lintian-overrides 1970-01-01 01:00:00.000000000 +0100 +++ new/signing-party-2.11/debian/source/lintian-overrides 2020-07-08 18:35:26.000000000 +0200 @@ -0,0 +1,2 @@ +# we're upstream +debian-watch-file-is-missing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/debian/source.lintian-overrides new/signing-party-2.11/debian/source.lintian-overrides --- old/signing-party-2.10/debian/source.lintian-overrides 2019-05-01 12:22:19.000000000 +0200 +++ new/signing-party-2.11/debian/source.lintian-overrides 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -# we're upstream -debian-watch-file-is-missing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/gpgparticipants/gpgparticipants-filter new/signing-party-2.11/gpgparticipants/gpgparticipants-filter --- old/signing-party-2.10/gpgparticipants/gpgparticipants-filter 1970-01-01 01:00:00.000000000 +0100 +++ new/signing-party-2.11/gpgparticipants/gpgparticipants-filter 2020-07-08 18:35:26.000000000 +0200 @@ -0,0 +1,171 @@ +#!/usr/bin/python3 +""" +This tool filters a list of key ids from your gpg keyring as input to gpgparticipants. + +It sorts the alphabetically list by the first uid of each key. Per default it skips over revoked and expired keys. +The output can be piped into gpgparticipants or stored in a file. +""" + +__version__ = "1.0" +__author__ = "Max Harmathy" +__email__ = "max.harma...@web.de" +__copyright__ = "Copyright 2019, Max Harmathy" +__license__ = "MIT" + +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +import argparse +import subprocess +import sys + + +class RawDataSet: + """ + Hold raw output of gpg for one key. + """ + + def __init__(self, data): + """ + :param data: list of lines of raw output of gpg --with-colons + """ + self.data = data + + def has_line_with(self, prefix): + return any(line.startswith(prefix.encode()) for line in self.data) + + def is_key_set(self): + """sanity check for a data set of a key""" + return self.has_line_with("pub") and self.has_line_with("fpr") and self.has_line_with("uid") + + def data_field_from_lines(self, field_index, line_prefix): + """Select all lines which start with line_prefix and return the columns denoted by field_index.""" + return [line.split(b':')[field_index].decode() for line in self.data if line.startswith(line_prefix)] + + +class KeyDataSet: + """ + Hold processed key data. + """ + + def __init__(self, key_id, uids, valid_flag): + self.key_id = key_id + self.uids = uids + self.valid_flag = valid_flag + + def __repr__(self): + return self.key_id + + def is_valid(self): + """check that the key isn't revoked or expired""" + return self.valid_flag not in ['e', 'r'] + + +def filter_to_gpg(filter_string, gpg_bin, set_homedir, homedir): + """ + Call gpg and return output. + """ + + command = [ + gpg_bin, + "--with-colons", + "--fingerprint", + ] + + if set_homedir: + command.append("--homedir") + command.append(homedir) + + command.append(filter_string) + + with subprocess.Popen(command, stdout=subprocess.PIPE) as process: + return process.stdout.readlines() + + +def slpit_raw_key_data(gpg_output): + """ + Split the whole output of gpg into fragments, each belonging to one key. + """ + acc = [] + for line in gpg_output: + if line.startswith(b'pub'): + yield RawDataSet(acc) + acc = [] + acc.append(line) + yield RawDataSet(acc) + + +def key_data_from(raw_data_set): + """process a raw data set into a key data set""" + return KeyDataSet( + raw_data_set.data_field_from_lines(9, b'fpr')[0], + raw_data_set.data_field_from_lines(9, b'uid'), + raw_data_set.data_field_from_lines(9, b'pub')[0], + ) + + +def key_data_sets_from(gpg_output): + for raw_data_set in slpit_raw_key_data(gpg_output): + if raw_data_set.is_key_set(): + yield key_data_from(raw_data_set) + + +def sorted_by_name(key_list): + return sorted(key_list, key=lambda key_data_set: key_data_set.uids[0]) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument('-o', '--output', metavar="FILE", default=sys.stdout, type=argparse.FileType('w'), + help='specifies the file where the output should be written to (per default writes to stdout)' + ) + parser.add_argument('-b', '--gpg-binary', metavar="GPG_BIN", default="gpg", + help='custom path to gpg (default: "gpg")' + ) + parser.add_argument('-d', '--homedir', metavar="GPG_HOME", + help='custom homedir for gpg (see --homedir in gpg manual)' + ) + parser.add_argument('-a', '--all-keys', action='store_true', + help='show also revoked and expired keys' + ) + parser.add_argument('--version', action='version', + help='output version information and exit', + version="%(prog)s {version}".format(version=__version__) + ) + parser.add_argument('filter', type=str, nargs='+', metavar="FILTER", + help='input query, which will be passed to gpg (see gpg manual)') + + args = parser.parse_args() + key_data = [] + for input_string in args.filter: + gpg_output = filter_to_gpg( + filter_string=input_string, + gpg_bin=args.gpg_binary, + set_homedir=args.homedir is not None, + homedir=args.homedir + ) + key_data += key_data_sets_from(gpg_output) + + for key in sorted_by_name(key_data): + if key.is_valid() or args.all_keys: + print(key, file=args.output) + args.output.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/signing-party-2.10/gpgparticipants/gpgparticipants-filter.1 new/signing-party-2.11/gpgparticipants/gpgparticipants-filter.1 --- old/signing-party-2.10/gpgparticipants/gpgparticipants-filter.1 1970-01-01 01:00:00.000000000 +0100 +++ new/signing-party-2.11/gpgparticipants/gpgparticipants-filter.1 2020-07-08 18:35:26.000000000 +0200 @@ -0,0 +1,54 @@ +.TH GPGPARTICIPANTS-FILTER 1 "April, 2019" +.SH NAME +gpgparticipants-filter \- filters a list of key ids as input to gpgparticipants +.SH SYNOPSIS +.B gpgparticipants-filter +[\-h] +[\-o FILE] +[\-b GPG_BIN] +[\-d GPG_HOME] +[\-a] +[\-\-version] +FILTER [FILTER ...] +.SH DESCRIPTION +This tool filters a list of key ids from your gpg keyring as input to +gpgparticipants. It sorts the alphabetically list by the first uid of each +key. Per default it skips over revoked and expired keys. The output can be +piped into gpgparticipants or stored in a file. + +.SH OPTIONS + +.SS "positional arguments:" + +.IP FILTER +input query, which will be passed to gpg + +.SS "optional arguments:" + +.TP +\fB\-h\fR, \fB\-\-help\fR +show this help message and exit + +.TP +\fB\-o\fR FILE, \fB\-\-output\fR FILE +specifies the file where the output should be written +to (per default writes to stdout) + +.TP +\fB\-b\fR GPG_BIN, \fB\-\-gpg\-binary\fR GPG_BIN +custom path to gpg (default: "gpg") + +.TP +\fB\-d\fR GPG_HOME, \fB\-\-homedir\fR GPG_HOME +custom homedir for gpg (see \fB\-\-homedir\fR of gpg) + +.TP +\fB\-a\fR, \fB\-\-all\-keys\fR +show also revoked and expired keys + +.TP +\fB\-\-version\fR +output version information and exit + +.SH SEE ALSO +.BR gpgparticipants (1), gpg (1) \ No newline at end of file