git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 8/8] gpg-interface t: extend the existing GPG tests with GPGSM

From
Henning Schild <henning.schild@siemens.com>
Date
Jul 6, 2018, 08:01 UTC
Message-ID
<20180706100152.317da7f7@md1pvb1c.ad001.siemens.net>
In-Reply-To
<20180706011447.GC7697@genre.crustytoothpaste.net>

Am Fri, 6 Jul 2018 01:14:47 +0000 schrieb "brian m. carlson" <sandals@crustytoothpaste.net>:

Show 50 quoted lines
> On Tue, Jul 03, 2018 at 02:38:20PM +0200, Henning Schild wrote:
> > Add test cases to cover the new X509/gpgsm support. Most of them
> > resemble existing ones. They just switch the format to X509 and set
> > the signingkey when creating signatures. Validation of signatures
> > does not need any configuration of git, it does need gpgsm to be
> > configured to trust the key(-chain).
> > We generate a self-signed key for committer@example.com and
> > configure gpgsm to trust it.
> > 
> > Signed-off-by: Henning Schild <henning.schild@siemens.com>
> > ---
> >  t/lib-gpg.sh               |  9 ++++++-
> >  t/lib-gpg/gpgsm-gen-key.in |  6 +++++
> >  t/t4202-log.sh             | 66
> > ++++++++++++++++++++++++++++++++++++++++++++++
> > t/t5534-push-signed.sh     | 52
> > ++++++++++++++++++++++++++++++++++++ t/t7003-filter-branch.sh   |
> > 15 +++++++++++ t/t7030-verify-tag.sh      | 47
> > +++++++++++++++++++++++++++++++-- t/t7600-merge.sh           | 31
> > ++++++++++++++++++++++ 7 files changed, 223 insertions(+), 3
> > deletions(-) create mode 100644 t/lib-gpg/gpgsm-gen-key.in
> > 
> > diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
> > index a5d3b2cba..9dcb4e990 100755
> > --- a/t/lib-gpg.sh
> > +++ b/t/lib-gpg.sh
> > @@ -38,7 +38,14 @@ then
> >  			"$TEST_DIRECTORY"/lib-gpg/ownertrust &&
> >  		gpg --homedir "${GNUPGHOME}" </dev/null >/dev/null
> > 2>&1 \ --sign -u committer@example.com &&
> > -		test_set_prereq GPG
> > +		test_set_prereq GPG &&
> > +		echo | gpgsm --homedir "${GNUPGHOME}" -o
> > "$TEST_DIRECTORY"/lib-gpg/gpgsm.crt.user --passphrase-fd 0
> > --pinentry-mode loopback --generate-key --batch
> > "$TEST_DIRECTORY"/lib-gpg/gpgsm-gen-key.in &&
> > +		gpgsm --homedir "${GNUPGHOME}" --import
> > "$TEST_DIRECTORY"/lib-gpg/gpgsm.crt.user &&
> > +		gpgsm --homedir "${GNUPGHOME}" -K | grep
> > fingerprint: | cut -d" " -f4 | tr -d '\n' >
> > ${GNUPGHOME}/trustlist.txt &&
> > +		echo " S relax" >> ${GNUPGHOME}/trustlist.txt &&
> > +		(gpgconf --kill gpg-agent >/dev/null 2>&1 || : ) &&
> > +		echo hello | gpgsm --homedir "${GNUPGHOME}" -u
> > committer@example.com -o /dev/null --sign - 2>&1 &&
> > +		test_set_prereq GPGSM  
> 
> It looks like the GPGSM prerequisite will only be set if the GPG
> prerequisite is set as well.  Do we want to consider the case when the
> user might have gpgsm but not gpg?
Nice finding, i should have tried to hide that better ;).

I thought about it when writing the code. There might be distributions where you can install one without the other. I also introduces a few tests that rely on the implication, where GPGSM tests on top of GPG. (i.e. t7030 "create signed tags x509") The implication is really just there for the tests, not for end-users. Dropping it would create more variations in testing (make it more expensive).

I would say it is not worth it at the moment.

Implementing the gpg.format detection by actually calling the "other" program to find which one knows the key, would shine another light on that one. But i kind of doubt that idea is a good one.

Henning
Previous: brian m. carlsonNext: brian m. carlson
Message 34 of 36 in “X509 (gpgsm) commit signing support”
  1. 0/8 X509 (gpgsm) commit signing supportHenning Schild, Jul 3, 2018
  2. 2/8 gpg-interface: make parse_gpg_output static and remove from interface headerHenning Schild, Jul 3, 2018
  3. 1/8 builtin/receive-pack: use check_signature from gpg-interfaceHenning Schild, Jul 3, 2018
  4. Junio C HamanoJul 6, 2018
  5. Junio C HamanoJul 6, 2018
  6. Henning SchildJul 9, 2018
  7. Junio C HamanoJul 9, 2018
  8. 5/8 t/t7510: check the validation of the new config gpg.formatHenning Schild, Jul 3, 2018
  9. Junio C HamanoJul 6, 2018
  10. Henning SchildJul 9, 2018
  11. 6/8 gpg-interface: do not hardcode the key string len anymoreHenning Schild, Jul 3, 2018
  12. Junio C HamanoJul 6, 2018
  13. 3/8 gpg-interface: add new config to select how to sign a commitHenning Schild, Jul 3, 2018
  14. brian m. carlsonJul 6, 2018
  15. Henning SchildJul 6, 2018
  16. Junio C HamanoJul 6, 2018
  17. 7/8 gpg-interface: introduce new signature format "X509" using gpgsmHenning Schild, Jul 3, 2018
  18. brian m. carlsonJul 6, 2018
  19. Henning SchildJul 6, 2018
  20. Junio C HamanoJul 6, 2018
  21. 4/8 gpg-interface: introduce an abstraction for multiple gpg formatsHenning Schild, Jul 3, 2018
  22. Martin ÅgrenJul 4, 2018
  23. Henning SchildJul 5, 2018
  24. Junio C HamanoJul 6, 2018
  25. Henning SchildJul 9, 2018
  26. Eric SunshineJul 9, 2018
  27. Junio C HamanoJul 9, 2018
  28. Jeff KingJul 10, 2018
  29. Junio C HamanoJul 10, 2018
  30. Junio C HamanoJul 10, 2018
  31. Jeff KingJul 10, 2018
  32. 8/8 gpg-interface t: extend the existing GPG tests with GPGSMHenning Schild, Jul 3, 2018
  33. brian m. carlsonJul 6, 2018
  34. Henning SchildJul 6, 2018
  35. brian m. carlsonJul 6, 2018
  36. Henning SchildJul 6, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.