{"action":"created","comment":{"url":"https://api.github.com/repos/borgbackup/borg/pulls/comments/60834927","id":60834927,"diff_hunk":"@@ -730,6 +742,24 @@ def identify_key(self, repository):\n         cdata = repository.get(next(self.chunks.iteritems())[0])\n         return key_factory(repository, cdata)\n \n+    def integrity_verification(self):\n+        logger.info('Starting integrity verification...')\n+        pi = ProgressIndicatorPercent(total=len(self.chunks), msg=\"Verifying data %6.2f%%\", step=0.01, same_line=True)\n+        count = 0\n+        for chunk_id, (refcount, *_) in self.chunks.iteritems():\n+            pi.show()\n+            if not refcount:\n+                continue\n+            encrypted_data = self.repository.get(chunk_id)\n+            try:\n+                _, data = self.key.decrypt(chunk_id, encrypted_data)\n+            except IntegrityError as integrity_error:\n+                self.error_found = True\n+                logger.error('chunk %s, integrity error: %s', hexlify(chunk_id), integrity_error)\n+            count += 1\n+        pi.finish()\n+        logger.info('Finished integrity verification, verified %d chunks.', count)","path":"borg/archive.py","position":57,"original_position":57,"commit_id":"e189fdb95f214ad6ba83847cbff82ad216573eec","original_commit_id":"e189fdb95f214ad6ba83847cbff82ad216573eec","user":{"login":"ThomasWaldmann","id":356103,"avatar_url":"https://avatars.githubusercontent.com/u/356103?v=3","gravatar_id":"","url":"https://api.github.com/users/ThomasWaldmann","html_url":"https://github.com/ThomasWaldmann","followers_url":"https://api.github.com/users/ThomasWaldmann/followers","following_url":"https://api.github.com/users/ThomasWaldmann/following{/other_user}","gists_url":"https://api.github.com/users/ThomasWaldmann/gists{/gist_id}","starred_url":"https://api.github.com/users/ThomasWaldmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThomasWaldmann/subscriptions","organizations_url":"https://api.github.com/users/ThomasWaldmann/orgs","repos_url":"https://api.github.com/users/ThomasWaldmann/repos","events_url":"https://api.github.com/users/ThomasWaldmann/events{/privacy}","received_events_url":"https://api.github.com/users/ThomasWaldmann/received_events","type":"User","site_admin":false},"body":"you say \"verified\" here, that could be misunderstood as \"successfully verified\" and contradict the error msgs above.","created_at":"2016-04-23T21:03:18Z","updated_at":"2016-04-23T21:03:18Z","html_url":"https://github.com/borgbackup/borg/pull/975#discussion_r60834927","pull_request_url":"https://api.github.com/repos/borgbackup/borg/pulls/975","_links":{"self":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/comments/60834927"},"html":{"href":"https://github.com/borgbackup/borg/pull/975#discussion_r60834927"},"pull_request":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/975"}}},"pull_request":{"url":"https://api.github.com/repos/borgbackup/borg/pulls/975","id":67618007,"html_url":"https://github.com/borgbackup/borg/pull/975","diff_url":"https://github.com/borgbackup/borg/pull/975.diff","patch_url":"https://github.com/borgbackup/borg/pull/975.patch","issue_url":"https://api.github.com/repos/borgbackup/borg/issues/975","number":975,"state":"open","locked":false,"title":"check: support integrity verification","user":{"login":"enkore","id":1330164,"avatar_url":"https://avatars.githubusercontent.com/u/1330164?v=3","gravatar_id":"","url":"https://api.github.com/users/enkore","html_url":"https://github.com/enkore","followers_url":"https://api.github.com/users/enkore/followers","following_url":"https://api.github.com/users/enkore/following{/other_user}","gists_url":"https://api.github.com/users/enkore/gists{/gist_id}","starred_url":"https://api.github.com/users/enkore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enkore/subscriptions","organizations_url":"https://api.github.com/users/enkore/orgs","repos_url":"https://api.github.com/users/enkore/repos","events_url":"https://api.github.com/users/enkore/events{/privacy}","received_events_url":"https://api.github.com/users/enkore/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-04-23T20:42:19Z","updated_at":"2016-04-23T21:03:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c861ca6cb21e09cd4d5347e80ac5c8b55be762d6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/borgbackup/borg/pulls/975/commits","review_comments_url":"https://api.github.com/repos/borgbackup/borg/pulls/975/comments","review_comment_url":"https://api.github.com/repos/borgbackup/borg/pulls/comments{/number}","comments_url":"https://api.github.com/repos/borgbackup/borg/issues/975/comments","statuses_url":"https://api.github.com/repos/borgbackup/borg/statuses/e189fdb95f214ad6ba83847cbff82ad216573eec","head":{"label":"enkore:feature/paranoid-check","ref":"feature/paranoid-check","sha":"e189fdb95f214ad6ba83847cbff82ad216573eec","user":{"login":"enkore","id":1330164,"avatar_url":"https://avatars.githubusercontent.com/u/1330164?v=3","gravatar_id":"","url":"https://api.github.com/users/enkore","html_url":"https://github.com/enkore","followers_url":"https://api.github.com/users/enkore/followers","following_url":"https://api.github.com/users/enkore/following{/other_user}","gists_url":"https://api.github.com/users/enkore/gists{/gist_id}","starred_url":"https://api.github.com/users/enkore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enkore/subscriptions","organizations_url":"https://api.github.com/users/enkore/orgs","repos_url":"https://api.github.com/users/enkore/repos","events_url":"https://api.github.com/users/enkore/events{/privacy}","received_events_url":"https://api.github.com/users/enkore/received_events","type":"User","site_admin":false},"repo":{"id":53583744,"name":"borg","full_name":"enkore/borg","owner":{"login":"enkore","id":1330164,"avatar_url":"https://avatars.githubusercontent.com/u/1330164?v=3","gravatar_id":"","url":"https://api.github.com/users/enkore","html_url":"https://github.com/enkore","followers_url":"https://api.github.com/users/enkore/followers","following_url":"https://api.github.com/users/enkore/following{/other_user}","gists_url":"https://api.github.com/users/enkore/gists{/gist_id}","starred_url":"https://api.github.com/users/enkore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enkore/subscriptions","organizations_url":"https://api.github.com/users/enkore/orgs","repos_url":"https://api.github.com/users/enkore/repos","events_url":"https://api.github.com/users/enkore/events{/privacy}","received_events_url":"https://api.github.com/users/enkore/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/enkore/borg","description":"Dev fork","fork":true,"url":"https://api.github.com/repos/enkore/borg","forks_url":"https://api.github.com/repos/enkore/borg/forks","keys_url":"https://api.github.com/repos/enkore/borg/keys{/key_id}","collaborators_url":"https://api.github.com/repos/enkore/borg/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/enkore/borg/teams","hooks_url":"https://api.github.com/repos/enkore/borg/hooks","issue_events_url":"https://api.github.com/repos/enkore/borg/issues/events{/number}","events_url":"https://api.github.com/repos/enkore/borg/events","assignees_url":"https://api.github.com/repos/enkore/borg/assignees{/user}","branches_url":"https://api.github.com/repos/enkore/borg/branches{/branch}","tags_url":"https://api.github.com/repos/enkore/borg/tags","blobs_url":"https://api.github.com/repos/enkore/borg/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/enkore/borg/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/enkore/borg/git/refs{/sha}","trees_url":"https://api.github.com/repos/enkore/borg/git/trees{/sha}","statuses_url":"https://api.github.com/repos/enkore/borg/statuses/{sha}","languages_url":"https://api.github.com/repos/enkore/borg/languages","stargazers_url":"https://api.github.com/repos/enkore/borg/stargazers","contributors_url":"https://api.github.com/repos/enkore/borg/contributors","subscribers_url":"https://api.github.com/repos/enkore/borg/subscribers","subscription_url":"https://api.github.com/repos/enkore/borg/subscription","commits_url":"https://api.github.com/repos/enkore/borg/commits{/sha}","git_commits_url":"https://api.github.com/repos/enkore/borg/git/commits{/sha}","comments_url":"https://api.github.com/repos/enkore/borg/comments{/number}","issue_comment_url":"https://api.github.com/repos/enkore/borg/issues/comments{/number}","contents_url":"https://api.github.com/repos/enkore/borg/contents/{+path}","compare_url":"https://api.github.com/repos/enkore/borg/compare/{base}...{head}","merges_url":"https://api.github.com/repos/enkore/borg/merges","archive_url":"https://api.github.com/repos/enkore/borg/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/enkore/borg/downloads","issues_url":"https://api.github.com/repos/enkore/borg/issues{/number}","pulls_url":"https://api.github.com/repos/enkore/borg/pulls{/number}","milestones_url":"https://api.github.com/repos/enkore/borg/milestones{/number}","notifications_url":"https://api.github.com/repos/enkore/borg/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/enkore/borg/labels{/name}","releases_url":"https://api.github.com/repos/enkore/borg/releases{/id}","deployments_url":"https://api.github.com/repos/enkore/borg/deployments","created_at":"2016-03-10T12:45:08Z","updated_at":"2016-04-06T21:28:16Z","pushed_at":"2016-04-23T20:41:41Z","git_url":"git://github.com/enkore/borg.git","ssh_url":"git@github.com:enkore/borg.git","clone_url":"https://github.com/enkore/borg.git","svn_url":"https://github.com/enkore/borg","homepage":"","size":3667,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"borgbackup:master","ref":"master","sha":"65f442dc8daeddde8df8b0055872087e6d53e268","user":{"login":"borgbackup","id":12418060,"avatar_url":"https://avatars.githubusercontent.com/u/12418060?v=3","gravatar_id":"","url":"https://api.github.com/users/borgbackup","html_url":"https://github.com/borgbackup","followers_url":"https://api.github.com/users/borgbackup/followers","following_url":"https://api.github.com/users/borgbackup/following{/other_user}","gists_url":"https://api.github.com/users/borgbackup/gists{/gist_id}","starred_url":"https://api.github.com/users/borgbackup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/borgbackup/subscriptions","organizations_url":"https://api.github.com/users/borgbackup/orgs","repos_url":"https://api.github.com/users/borgbackup/repos","events_url":"https://api.github.com/users/borgbackup/events{/privacy}","received_events_url":"https://api.github.com/users/borgbackup/received_events","type":"Organization","site_admin":false},"repo":{"id":35517126,"name":"borg","full_name":"borgbackup/borg","owner":{"login":"borgbackup","id":12418060,"avatar_url":"https://avatars.githubusercontent.com/u/12418060?v=3","gravatar_id":"","url":"https://api.github.com/users/borgbackup","html_url":"https://github.com/borgbackup","followers_url":"https://api.github.com/users/borgbackup/followers","following_url":"https://api.github.com/users/borgbackup/following{/other_user}","gists_url":"https://api.github.com/users/borgbackup/gists{/gist_id}","starred_url":"https://api.github.com/users/borgbackup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/borgbackup/subscriptions","organizations_url":"https://api.github.com/users/borgbackup/orgs","repos_url":"https://api.github.com/users/borgbackup/repos","events_url":"https://api.github.com/users/borgbackup/events{/privacy}","received_events_url":"https://api.github.com/users/borgbackup/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/borgbackup/borg","description":"Deduplicating backup program with compression and authenticated encryption.","fork":false,"url":"https://api.github.com/repos/borgbackup/borg","forks_url":"https://api.github.com/repos/borgbackup/borg/forks","keys_url":"https://api.github.com/repos/borgbackup/borg/keys{/key_id}","collaborators_url":"https://api.github.com/repos/borgbackup/borg/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/borgbackup/borg/teams","hooks_url":"https://api.github.com/repos/borgbackup/borg/hooks","issue_events_url":"https://api.github.com/repos/borgbackup/borg/issues/events{/number}","events_url":"https://api.github.com/repos/borgbackup/borg/events","assignees_url":"https://api.github.com/repos/borgbackup/borg/assignees{/user}","branches_url":"https://api.github.com/repos/borgbackup/borg/branches{/branch}","tags_url":"https://api.github.com/repos/borgbackup/borg/tags","blobs_url":"https://api.github.com/repos/borgbackup/borg/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/borgbackup/borg/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/borgbackup/borg/git/refs{/sha}","trees_url":"https://api.github.com/repos/borgbackup/borg/git/trees{/sha}","statuses_url":"https://api.github.com/repos/borgbackup/borg/statuses/{sha}","languages_url":"https://api.github.com/repos/borgbackup/borg/languages","stargazers_url":"https://api.github.com/repos/borgbackup/borg/stargazers","contributors_url":"https://api.github.com/repos/borgbackup/borg/contributors","subscribers_url":"https://api.github.com/repos/borgbackup/borg/subscribers","subscription_url":"https://api.github.com/repos/borgbackup/borg/subscription","commits_url":"https://api.github.com/repos/borgbackup/borg/commits{/sha}","git_commits_url":"https://api.github.com/repos/borgbackup/borg/git/commits{/sha}","comments_url":"https://api.github.com/repos/borgbackup/borg/comments{/number}","issue_comment_url":"https://api.github.com/repos/borgbackup/borg/issues/comments{/number}","contents_url":"https://api.github.com/repos/borgbackup/borg/contents/{+path}","compare_url":"https://api.github.com/repos/borgbackup/borg/compare/{base}...{head}","merges_url":"https://api.github.com/repos/borgbackup/borg/merges","archive_url":"https://api.github.com/repos/borgbackup/borg/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/borgbackup/borg/downloads","issues_url":"https://api.github.com/repos/borgbackup/borg/issues{/number}","pulls_url":"https://api.github.com/repos/borgbackup/borg/pulls{/number}","milestones_url":"https://api.github.com/repos/borgbackup/borg/milestones{/number}","notifications_url":"https://api.github.com/repos/borgbackup/borg/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/borgbackup/borg/labels{/name}","releases_url":"https://api.github.com/repos/borgbackup/borg/releases{/id}","deployments_url":"https://api.github.com/repos/borgbackup/borg/deployments","created_at":"2015-05-12T23:10:47Z","updated_at":"2016-04-23T14:54:08Z","pushed_at":"2016-04-23T20:57:44Z","git_url":"git://github.com/borgbackup/borg.git","ssh_url":"git@github.com:borgbackup/borg.git","clone_url":"https://github.com/borgbackup/borg.git","svn_url":"https://github.com/borgbackup/borg","homepage":"https://borgbackup.github.io/","size":4481,"stargazers_count":1094,"watchers_count":1094,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":89,"mirror_url":null,"open_issues_count":152,"forks":89,"open_issues":152,"watchers":1094,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/975"},"html":{"href":"https://github.com/borgbackup/borg/pull/975"},"issue":{"href":"https://api.github.com/repos/borgbackup/borg/issues/975"},"comments":{"href":"https://api.github.com/repos/borgbackup/borg/issues/975/comments"},"review_comments":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/975/comments"},"review_comment":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/borgbackup/borg/pulls/975/commits"},"statuses":{"href":"https://api.github.com/repos/borgbackup/borg/statuses/e189fdb95f214ad6ba83847cbff82ad216573eec"}}}}