Rev 6262: (jelmer) Support verifying signatures on remote repositories. (Jelmer in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

Patch Queue Manager pqm at pqm.ubuntu.com
Tue Nov 15 18:08:37 UTC 2011


At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 6262 [merge]
revision-id: pqm at pqm.ubuntu.com-20111115180837-v38l0bf3uh02pe7p
parent: pqm at pqm.ubuntu.com-20111115174334-fgh3i5i0cv0vrroz
parent: jelmer at samba.org-20111115172202-inumr89vw3eo5ffg
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2011-11-15 18:08:37 +0000
message:
  (jelmer) Support verifying signatures on remote repositories. (Jelmer
   Vernooij)
modified:
  bzrlib/gpg.py                  gpg.py-20051017065112-8654536d415dacc6
  bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/per_repository/test_signatures.py test_signatures.py-20111010140248-mdiotjn81vw9p7yb-1
  doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/gpg.py'
--- a/bzrlib/gpg.py	2011-09-16 10:41:45 +0000
+++ b/bzrlib/gpg.py	2011-11-15 15:27:38 +0000
@@ -105,7 +105,7 @@
         all_verifiable = True
         for rev_id in revisions:
             verification_result, uid =\
-                                repository.verify_revision(rev_id,self)
+                repository.verify_revision_signature(rev_id,self)
             result.append([rev_id, verification_result, uid])
             count[verification_result] += 1
             if verification_result != SIGNATURE_VALID:
@@ -358,7 +358,7 @@
         all_verifiable = True
         for rev_id in revisions:
             verification_result, uid =\
-                                repository.verify_revision(rev_id,self)
+                repository.verify_revision_signature(rev_id, self)
             result.append([rev_id, verification_result, uid])
             count[verification_result] += 1
             if verification_result != SIGNATURE_VALID:

=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py	2011-10-14 13:56:45 +0000
+++ b/bzrlib/log.py	2011-11-15 15:27:38 +0000
@@ -341,7 +341,7 @@
     from bzrlib import gpg
 
     gpg_strategy = gpg.GPGStrategy(None)
-    result = repo.verify_revision(rev_id, gpg_strategy)
+    result = repo.verify_revision_signature(rev_id, gpg_strategy)
     if result[0] == gpg.SIGNATURE_VALID:
         return "valid signature from {0}".format(result[1])
     if result[0] == gpg.SIGNATURE_KEY_MISSING:

=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2011-09-18 14:57:54 +0000
+++ b/bzrlib/remote.py	2011-11-15 15:27:38 +0000
@@ -2007,6 +2007,11 @@
         self._ensure_real()
         return self._real_repository.has_signature_for_revision_id(revision_id)
 
+    def verify_revision_signature(self, revision_id, gpg_strategy):
+        self._ensure_real()
+        return self._real_repository.verify_revision_signature(
+            revision_id, gpg_strategy)
+
     def item_keys_introduced_by(self, revision_ids, _files_pb=None):
         self._ensure_real()
         return self._real_repository.item_keys_introduced_by(revision_ids,

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2011-11-08 20:00:30 +0000
+++ b/bzrlib/repository.py	2011-11-15 15:27:38 +0000
@@ -1188,7 +1188,7 @@
         self.store_revision_signature(gpg_strategy, plaintext, revision_id)
 
     @needs_read_lock
-    def verify_revision(self, revision_id, gpg_strategy):
+    def verify_revision_signature(self, revision_id, gpg_strategy):
         """Verify the signature on a revision.
         
         :param revision_id: the revision to verify

=== modified file 'bzrlib/tests/per_repository/test_signatures.py'
--- a/bzrlib/tests/per_repository/test_signatures.py	2011-11-13 14:07:38 +0000
+++ b/bzrlib/tests/per_repository/test_signatures.py	2011-11-15 17:22:02 +0000
@@ -28,17 +28,17 @@
 
 class TestSignatures(per_repository.TestCaseWithRepository):
 
+    def setUp(self):
+        super(TestSignatures, self).setUp()
+        if not self.repository_format.supports_revision_signatures:
+            raise tests.TestNotApplicable(
+                "repository does not support signing revisions")
+
 # TODO 20051003 RBC:
 # compare the gpg-to-sign info for a commit with a ghost and
 #     an identical tree without a ghost
 # fetch missing should rewrite the TOC of weaves to list newly available parents.
 
-    def setUp(self):
-        super(TestSignatures, self).setUp()
-        if not self.repository_format.supports_revision_signatures:
-            raise tests.TestNotApplicable(
-                "repository does not support signing revisions")
-
     def test_sign_existing_revision(self):
         wt = self.make_branch_and_tree('.')
         wt.commit("base", allow_pointless=True, rev_id='A')
@@ -100,6 +100,32 @@
         self.assertEqual(repo.get_signature_text('A'),
                          d2.open_repository().get_signature_text('A'))
 
+    def test_verify_revision_signature_not_signed(self):
+        wt = self.make_branch_and_tree('.')
+        wt.commit("base", allow_pointless=True, rev_id='A')
+        strategy = gpg.LoopbackGPGStrategy(None)
+        self.assertEquals(
+            (gpg.SIGNATURE_NOT_SIGNED, None),
+            wt.branch.repository.verify_revision_signature('A', strategy))
+
+    def test_verify_revision_signature(self):
+        wt = self.make_branch_and_tree('.')
+        wt.commit("base", allow_pointless=True, rev_id='A')
+        strategy = gpg.LoopbackGPGStrategy(None)
+        repo = wt.branch.repository
+        self.addCleanup(repo.lock_write().unlock)
+        repo.start_write_group()
+        repo.sign_revision('A', strategy)
+        repo.commit_write_group()
+        self.assertEqual('-----BEGIN PSEUDO-SIGNED CONTENT-----\n' +
+                         Testament.from_revision(repo,
+                         'A').as_short_text() +
+                         '-----END PSEUDO-SIGNED CONTENT-----\n',
+                         repo.get_signature_text('A'))
+        self.assertEquals(
+            (gpg.SIGNATURE_VALID, None, ),
+            repo.verify_revision_signature('A', strategy))
+
 
 class TestUnsupportedSignatures(per_repository.TestCaseWithRepository):
 

=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt	2011-11-14 04:46:48 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt	2011-11-15 17:22:02 +0000
@@ -32,6 +32,9 @@
 .. Fixes for situations where bzr would previously crash or give incorrect
    or undesirable results.
 
+* Support verifying signatures on remote repositories.
+  (Jelmer Vernooij, #889694)
+
 Documentation
 *************
 
@@ -43,6 +46,9 @@
 .. Changes that may require updates in plugins or other code that uses
    bzrlib.
 
+* ``Repository.verify_revision`` has been renamed to
+  ``Repository.verify_revision_signature``. (Jelmer Vernooij)
+
 Internals
 *********
 




More information about the bazaar-commits mailing list