diff --git a/debexpo/lib/gnupg.py b/debexpo/lib/gnupg.py index 6382ac6996234bba6f4b9cb1bb9e84da5e98c4a8..40eea4f52b73ed05cf07e89c3543490f7b136765 100644 --- a/debexpo/lib/gnupg.py +++ b/debexpo/lib/gnupg.py @@ -145,7 +145,8 @@ class GnuPG(object): """ try: - (output, _) = self._run(stdin=key) + (output, _) = self._run(stdin=key, args=[ + '--import', '--import-options', 'import-show', '--dry-run']) output = unicode(output, errors='replace') keys = KeyData.read_from_gpg(output.splitlines()) for key in keys.values(): @@ -177,7 +178,7 @@ class GnuPG(object): """ args = ('--verify', signed_file) (out, return_code) = self._run(args=args, pubring=pubring) - gpg_addr_pattern = re.compile(r"^gpg: Good signature from \"(?P.+?)\s*(?:\((?P.+)\))?\s*(?:<(?P.+)>)?\"") + gpg_addr_pattern = re.compile(r"\"(?P.+?)\s*(?:\((?P.+)\))?\s*(?:<(?P.+)>)?\"") user_ids = [] for line in out.split("\n"): addr_matcher = gpg_addr_pattern.search(line) diff --git a/debexpo/tests/functional/test_my.py b/debexpo/tests/functional/test_my.py index ecc31984663786b85fc9321048efb1c7ef92d78e..cb15e303ec46ec9d3f8a0bdffd7e880a5a2e6e2a 100644 --- a/debexpo/tests/functional/test_my.py +++ b/debexpo/tests/functional/test_my.py @@ -27,18 +27,22 @@ AQD4ZLpyUg+z6kJ+8YAmHFiOD9Ixv3QVvrfpBwnBVtJZBg== _GPGKEY = """-----BEGIN PGP PUBLIC KEY BLOCK----- -mDMEW+iERRYJKwYBBAHaRw8BAQdAZN+9IfILcMWaZ5bOx4Ykmum/1ZMaxZAw1YbI -KjEWWU60J0RlYmV4cG8gdGVzdGluZyBrZXkgPGVtYWlsQGV4YW1wbGUuY29tPoiQ -BBMWCAA4FiEEdhj55Cj1+6e2+jO1NU98o/QgaL4FAlvohEUCGwMFCwkIBwIGFQoJ -CAsCBBYCAwECHgECF4AACgkQNU98o/QgaL7I+wEAjY6np4hgEfkotEM0hpOo1LGF -sWWiO1OKhi/Nfg+WOoUA/0/DEcGfclpGhpB+unaqn0dLnMKDJeZAxINji7/Lz2gH -uDgEW+iERRIKKwYBBAGXVQEFAQEHQJwX6mLJZQMkBwKbyJa0+oz15wSiYHFONGYI -s9TdseYWAwEIB4h4BBgWCAAgFiEEdhj55Cj1+6e2+jO1NU98o/QgaL4FAlvohEUC -GwwACgkQNU98o/QgaL6XtAEAl+8Pqc8q6EWTudqgynVIpdraSuBrVSaEcxffKaT3 -P6YA/0SM1Yi/F2maISv8k44MzRAdGf2yFabwsfdCH+RLD6YO -=BYiE +mDMEW/GBqhYJKwYBBAHaRw8BAQdA+6hBA4PcdcPwgMsKGQXrqwbJemLBgS1PkKZg +RFlKdKi0IHByaW1hcnkgaWQgPHByaW1hcnlAZXhhbXBsZS5vcmc+iJMEExYIADsC +GwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRVkwbu4cjBst0cc7HENHgc6HHz +3wUCW/GB7AIZAQAKCRDENHgc6HHz35EOAP9lXBb8lm72xPeMdjRL+TU83PimD0NZ +urQfnnLVZOu4tAEAqdrz/2q41mScnKJFAnQ5pan5FYlUnDR2WVp1kiFoPwu0HVRl +c3QgdXNlciA8ZW1haWxAZXhhbXBsZS5jb20+iJAEExYIADgWIQRVkwbu4cjBst0c +c7HENHgc6HHz3wUCW/GB6AIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDE +NHgc6HHz3yr6AP9MyMaz+dsOC3R/WnjE8EdM42mpf3VkKY0icS60K/Aj3QD/XkIA +qs+ItQAUoeqZM3jh0HvLwUESxm6FtCltwyGlqwW4OARb8YGqEgorBgEEAZdVAQUB +AQdANrk3qq/eP1TEWfFZqhR0vcz7YB9c5+OnvMV+xO4W3nQDAQgHiHgEGBYIACAW +IQRVkwbu4cjBst0cc7HENHgc6HHz3wUCW/GBqgIbDAAKCRDENHgc6HHz3/CHAP0c +hxes4Ebtg7N8B/BoMYwmUVvmMVmoV+ef/vqYvfm6sgEA6fKzMSXllw57UJ90Unyn +xOwJ1heEnfmgPkuiz7jFCAo= +=xgUN -----END PGP PUBLIC KEY BLOCK-----""" - _GPG_ID= '256E/F42068BE' + _GPG_ID= '256E/E871F3DF' def _setup_gpg_env(self): self.homedir = tempfile.mkdtemp() diff --git a/debexpo/tests/gpg/debian_announcement.gpg.asc b/debexpo/tests/gpg/debian_announcement.gpg.asc index ee88ea973ce7ac1a98f8cf80a5db5ac0a1121afe..8b180377d9881042b8253e87790a163b8d987bea 100644 --- a/debexpo/tests/gpg/debian_announcement.gpg.asc +++ b/debexpo/tests/gpg/debian_announcement.gpg.asc @@ -1,7 +1,6 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 - Fellow Linuxers, This is just to announce the imminent completion of a brand-new Linux release, @@ -82,31 +81,13 @@ this in the newsgroup, please don't turn it into a flamewar. :) Until later, Ian -- -- +- - -- Ian Murdock Internet: imur...@shell.portal.com The Linux Warehouse -----BEGIN PGP SIGNATURE----- -iQIzBAEBCAAdFiEEuSzBcBIwbfVk7W13FdIOf2r1tSUFAlvXATEACgkQFdIOf2r1 -tSV3uxAApxV+PFe9gP7a7cJJ5nVKvcpLKUom501TSgHnebjoxT32x5S5+/l2Lf6U -z9w9bQoggbCMF0FwoFQ/qtBJ+loFKDiz1ToZqV7gWNRYR8YxRg867c1JQ780gmBx -tq44D8UN5IRT6o2NQpmBvkTLyOo3cYScbwUarny1pPPrT+pWcrz5sO3Fw0pcPuJU -qu4S6kDZHm3sLOvgevhmBgAX5OEeZpJNP/FemV7a2wNVT4+xCwsmzMvyN3kTitKR -gCoH/n0MyGkgHupI5B6B22WTGIX6ogbSmjH4jUjr8YmRsJHBZkncjEPkGhOU5YeU -8Mizp+u6Z70N/b/A2fuqmwkA7X24FEZ1Re27V5YU+eF/23kk62LSBxGmr9NEe2eE -5HxP3+DgdszULs6t1xH9vAuSnCNlxmSNZ6fMJCsggd+mddBIRrZMSAdqgosYW/YD -qw+ydGPb6P0w6DZQZs0K7p3OB5fKjdLbXn7rl+ut70chkMtAkRvH5jYlC+QaPjmN -vwYGwv1PZPaOsIaCM8a2OzpzqePF+NFDAg0wa5gr7sxaBeMgtvwwCe2+Ufq1JY6R -X7/ubU4/LKouiUvUlkx94ywzMMUu3jT5h0YKcpFNSYIdYDryKphKsfShkPL99Hc3 -xuMqR6HFZmCFLPxNue5/i/yycAAfXecXr3ZcoYVMIUl50NV7OuqIdAQBFggAHRYh -BOF57qTrR+YF2YZjLihiGOfHT5wRBQJb1wExAAoJEChiGOfHT5wRGV0A/3WvXKec -IJBQxGQt9tevYll6yPV7+fKeAWxzblL4YIM6APYgmWXfitzvt7hxmJrS5+cpMd9A -w75HtceAxeuhvK4IiQEzBAEBCAAdFiEEd8cUFd1/c7yHLW6GLs8+zl3EJqcFAlvX -ATEACgkQLs8+zl3EJqfuGAgAm7hctCl4Ol4UYaeD7RQrObX0l/GTYZTI28ffyXal -+C+oo98ifVLlnyIat3GRib3bP8U4fz8440E4UClUrPiMUfUHMff+3rNvWnXzTeQj -IqsfMycrq4cQNpLQU05H7/z4pzfDg1yY3/J92BJL+OAbO2K13pVd6/fW3rZK+H0E -htd0mj512QNH0lzIcUx2dp+4VTyRPlda+zbBn2bJaphLMkmAV2cfnRQ4xDjqNxGk -XKTRAtAi6oqZDskYYJoIf4UrdWzQrNE7MgDsmr/eGy/0wG5cSbuintuBoonc7agb -lefymg6+MlgapLm45sptAgjy//nWGRbGO2pYttWEZiHWcQ== -=VDty +iIoEARYIADIWIQSGVz4uSUdVmCPsPxTH4ZqYGuqOuwUCW/F80RQcZGViZXhwb0Bl +eGFtcGxlLm9yZwAKCRDH4ZqYGuqOu782AQC7bhU/2C3xzZAkuvuBpTYlGLHC/yZ2 +C8eiVvzXJ/6EJwEAlXe68PmgVrQb5/r2mTY0G3Paj4HGLIEHBMsifT5YnwY= +=6ea2 -----END PGP SIGNATURE----- diff --git a/debexpo/tests/gpg/pubring.gpg b/debexpo/tests/gpg/pubring.gpg index 881e9ee9ecf51f9f86b37d5da76b2f2049b7c141..68eee7ef28eec97afd3612e7490ebef88c3797c2 100644 Binary files a/debexpo/tests/gpg/pubring.gpg and b/debexpo/tests/gpg/pubring.gpg differ diff --git a/debexpo/tests/test_gnupg.py b/debexpo/tests/test_gnupg.py index 2da4f41c9ed54c69a77f2c8591d0b9c793f17c30..1219484f74e6646f799dd7c46cce23a1f08d4132 100644 --- a/debexpo/tests/test_gnupg.py +++ b/debexpo/tests/test_gnupg.py @@ -45,20 +45,23 @@ from debexpo.lib.gnupg import GnuPG test_gpg_key = \ """-----BEGIN PGP PUBLIC KEY BLOCK----- -mDMEW9b91RYJKwYBBAHaRw8BAQdAHtUIQWAsmPilu0JDMnLbpPQfT1i3z2IVMoDH -rhlYkO+0JWRlYmV4cG8gdGVzdGluZyA8ZGViZXhwb0BleGFtcGxlLm9yZz6IkAQT -FggAOBYhBOF57qTrR+YF2YZjLihiGOfHT5wRBQJb1v3VAhsDBQsJCAcCBhUKCQgL -AgQWAgMBAh4BAheAAAoJEChiGOfHT5wRdQIBAJ8rciR0e1PaA+LhoTWHaPSgCwvc -lNFyRk71s75+hRkhAPwPnl6QqGsOa0DyJB5saVcqPCqYFbF1usUWIQnPPRsVC7g4 -BFvW/dUSCisGAQQBl1UBBQEBB0DzrYDCp+OaNFinqKkDWcqftqq/BAFS9lq4de5g -RNytNAMBCAeIeAQYFggAIBYhBOF57qTrR+YF2YZjLihiGOfHT5wRBQJb1v3VAhsM -AAoJEChiGOfHT5wRNK8A/115pc8+OwKDy1fGXGX3l0uq1wdfiJreG/9YZddx/JTI -AQD4ZLpyUg+z6kJ+8YAmHFiOD9Ixv3QVvrfpBwnBVtJZBg== -=N+9W ------END PGP PUBLIC KEY BLOCK----- -""" - -test_gpg_key_id = '256E/C74F9C11' +mDMEW/F8GBYJKwYBBAHaRw8BAQdA6Riq9GZh/HiwtFjPcvz5i5oFzp1I8RiqxBs1 +g06oSh+0HXByaW1hcnkgaWQgPG1haW5AZXhhbXBsZS5vcmc+iJMEExYIADsCGwMF +CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQSGVz4uSUdVmCPsPxTH4ZqYGuqOuwUC +W/F8dAIZAQAKCRDH4ZqYGuqOu9GTAQCCMRbXuueDLcC4eWmMGGiAmqLzKdhGJxQe +e0k5d6wkKQEA2vdlMg9s3UFL4e8jnJPYeNpsxDaaEPr0jMLnwcBp8wa0JWRlYmV4 +cG8gdGVzdGluZyA8ZGViZXhwb0BleGFtcGxlLm9yZz6IkAQTFggAOBYhBIZXPi5J +R1WYI+w/FMfhmpga6o67BQJb8XxSAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA +AAoJEMfhmpga6o67MjUBAMYVSthPo3oKR1PpV9ebHFiSARmc2BxxL+xmdzfiRT3O +AP9JQZxCSl3awI5xos8mw2edsDWYcaS2y+RmbTLv8wR2Abg4BFvxfBgSCisGAQQB +l1UBBQEBB0Doc/H7Tyvf+6kdlnUOqY+0t3pkKYj0EOK6QFKMnlRpJwMBCAeIeAQY +FggAIBYhBIZXPi5JR1WYI+w/FMfhmpga6o67BQJb8XwYAhsMAAoJEMfhmpga6o67 +Vh8A/AxTKLqACJnSVFrO2sArc7Yt3tymB+of9JeBF6iYBbuDAP9r32J6TYFB9OSz +r1JREXlgQRuRdd5ZWSvIxKaKGVbYCw== +=BMLr +-----END PGP PUBLIC KEY BLOCK-----""" + +test_gpg_key_id = '256E/1AEA8EBB' test_gpg_key_name = 'debexpo testing' test_gpg_key_email = 'debexpo@example.org' @@ -105,10 +108,8 @@ class TestGnuPGController(TestCase): """ gnupg = self._get_gnupg() self.assertFalse(gnupg.is_unusable()) - (_, gpg_key_uids) = gnupg.parse_key_id(test_gpg_key) - (gpg_key_name, gpg_key_email) = gpg_key_uids[0] - self.assertEqual(gpg_key_name, test_gpg_key_name) - self.assertEqual(gpg_key_email, test_gpg_key_email) + (_, uids) = gnupg.parse_key_id(test_gpg_key) + self.assertTrue((test_gpg_key_name, test_gpg_key_email) in uids) def testSignatureVerification(self): """ @@ -136,7 +137,7 @@ class TestGnuPGController(TestCase): assert os.path.exists(pubring) (out, uids, status) = gnupg.verify_sig_full(signed_file, pubring) self.assertEquals(status, 0) - self.assertTrue(('debexpo testing', 'debexpo@example.org') in uids) + self.assertTrue((test_gpg_key_name, test_gpg_key_email) in uids) def testInvalidSignature(self): """