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) ⇒ Signature

Returns a new instance of Signature.



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

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

Instance Attribute Details

#emailObject (readonly)

Returns the value of attribute email.



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

def email
  @email
end

#signature_textObject (readonly)

Returns the value of attribute signature_text.



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

def signature_text
  @signature_text
end

#signed_textObject (readonly)

Returns the value of attribute signed_text.



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

def signed_text
  @signed_text
end

#signerObject (readonly)

Returns the value of attribute signer.



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

def signer
  @signer
end

Instance Method Details

#fingerprintObject



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

def fingerprint
  verified_signature&.fingerprint
end

#gpg_keyObject



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

def gpg_key
  return unless fingerprint

  find_gpg_key(fingerprint)
end

#gpg_key_primary_keyidObject



40
41
42
# File 'lib/gitlab/gpg/signature.rb', line 40

def gpg_key_primary_keyid
  gpg_key&.keyid || fingerprint
end

#typeObject



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

def type
  :gpg
end

#verification_statusObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gitlab/gpg/signature.rb', line 22

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