diff options
author | Alexis Reigel <mail@koffeinfrei.org> | 2017-06-15 10:16:50 +0300 |
---|---|---|
committer | Alexis Reigel <mail@koffeinfrei.org> | 2017-07-27 16:42:53 +0300 |
commit | 8c4b6a32fcc5786383904fa1d5cf8b317bec7a7f (patch) | |
tree | 12b0f04e57b4d5d076ec1715f7d2d2f34dce81d1 | |
parent | 69e511c4c2a0409fa69658cf95bf5c4072b2b2d0 (diff) |
bail if the commit has no signature
-rw-r--r-- | app/models/commit.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/gpg/commit.rb | 6 | ||||
-rw-r--r-- | spec/lib/gitlab/gpg/commit_spec.rb | 6 |
3 files changed, 11 insertions, 7 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index 6c5556902ec..ed8b9a79a7a 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -242,11 +242,7 @@ class Commit cached_signature = GpgSignature.find_by(commit_sha: sha) return cached_signature if cached_signature.present? - gpg_commit = Gitlab::Gpg::Commit.new(self) - - return unless gpg_commit.has_signature? - - @signature = gpg_commit.signature + @signature = Gitlab::Gpg::Commit.new(self).signature end def revert_branch_name diff --git a/lib/gitlab/gpg/commit.rb b/lib/gitlab/gpg/commit.rb index f60e5125c13..f363652745f 100644 --- a/lib/gitlab/gpg/commit.rb +++ b/lib/gitlab/gpg/commit.rb @@ -10,10 +10,12 @@ module Gitlab end def has_signature? - @signature_text && @signed_text + !!(@signature_text && @signed_text) end def signature + return unless has_signature? + Gitlab::Gpg.using_tmp_keychain do # first we need to get the keyid from the signature to query the gpg # key belonging to the keyid. @@ -43,7 +45,7 @@ module Gitlab project: commit.project, gpg_key: gpg_key, gpg_key_primary_keyid: gpg_key&.primary_keyid, - valid_signature: !!(gpg_key && verified_signature&.valid?) + valid_signature: !!(gpg_key && verified_signature.valid?) ) end end diff --git a/spec/lib/gitlab/gpg/commit_spec.rb b/spec/lib/gitlab/gpg/commit_spec.rb index 8b1747eebcc..c4d92b8bbbf 100644 --- a/spec/lib/gitlab/gpg/commit_spec.rb +++ b/spec/lib/gitlab/gpg/commit_spec.rb @@ -4,6 +4,12 @@ RSpec.describe Gitlab::Gpg::Commit do describe '#signature' do let!(:project) { create :project, :repository, path: 'sample-project' } + context 'unisgned commit' do + it 'returns nil' do + expect(described_class.new(project.commit).signature).to be_nil + end + end + context 'known public key' do it 'returns a valid signature' do gpg_key = create :gpg_key, key: GpgHelpers::User1.public_key |