class HTTPClient::JRubySSLSocket::TrustStoreLoader
def add(cert_source)
def add(cert_source) return if cert_source == :default if cert_source.respond_to?(:to_pem) pem = cert_source.to_pem load_pem(pem) elsif File.directory?(cert_source) warn("#{cert_source}: directory not yet supported") return else pem = nil File.read(cert_source).each_line do |line| case line when /-----BEGIN CERTIFICATE-----/ pem = '' when /-----END CERTIFICATE-----/ load_pem(pem) # keep parsing in case where multiple certificates in a file else if pem pem << line end end end end end
def initialize
def initialize @trust_store = KeyStore.getInstance('JKS') @trust_store.load(nil) @size = 0 end
def load_pem(pem)
def load_pem(pem) cert = PEMUtils.read_certificate(pem) @size += 1 @trust_store.setCertificateEntry("cert_#{@size}", cert) end
def trust_store
def trust_store if @size == 0 nil else @trust_store end end