Class: Gitlab::X509::Signature

Inherits:
Object
  • Object
show all
Includes:
Utils::StrongMemoize, SignatureType
Defined in:
lib/gitlab/x509/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, email, created_at) ⇒ Signature

Returns a new instance of Signature.



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

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

Instance Attribute Details

#created_atObject (readonly)

Returns the value of attribute created_at.



11
12
13
# File 'lib/gitlab/x509/signature.rb', line 11

def created_at
  @created_at
end

#signature_textObject (readonly)

Returns the value of attribute signature_text.



11
12
13
# File 'lib/gitlab/x509/signature.rb', line 11

def signature_text
  @signature_text
end

#signed_textObject (readonly)

Returns the value of attribute signed_text.



11
12
13
# File 'lib/gitlab/x509/signature.rb', line 11

def signed_text
  @signed_text
end

Instance Method Details

#signed_by_userObject



30
31
32
# File 'lib/gitlab/x509/signature.rb', line 30

def signed_by_user
  strong_memoize(:signed_by_user) { User.find_by_any_email(@email) }
end

#typeObject



20
21
22
# File 'lib/gitlab/x509/signature.rb', line 20

def type
  :x509
end

#verification_statusObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/gitlab/x509/signature.rb', line 38

def verification_status
  return :unverified if
    x509_certificate.nil? ||
      x509_certificate.revoked? ||
      certificate_subject.nil? ||
      certificate_crl.nil? ||
      !verified_signature ||
      signed_by_user.nil?

  if signed_by_user.verified_emails.include?(@email.downcase)
    return :verified if certificate_emails.find do |ce|
      ce.casecmp?(@email)
    end
  end

  :unverified
end

#verified_signatureObject



34
35
36
# File 'lib/gitlab/x509/signature.rb', line 34

def verified_signature
  strong_memoize(:verified_signature) { verified_signature? }
end

#x509_certificateObject



24
25
26
27
28
# File 'lib/gitlab/x509/signature.rb', line 24

def x509_certificate
  return if certificate_attributes.nil?

  X509Certificate.safe_create!(certificate_attributes) unless verified_signature.nil?
end