Sha256: 120c75218afd3830fcc9627d86ef07527cad44fd6e176a0706544b472b3f48c3

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

require "ba_upload/version"
require "openssl"

if OpenSSL::VERSION >= '3.0.0' && defined?(OpenSSL::Provider)
  # import legacy
  OpenSSL::Provider.load("legacy")
end

module BaUpload
  def self.export_certificate(file_path:, passphrase:)
    cert = OpenSSL::PKCS12.new(File.read(file_path), passphrase)
    {
      key: Tempfile.new(['key','.pem']).tap{|f| f.write(cert.key.to_s); f.flush},
      cert: Tempfile.new(['cert','.pem']).tap{|f| f.write(cert.certificate.to_s); f.flush},
      ca_cert: Tempfile.new(['ca_cert','.pem']).tap{|f| f.write(cert.ca_certs.reverse.join("\n")); f.flush }
    }
  end

  def self.open_connection(file_path:, passphrase:)
    cert = BaUpload.export_certificate(file_path: file_path, passphrase: passphrase)
    BaUpload::Connection.new(cert[:key], cert[:cert], cert[:ca_cert])
  end

  def self.open(file_path:, passphrase:, &block)
    conn = BaUpload.open_connection(file_path: file_path, passphrase: passphrase)
    block.call(conn)
  ensure
    conn.shutdown
  end
end

require 'ba_upload/connection'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ba_upload-0.5.0 lib/ba_upload.rb