Class: Gitlab::Ssh::Signature

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

Constant Summary collapse

GIT_NAMESPACE =
'git'

Instance Method Summary collapse

Constructor Details

#initialize(signature_text, signed_text, signer, committer_email) ⇒ Signature

Returns a new instance of Signature.



14
15
16
17
18
19
# File 'lib/gitlab/ssh/signature.rb', line 14

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

Instance Method Details

#key_fingerprintObject



46
47
48
# File 'lib/gitlab/ssh/signature.rb', line 46

def key_fingerprint
  strong_memoize(:key_fingerprint) { signature&.public_key&.fingerprint }
end

#signed_by_keyObject



38
39
40
41
42
43
44
# File 'lib/gitlab/ssh/signature.rb', line 38

def signed_by_key
  strong_memoize(:signed_by_key) do
    next unless key_fingerprint

    Key.signing.find_by_fingerprint_sha256(key_fingerprint)
  end
end

#verification_statusObject



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

def verification_status
  strong_memoize(:verification_status) do
    next :unverified unless all_attributes_present?
    next :verified_system if verified_by_gitlab?
    next :unverified unless valid_signature_blob?
    next :unknown_key unless signed_by_key
    next :other_user unless committer
    next :other_user unless signed_by_key.user == committer

    if signed_by_user_email_verified?
      :verified
    else
      :unverified
    end
  end
end