Class: Gitlab::Gpg::Signature

Inherits:
Object
  • Object
show all
Includes:
Utils::StrongMemoize, SignatureType
Defined in:
lib/gitlab/gpg/signature.rb

Constant Summary

Constants included from SignatureType

SignatureType::TYPES

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signature_text, signed_text, signer, email, preloaded_gpg_key: nil) ⇒ Signature

Returns a new instance of Signature.



9
10
11
12
13
14
15
# File 'lib/gitlab/gpg/signature.rb', line 9

def initialize(signature_text, signed_text, signer, email, preloaded_gpg_key: nil)
  @signature_text = signature_text
  @signed_text = signed_text
  @signer = signer
  @email = email
  @preloaded_gpg_key = preloaded_gpg_key
end

Instance Attribute Details

#emailObject (readonly)

Returns the value of attribute email.



17
18
19
# File 'lib/gitlab/gpg/signature.rb', line 17

def email
  @email
end

#signature_textObject (readonly)

Returns the value of attribute signature_text.



17
18
19
# File 'lib/gitlab/gpg/signature.rb', line 17

def signature_text
  @signature_text
end

#signed_textObject (readonly)

Returns the value of attribute signed_text.



17
18
19
# File 'lib/gitlab/gpg/signature.rb', line 17

def signed_text
  @signed_text
end

#signerObject (readonly)

Returns the value of attribute signer.



17
18
19
# File 'lib/gitlab/gpg/signature.rb', line 17

def signer
  @signer
end

Instance Method Details

#fingerprintObject



57
58
59
# File 'lib/gitlab/gpg/signature.rb', line 57

def fingerprint
  verified_signature&.fingerprint
end

#gpg_keyObject



49
50
51
52
53
54
# File 'lib/gitlab/gpg/signature.rb', line 49

def gpg_key
  return @preloaded_gpg_key if @preloaded_gpg_key
  return unless fingerprint

  find_gpg_key(fingerprint)
end

#gpg_key_primary_keyidObject



45
46
47
# File 'lib/gitlab/gpg/signature.rb', line 45

def gpg_key_primary_keyid
  gpg_key&.keyid || fingerprint
end

#typeObject



19
20
21
# File 'lib/gitlab/gpg/signature.rb', line 19

def type
  :gpg
end

#user_infosObject



23
24
25
# File 'lib/gitlab/gpg/signature.rb', line 23

def user_infos
  gpg_key&.verified_user_infos&.first || gpg_key&.user_infos&.first || {}
end

#verification_statusObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/gitlab/gpg/signature.rb', line 27

def verification_status
  using_keychain do
    break :verified_system if verified_by_gitlab?
    break :multiple_signatures if multiple_signatures?
    break :unknown_key unless gpg_key
    break :unverified_key unless gpg_key.verified?
    break :unverified unless verified_signature&.valid?

    if gpg_key.verified_and_belongs_to_email?(email)
      :verified
    elsif gpg_key.user.all_emails.include?(email)
      :same_user_different_email
    else
      :other_user
    end
  end
end