56 lines
1.1 KiB
Ruby
56 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Ci
|
|
module SecureFiles
|
|
class P12
|
|
include Gitlab::Utils::StrongMemoize
|
|
|
|
attr_reader :error
|
|
|
|
def initialize(filedata, password = nil)
|
|
@filedata = filedata
|
|
@password = password
|
|
end
|
|
|
|
def certificate_data
|
|
OpenSSL::PKCS12.new(@filedata, @password).certificate
|
|
rescue OpenSSL::PKCS12::PKCS12Error => err
|
|
@error = err.to_s
|
|
nil
|
|
end
|
|
strong_memoize_attr :certificate_data
|
|
|
|
def metadata
|
|
return {} unless certificate_data
|
|
|
|
{
|
|
issuer: issuer,
|
|
subject: subject,
|
|
id: serial,
|
|
expires_at: expires_at
|
|
}
|
|
end
|
|
strong_memoize_attr :metadata
|
|
|
|
private
|
|
|
|
def expires_at
|
|
certificate_data.not_before
|
|
end
|
|
|
|
def serial
|
|
certificate_data.serial.to_s
|
|
end
|
|
|
|
def issuer
|
|
X509Name.parse(certificate_data.issuer)
|
|
end
|
|
|
|
def subject
|
|
X509Name.parse(certificate_data.subject)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|