summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/gpg_key.rb19
-rw-r--r--lib/gitlab/gpg.rb7
2 files changed, 5 insertions, 21 deletions
diff --git a/app/models/gpg_key.rb b/app/models/gpg_key.rb
index 110ff4ee59c..ed09b44027c 100644
--- a/app/models/gpg_key.rb
+++ b/app/models/gpg_key.rb
@@ -20,8 +20,7 @@ class GpgKey < ActiveRecord::Base
format: {
with: /\A#{KEY_PREFIX}((?!#{KEY_PREFIX})(?!#{KEY_SUFFIX}).)+#{KEY_SUFFIX}\Z/m,
message: "is invalid. A valid public GPG key begins with '#{KEY_PREFIX}' and ends with '#{KEY_SUFFIX}'"
- },
- unless: :parent_id?
+ }
validates :fingerprint,
presence: true,
@@ -37,9 +36,9 @@ class GpgKey < ActiveRecord::Base
# the error about the fingerprint
unless: -> { errors.has_key?(:key) }
- before_validation :extract_fingerprint, :extract_primary_keyid, unless: :parent_id?
+ before_validation :extract_fingerprint, :extract_primary_keyid
after_commit :update_invalid_gpg_signatures, on: :create
- after_save :generate_subkeys, unless: :parent_id?
+ after_create :generate_subkeys
def primary_keyid
super&.upcase
@@ -49,10 +48,6 @@ class GpgKey < ActiveRecord::Base
super&.upcase
end
- def key
- parent_id? ? parent.key : super
- end
-
def key=(value)
super(value&.strip)
end
@@ -119,13 +114,7 @@ class GpgKey < ActiveRecord::Base
gpg_subkeys = Gitlab::Gpg.subkeys_from_key(key)
gpg_subkeys[primary_keyid].each do |subkey_data|
- unless subkeys.where(fingerprint: subkey_data[:fingerprint]).exists?
- subkeys.create!(
- user: user,
- primary_keyid: subkey_data[:keyid],
- fingerprint: subkey_data[:fingerprint]
- )
- end
+ subkeys.create!(keyid: subkey_data[:keyid], fingerprint: subkey_data[:fingerprint])
end
end
end
diff --git a/lib/gitlab/gpg.rb b/lib/gitlab/gpg.rb
index be22a9e0fe2..343bf54a6ae 100644
--- a/lib/gitlab/gpg.rb
+++ b/lib/gitlab/gpg.rb
@@ -43,12 +43,7 @@ module Gitlab
raw_keys.each_with_object(grouped_subkeys).each do |raw_key, subkeys|
primary_subkey_id = raw_key.primary_subkey.keyid
- raw_key.subkeys.each do |subkey|
- # Skip if current subkey is a master key
- next if primary_subkey_id == subkey.keyid
- # Skip if it isn't a sign key
- next if subkey.capability.exclude?(:sign)
-
+ raw_key.subkeys[1..-1].each do |subkey|
subkeys[primary_subkey_id] << { keyid: subkey.keyid, fingerprint: subkey.fingerprint }
end
end