Sha256: fc1b4340029599e1de4a60241b8c240f691634e6a23347f133f9a3636e7dce83

Contents?: true

Size: 1.44 KB

Versions: 11

Compression:

Stored size: 1.44 KB

Contents

require 'java'

module OpenSSL
  class PKCS12
    java_import java.io.StringReader
    java_import java.io.StringBufferInputStream
    java_import java.security.cert.CertificateFactory
    java_import java.security.KeyStore
    java_import java.io.ByteArrayOutputStream
    java_import org.bouncycastle.openssl.PEMReader

    java.security.Security.add_provider(org.bouncycastle.jce.provider.BouncyCastleProvider.new)

    def self.create(pass, name, key, cert)
      pkcs12 = self.new(pass, name, key, cert)
      pkcs12.generate
      pkcs12
    end

    attr_reader :key, :certificate

    def initialize(pass, name, key, cert)
      @pass = pass
      @name = name
      @key = key
      @certificate = cert
    end

    def generate
      key_reader = StringReader.new(key.to_pem)
      key_pair = PEMReader.new(key_reader).read_object

      cert_input_stream = StringBufferInputStream.new(certificate.to_pem)
      certs = CertificateFactory.get_instance("X.509").generate_certificates(cert_input_stream)

      store = KeyStore.get_instance("PKCS12", "BC")
      store.load(nil, nil)
      store.set_key_entry(@name, key_pair.get_private, nil, certs.to_array(Java::java.security.cert.Certificate[certs.size].new))

      pkcs12_output_stream = ByteArrayOutputStream.new
      store.store(pkcs12_output_stream, @pass.to_java.to_char_array)

      @der = String.from_java_bytes(pkcs12_output_stream.to_byte_array)
    end

    def to_der
      @der
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
jruby-openssl-0.8.6 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.5 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.4 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.2 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.1 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.0 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.0.pre3 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.8.0.pre1 lib/shared/openssl/pkcs12.rb
jruby-openssl-maven-0.7.6.1 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.7.7 lib/shared/openssl/pkcs12.rb
jruby-openssl-0.7.6.1 lib/shared/openssl/pkcs12.rb