diff options
Diffstat (limited to 'lib/gitlab/x509/tag.rb')
-rw-r--r-- | lib/gitlab/x509/tag.rb | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/lib/gitlab/x509/tag.rb b/lib/gitlab/x509/tag.rb index ad85b200130..cf24e6f62bd 100644 --- a/lib/gitlab/x509/tag.rb +++ b/lib/gitlab/x509/tag.rb @@ -4,37 +4,16 @@ require 'digest' module Gitlab module X509 - class Tag + class Tag < Gitlab::SignedTag include Gitlab::Utils::StrongMemoize - def initialize(raw_tag) - @raw_tag = raw_tag - end - def signature - signature = X509::Signature.new(signature_text, signed_text, @raw_tag.tagger.email, Time.at(@raw_tag.tagger.date.seconds)) - - return if signature.verified_signature.nil? - - signature - end - - private - - def signature_text - @raw_tag.message.slice(@raw_tag.message.index("-----BEGIN SIGNED MESSAGE-----")..-1) - rescue StandardError - nil - end - - def signed_text - # signed text is reconstructed as long as there is no specific gitaly function - %{object #{@raw_tag.target_commit.id} -type commit -tag #{@raw_tag.name} -tagger #{@raw_tag.tagger.name} <#{@raw_tag.tagger.email}> #{@raw_tag.tagger.date.seconds} #{@raw_tag.tagger.timezone} + strong_memoize(:signature) do + super -#{@raw_tag.message.gsub(/-----BEGIN SIGNED MESSAGE-----(.*)-----END SIGNED MESSAGE-----/m, "")}} + signature = X509::Signature.new(signature_text, signed_text, @tag.tagger.email, Time.at(@tag.tagger.date.seconds)) + signature unless signature.verified_signature.nil? + end end end end |