changeset 7428:186956a87ad7

issue2551279 - GPG support removed from pypi - rewrite pgp signature validation. Added/updated documentation on using gpg signature files for the distribution to security.txt. Added signature files to main website/mercurial. Removed verification documentation from public key file included in distribution. key file now references security.txt/.html.
author John Rouillard <rouilj@ieee.org>
date Mon, 29 May 2023 18:42:08 -0400
parents 36916abe36e9
children 32bd5013bf32
files CHANGES.txt RELEASE.txt doc/security.txt tools/roundup.public.pgp.key website/www/Makefile website/www/signatures/roundup-1.6.0.tar.gz.asc website/www/signatures/roundup-1.6.1.tar.gz.asc website/www/signatures/roundup-2.0.0.tar.gz.asc website/www/signatures/roundup-2.1.0.tar.gz.asc website/www/signatures/roundup-2.2.0.tar.gz.asc
diffstat 10 files changed, 198 insertions(+), 70 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES.txt	Mon May 29 18:12:50 2023 -0400
+++ b/CHANGES.txt	Mon May 29 18:42:08 2023 -0400
@@ -16,6 +16,7 @@
 
 Fixed:
 
+- Updated directions for verifying Roundup distribution using pgp.
 - Dockerfile healthcheck fixed so it works when trackers are
   specified on command line. Also cleanup of unneeded
   packages. (John Rouillard)
--- a/RELEASE.txt	Mon May 29 18:12:50 2023 -0400
+++ b/RELEASE.txt	Mon May 29 18:42:08 2023 -0400
@@ -138,13 +138,14 @@
     pypi account and be added as a maintainer to roundup. Ask existing
     maintainer for access. You can do this two ways:
 
-      python3 setup.py sdist upload --repository pypi --sign
+      python3 setup.py sdist upload --repository pypi
 
     which rebuilds the source distribution tarball and uploads it.
-    This means that you have uploaded something tha is not tested. It
-    should be the same as the tarball you tested but....
+    This means that you have uploaded something that is not tested,
+    also it does not have a gpg signature. It should be the same as
+    the tarball you tested but....
 
-    Another way to do this is to use twine (pip install twine).
+    A better way to do this is to use twine (pip install twine).
     You need to sign the tarball. This can be done with:
 
       cd dist
@@ -152,27 +153,28 @@
       
     you should be prompted to use the roundup release key. If not you
     can add  --local=roundup-devel@lists.sourceforge.net.
-    This will create a file by the name <filename>.tgz.asc. Then
-    use twine to upload *both* the asc and distibution tarball
-    at the same time. E.G.:x
+    This will create a file by the name <filename>.tgz.asc.
+    The original directions used twine to upload the tarball and the
+    signature, but as of May 2023, PyPI no longer accepts signature
+    files.
 
-       twine upload --repository pypi <filename>.tar.gz <filename>.tar.gz.asc
+    So we publish the signature as part of the website. Move the file
+    to the website/www/signatures directory. Commit the .asc signature
+    file to mercurial.
 
