summaryrefslogtreecommitdiff
path: root/lib/gitlab/gpg
diff options
context:
space:
mode:
authorRubén Dávila <ruben@gitlab.com>2017-09-27 19:45:19 -0500
committerRubén Dávila <ruben@gitlab.com>2017-10-05 08:25:27 -0500
commit9b4990a4d71b057f0fec14399cd1f2a421901963 (patch)
treee6e522b10f17325d0a8fcc86a2020210f285086b /lib/gitlab/gpg
parenta41e7e0105e238161ba697ebf26d8554ae59d295 (diff)
downloadgitlab-ce-9b4990a4d71b057f0fec14399cd1f2a421901963.tar.gz
Associate GgpSignature with GpgKeySubkey if comes from a subkey
Additionally we're delegating missing method calls on GpgKeySubkey to GpgKey since most of the info required when verifying a signature is found on GpgKey which is the parent of GpgKeySubkey
Diffstat (limited to 'lib/gitlab/gpg')
-rw-r--r--lib/gitlab/gpg/commit.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/gitlab/gpg/commit.rb b/lib/gitlab/gpg/commit.rb
index 40274e13918..5cbc836314f 100644
--- a/lib/gitlab/gpg/commit.rb
+++ b/lib/gitlab/gpg/commit.rb
@@ -43,7 +43,7 @@ module Gitlab
# key belonging to the keyid.
# This way we can add the key to the temporary keychain and extract
# the proper signature.
- gpg_key = GpgKey.find_with_subkeys(verified_signature.fingerprint)
+ gpg_key = find_gpg_key(verified_signature.fingerprint)
if gpg_key
Gitlab::Gpg::CurrentKeyChain.add(gpg_key.key)
@@ -74,7 +74,7 @@ module Gitlab
commit_sha: @commit.sha,
project: @commit.project,
gpg_key: gpg_key,
- gpg_key_primary_keyid: gpg_key&.primary_keyid || verified_signature.fingerprint,
+ gpg_key_primary_keyid: gpg_keyid(gpg_key) || verified_signature.fingerprint,
gpg_key_user_name: user_infos[:name],
gpg_key_user_email: user_infos[:email],
verification_status: verification_status
@@ -98,6 +98,16 @@ module Gitlab
def user_infos(gpg_key)
gpg_key&.verified_user_infos&.first || gpg_key&.user_infos&.first || {}
end
+
+ def gpg_keyid(gpg_key)
+ return nil unless gpg_key
+
+ gpg_key.is_a?(GpgKey) ? gpg_key.primary_keyid : gpg_key.keyid
+ end
+
+ def find_gpg_key(keyid)
+ GpgKey.find_by(primary_keyid: keyid) || GpgKeySubkey.find_by(keyid: keyid)
+ end
end
end
end