Module: PactBroker::Certificates::Service
Instance Method Summary
collapse
Methods included from Logging
included, log_error, log_with_tag, measure_info
Instance Method Details
#cert_store ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/pact_broker/certificates/service.rb', line 13
def cert_store
cert_store = OpenSSL::X509::Store.new
cert_store.set_default_paths
find_all_certificates.each do | certificate |
begin
logger.debug("Loading certificate for subject #{certificate.subject} and issuer #{certificate.issuer} in to cert store")
cert_store.add_cert(certificate)
rescue StandardError => e
logger.warn("Error adding certificate object #{certificate} to store", e)
end
end
cert_store
end
|
#certificates_from_config ⇒ Object
44
45
46
47
48
|
# File 'lib/pact_broker/certificates/service.rb', line 44
def certificates_from_config
PactBroker.configuration.webhook_certificates.select{| c| c[:content] || c[:path] }.collect.with_index do | certificate_config, i |
load_certificate_config(certificate_config, i)
end.flatten.compact
end
|
#certificates_from_database ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/pact_broker/certificates/service.rb', line 31
def certificates_from_database
Certificate.collect do | certificate |
split_certificate_chain(certificate.content).collect do |c|
begin
OpenSSL::X509::Certificate.new(c)
rescue StandardError => e
logger.warn("Error creating certificate object from certificate #{certificate.uuid} '#{certificate.description}'", e)
nil
end
end
end.flatten.compact
end
|
#find_all_certificates ⇒ Object
27
28
29
|
# File 'lib/pact_broker/certificates/service.rb', line 27
def find_all_certificates
certificates_from_database + certificates_from_config
end
|
#load_certificate_config(certificate_config, i) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/pact_broker/certificates/service.rb', line 50
def load_certificate_config(certificate_config, i)
begin
content = certificate_config[:content] || File.read(certificate_config[:path])
split_certificate_chain(content).collect do |c|
begin
OpenSSL::X509::Certificate.new(c)
rescue StandardError => e
logger.warn("Error creating certificate object from webhook_certificates at index #{i} with description #{certificate_config[:description]}", e)
nil
end
end
rescue StandardError => e
logger.warn("Error loading webhook_certificate at index #{i} with description #{certificate_config[:description]}", e)
nil
end
end
|
#split_certificate_chain(content) ⇒ Object
67
68
69
|
# File 'lib/pact_broker/certificates/service.rb', line 67
def split_certificate_chain(content)
content.split(/(-----END [^\-]+-----)/).each_slice(2).map(&:join).map(&:strip).select{|s| !s.empty?}
end
|