-    (If you upload the .asc file separately from the distibution file
-    it gets a different path and is not able to be located in the pypi
-    interface. The asc file is downloaded using the tarball path and
-    add `asc'.)
+    Use twine to upload the distribution tarball. E.G.
+
+       twine upload --repository pypi <filename>.tar.gz
 
     The distribution file should appear on
     https://pypi.python.org/pypi/roundup in no time. If you are using
     python older than 2.7.13 you need a .pypirc shown below since the
-    URL has changed. If using 2.7.13 or newer, you can remove the
-    "--repository pypi" option and use 'setup.py sdist upload...'.
+    URL has changed.
 
     You can also use twine to upload the .whl (wheel) format
     distributions (if created). Follow the directions for generating
-    the gpg asc files and upload the .whl distribution and .whl.asc
-    signature files together.
+    the gpg asc files and place the .whl.asc in the signature
+    directory.
 
 14. Refresh website.
       website/README.txt
--- a/doc/security.txt	Mon May 29 18:12:50 2023 -0400
+++ b/doc/security.txt	Mon May 29 18:42:08 2023 -0400
@@ -2,16 +2,16 @@
     :description:
         Documentation on how to report security issues with
         Roundup. Also index to security related portions in other
-        Roundup documentation.
+        Roundup documentation. How to verify distribution using gpg.
 
 .. index::
    single: Reporting Security Issues
    single: Security Issues, Reporting
 
 
-======================================
-Reporting Security Issues with Roundup
-======================================
+=======================
+Roundup Security Issues
+=======================
 
 Security issues with Roundup should be reported by email to:
 
@@ -19,9 +19,100 @@
 
    rsc@runtux.com (Ralf Schlatterbeck)
 
-Also you can find rouilj on irc in channel #roundup at irc.oftc.net (see
-Contact_ for more directions and web interface).
-
-Use these mechanisms to establish initial contact.
+If these fail, you can find rouilj on irc in channel #roundup at
+irc.oftc.net (see Contact_ for more directions and web
+interface). Methods listed at Contact_ are all public, so they should
+be used to contact somebody with the Roundup project for establishing
+a proper method of reporting the security issue.
 
 .. _Contact: https://www.roundup-tracker.org/contact.html
+
+Verify Source Tarball
+---------------------
+
+.. index::
+   single: Distribution, verify with gpg
+   single: Signature, verify
+
+If you download the source tarball using ``python3 -m pip download
+roundup`` or from https://pypi.org/project/roundup/#files you can
+verify the file using gpg.
+
+This is the information on the public PGP/GPG key used to sign Roundup
+distributions.  It is used to sign the 1.6.0, 2.2.0, and newer
+releases. (Note that the @ sign in email addresses have been replaced
+with the word "at" to reduce spam directed at the mailing list.)::
+
+  Key info: Roundup Team (signing key for roundup releases)
+      <roundup-devel at lists.sourceforge.net>
+  Expires: 2028-07-17
+  Key fingerprint = 411E 354B 5D1A F261 25D6  2122 1F2D D0CB 756A 76D8
+
+Releases 1.6.1, 2.0.0 and 2.1.0 were accidentally signed with this key
+[1]_::
+
+  Key info: John Rouillard (Roundup Release Key)
+      <rouilj+roundup at ieee.org>
+  Expires: 2023-07-09
+  Key fingerprint =  A1E6 364E 9429 E9D8 2B3B 2373 DB05 ADC4 2330 5876
+
+.. [1] Use gpg to import this key from the keyserver pgp.mit.edu
+       if you need to verify one of these releases. Use the gpg
+       pgp.mit.edu keyserver example replacing the key fingerprint
+       with the one starting A1E6.
+
+You can import a key from pgp.mit.edu using::
+
+   gpg --keyserver pgp.mit.edu --receive-keys 411E354B5D1AF26125D621221F2DD0CB756A76D8
+
+where the fingerprint (without spaces) is used to identify which key
+to receive. You can also extract and import the file
+``tools/roundup.public.pgp.key`` from the download source tarball
+using::
+
+  tar -xzvf roundup-2.2.0.tar.gz -O \
+     roundup-2.2.0/tools/roundup.public.pgp.key > pub.key
+
+  gpg --import pub.key
+
+Once you have loaded the public key, you need a detached signature for
+your release. PyPI used to support uploading gpg detached
+signatures. However that is no longer supported and downloading
+existing signatures may not work in the future.
+
+As a result, the signatures for all Roundup final releases starting
+with 1.6.0 have been moved and are linked below:
+
+* `2.2.0 <../signatures/roundup-2.2.0.tar.gz.asc>`_
+* `2.1.0 <../signatures/roundup-2.1.0.tar.gz.asc>`_
+* `2.0.0 <../signatures/roundup-2.0.0.tar.gz.asc>`_
+* `1.6.1 <../signatures/roundup-1.6.1.tar.gz.asc>`_
+* `1.6.0 <../signatures/roundup-1.6.0.tar.gz.asc>`_
+
+To use it, download the correct versioned link and verify it with
+(note 1.5.7 is a dummy version, use the correct version number)::
+
+  gpg --verify roundup-1.5.7.tar.gz.asc roundup-1.5.7.tar.gz
+
+You should see::
+
+  gpg: Signature made Wed 13 Jul 2022 12:24:14 AM EDT
+  gpg:                using RSA key 411E354B5D1AF26125D621221F2DD0CB756A76D8
+  gpg: Good signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>" [unknown]
+  gpg: WARNING: This key is not certified with a trusted signature!
+  gpg:          There is no indication that the signature belongs to the owner.
+  Primary key fingerprint: 411E 354B 5D1A F261 25D6  2122 1F2D D0CB 756A 76D8
+
+which verifies the tarball integrity. The WARNING is expected and the
+date corresponds to the newest renewal of the Roundup key. As long as
+you see the output starting with "Good signature from" followed by the
+Key Info for your key, everything is OK.
+
+If something is wrong you will see:
+
+  gpg: Signature made Wed 13 Jul 2022 12:24:14 AM EDT
+  gpg:                using RSA key 411E354B5D1AF26125D621221F2DD0CB756A76D8
+  gpg: BAD signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>"
+
+*do not use* the tarball if the signature is BAD. Email the
+roundup-devel mailing list if you have this happen to you.
--- a/tools/roundup.public.pgp.key	Mon May 29 18:12:50 2023 -0400
+++ b/tools/roundup.public.pgp.key	Mon May 29 18:42:08 2023 -0400
@@ -1,51 +1,9 @@
-This is the public PGP/GPG key used to sign Roundup distributions.  It
-is used starting with the 1.6.0 release. (Note in this file the @ sign
-in emails have been replaced with the word "at".)
-
-Key info: Roundup Team (signing key for roundup releases)
-    <roundup-devel at lists.sourceforge.net>
-RSA key ID: 756A76D8
-Expires: 2028-07-17
-Key fingerprint = 411E 354B 5D1A F261 25D6  2122 1F2D D0CB 756A 76D8
-
-Import the key in this file using:
-
-   gpg --import roundup.public.pgp.key
-
-Then you can use it to verify a downloaded Roundup release from pypi.
-Get the url of the release from:
-
-  https://pypi.org/project/roundup
-
-Example (note there is no 1.5.7 release):
-
-  https://files.pythonhosted.org/packages/bf/14/d61fac5ed2aaca8c720ac4d4077428b8fdafa356089516ba9ee630975d2a/roundup-1.5.7.tar.gz
+This is the public PGP/GPG key used to sign Roundup distributions.
+See the Security document at:
 
-download the file then download:
-
-  https://files.pythonhosted.org/packages/bf/14/d61fac5ed2aaca8c720ac4d4077428b8fdafa356089516ba9ee630975d2a/roundup-1.5.7.tar.gz.asc
-
-(same url as the file with .asc added at the end).
-
-To verify the tar file run:
-
-  gpg --verify roundup-1.5.7.tar.gz.asc roundup-1.5.7.tar.gz
-
-and you should see:
+   https://www.roundup-tracker.org/docs/security.html
 
-  gpg: Signature made Wed 11 Jul 2018 08:40:06 PM EDT using RSA key ID 756A76D8
-  gpg: checking the trustdb
-  [...]
-  gpg: Good signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>"
-  [...]
-
-which verifies the tarball integrity. If something is wrong you will see:
-
-  gpg: Signature made Wed 11 Jul 2018 08:40:06 PM EDT using RSA key ID 756A76D8
-  gpg: BAD signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>"
-
-*do not use* the tarball if the signature is BAD. Email the
-roundup-devel mailing list if there is a problem.
+for details on how to use it.
 
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 
--- a/website/www/Makefile	Mon May 29 18:12:50 2023 -0400
+++ b/website/www/Makefile	Mon May 29 18:42:08 2023 -0400
@@ -29,6 +29,7 @@
 	sed -i -e '/<meta/s/og\\:/og:/' \
              -e '/<meta/s/name="og:/property="og:/' html/index.html
 	cp robots.txt html/robots.txt
+	mkdir html/signatures && cp signatures/*.asc html/signatures
 
 linkcheck:
 	mkdir -p $(TMP)/linkcheck $(TMP)/doctrees
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/website/www/signatures/roundup-1.6.0.tar.gz.asc	Mon May 29 18:42:08 2023 -0400
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQIcBAABAgAGBQJbSI1TAAoJEB8t0Mt1anbYSFsQAJvj4+piuyY51RTl7nbk+qKD
+aDwmlvNL/FcBlc9PmzCk71woUg8+IPVFqeCYGPj/dKieKivCaLTnwkNDEsYdBe5h
+08L50WOVMPPNEsLVI+j7q6BO9dVK+XE5zqNMub8JfcCf0A8emvruZskVoin5Pju+
+Vpge95yfBjOi+bfV8k0KjBjN+l/Ih1VzvER3YGmuMXhnP+nQaGlZ0i5lIphQDGeV
+zrqtBXwBETJ0vPQNmc+x6RjhD1Uwfe3Qm3IimfvwmKo4EfasJOlhycSYMZ2CUEWN
+3tSi3uKsZHAs+5Ya+MywLrO8IkQYFW3NVM3CK7ZWFH7uL3dgUP1Ui4L/LtnjMq/6
+4Oa4NsEeKmHmfmQOceLoqZ0zPLrJZpt+FW/bPtnDnNtDAwLJcvK6+9tCZnYKlajh
+iDWKNIOJWauyfub1l75znsDmrpoU5K/9ISxlG7lIUMWjMBQoPcMy3JUr6jEtE2zb
+Rwm6Tst/E97ZL3xg/jBY8OgpOj9cgpqV8WtUBRumdpD3C93vPgBCeKcdR6wQ7G0d
+LLm4gxlseX9FGOdsUShpC6aEegatX15t/sstZE+b/WYdu0hgF2wPh9ERnfis3eAz
+Xof+shdZliJH+HNfPaTbQjhgqUJ8Aiur/AfT/4NjtiwS7wVvuguJ1vpU59yMEppM
+yEExU26bxUuHoajAmpAW
+=lrME
+-----END PGP SIGNATURE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/website/www/signatures/roundup-1.6.1.tar.gz.asc	Mon May 29 18:42:08 2023 -0400
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQGcBAABAgAGBQJdKdmzAAoJENsFrcQjMFh2o28L/iSCGofdtHXiM2GVjyaHYudL
+9KCptcZX0XHZliVevVXiAbHVegpG2nnt2EhW2uv3AxJFJysDg+nVQIRWZlwvuw8I
+3jk+sQAjSesOkOHGwUy/G9lZzAqI9L6cWB/HedNL9pUznA4akF/Xv9RIo7V5T1Ph
+uVpvuDtxD6DF7EaymBo+LVCZQjH1loff3YYGJcJj97785jglphuTbLuS0o0dtR0s
+ZfT8jwfuGgJWKN+5eL0ieda+5K+e8XRG7VUx5TGnDkmKbHWtEH+6ZjSKjRi0b1oH
+LCNqHe4No9WgrIhWUgEQNe4EbVoFGqE0B8RJom4kAolMd8uH8z+KutisPGET9H/b
+3rhOTq9cGN5IAmo5l3gteSLD+S28UbjKXneN9ycqGABug2CjZV8HzfexxCr7UI20
+XHsDQNnPv+BKcOzImrmqcWoao7kKbeQ+4RYfVokUGNCiWAZmwvqGoiF1E9lAhyes
+V7tepsvWy1640nxAdQD8/W+E3dpK4kKqjRtOEgQNcg==
+=eJeY
+-----END PGP SIGNATURE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/website/www/signatures/roundup-2.0.0.tar.gz.asc	Mon May 29 18:42:08 2023 -0400
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQGzBAABCgAdFiEEoeY2TpQp6dgrOyNz2wWtxCMwWHYFAl8MXlcACgkQ2wWtxCMw
+WHYbcQv/RlIQFEQqSorZ/+SEuv8txmwBWmizASIhvbvlS4Nfjx7RnAjAI0PFEaJI
+F6sqDjBCQhv6SI4t4Z1RVT/0Btt9DOThrDECc2dwMZaoIzUqmulN19l/ATrk7imq
+NkZ2KwACUtQA0YGJXcqi6wUsJBbFcuZSDdxHfzQ5UO1Myk37UXvQ01GLuPj6RppG
+MwmdTEcDI9souxEQWQQtEEWa6mvbVG0yVMUTevXrws0TqGWV/k8x1mIlpyaebCSx
+DXmmnuYnyTbDS3Yx9Rh+wJNuEEQM8P0/kj9DsNzGMd+941ckgyIk7v9M1OPl8FyM
+M0J2dlVVsJPUOrdiI/U/Y9jNFPde+3kUnX+24Nj3UZgzKk3stLRKer6oLM4YphjG
+Kq3p7FE2tmT0iQdyvQ1fiE1AOleslr/CErku42UD/CGfdOnpx3UzFCCpao7pesYY
+3XMfwwIjXMoCd4OjLS4D4FQljpnSuNVT0JW1UPtsfWrSycMoxPtFVg6a2ASQ7Ej8
+TVNkZi0X
+=2xhu
+-----END PGP SIGNATURE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/website/www/signatures/roundup-2.1.0.tar.gz.asc	Mon May 29 18:42:08 2023 -0400
@@ -0,0 +1,14 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQGzBAABCgAdFiEEoeY2TpQp6dgrOyNz2wWtxCMwWHYFAmDtEooACgkQ2wWtxCMw
+WHZyowv/Z1kL4coSM661C7nQOQU/N5UBc7WfDPreLgmA1htONhTAxDstSN0TDmQu
+mYIRaYiO50iHYcUpEwrVy3tPgk3wT8XjpoVmCsuJhREeED502q3BYC6uzyfBeKWe
+QxvDa5+usMrw1jJpVXUYyfSOvC9MlBea5ZOwrlwsFeeoXli6RjZLzqotOjFmRrha
+/lUNRGJsIy5Tn5XIq3g8xCmOpqAYiraR4rz95QJ1yZIiP5mACVQ8ZHr58qmlPyHw
+qO7C4YYOSSSwaLqutvixlLyP5+L7CJtQQT3lcCEgwG9CoSxZmg/SkV0GlyDq8VV7
+cqvP1LG+VwO3RWH9RH08mc5KnIIX6GmY8V9f6AZ6oHCRC31TKMvs7lW1xZ5YiOIT
+Ao+qTKcEUkq97PbHFMeT7lNJePLL5gG1jtcK2BrDae3Ro2tLtwIMN6oAg6FPzDib
+kFNzl2mUcti3GDj6VP+Qz8LS9KEq7F4TvfKC3ZgyPcsFsxw7l03tj3DUphmK/Emd
+Jt/KxEVd
+=IqQw
+-----END PGP SIGNATURE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/website/www/signatures/roundup-2.2.0.tar.gz.asc	Mon May 29 18:42:08 2023 -0400
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCgAdFiEEQR41S10a8mEl1iEiHy3Qy3VqdtgFAmLOSO4ACgkQHy3Qy3Vq
+dthDlA//RFpw6qqlzW0tpam8Y/Sg5xyk8uuon/UUgjBBNv4pWJsg93aWRVLsBLQt
+2UuXSx4KuO46tX62mCo4wy7N93a0BMTuSu0UZX9svSbEudANj6mIWHOJd1CiBs6H
+eS1l0xJs/barIt1bP7mDY1vPMxb2Y0LFMAoZU8l938RUtoRQQt5kXHJJQbasM4J7
+pQjT/lXtD6vVKAcactfQKj+HdVhgt97ZP1ANFBB9rUrwa+b6E4peIgO61ueXKAtv
+GFQyKS2pv7khgw3VF0DB09JdyksAUr7Opj0p8mlK+s8l7ttjQ0ecPx8gpHv8Cgjr
+ZsaR1mH1tW/RPoOc70w86AQ07+kNrnPN/3ox62fO1ZjJo/ase3+ynS4p6WuM34l3
+hwDs989eJ+8oYdm8v2bk+jCHA8sGluC1y/YnpLG6LTn1ubrSBx1wTdvYMthZUlmn
+l9lNwCIrKzhS1jrDZZ2dTBcLpsB5fXi+q5hPCKgtWcDyzXD5EFtaTA1XGr3dMh/0
+jSoguw+vx3xE6EuAwoB2n+noUcZpoqwNGOhw7o15fOD8HZnGYn77i3z2SwW4TZhM
+JmKaTELAHotPXx6DGSkNfrxLLoLg0/UlqS1Ur2CTVBesueIwcGVET1XW1n9qt2Jp
+8MdN8tNofaThvWWz2WKkbJScRlGf9a/AkZT2iTQA/hRYNP66CU0=
+=XiE+
+-----END PGP SIGNATURE-----

Roundup Issue Tracker: http://roundup-tracker.org/