jruby-openssl 0.8.0.pre2 → 0.8.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -35,8 +35,10 @@ lib/1.9/openssl/x509.rb
35
35
  lib/shared/jopenssl
36
36
  lib/shared/jopenssl.jar
37
37
  lib/shared/jruby-openssl.rb
38
+ lib/shared/openssl
38
39
  lib/shared/openssl.rb
39
40
  lib/shared/jopenssl/version.rb
41
+ lib/shared/openssl/pkcs12.rb
40
42
  test/1.8
41
43
  test/1.9
42
44
  test/cert_with_ec_pk.cer
Binary file
@@ -1,5 +1,5 @@
1
1
  module Jopenssl
2
2
  module Version
3
- VERSION = "0.8.0.pre2"
3
+ VERSION = "0.8.0.pre3"
4
4
  end
5
5
  end
@@ -0,0 +1,50 @@
1
+ require 'java'
2
+
3
+ module OpenSSL
4
+ class PKCS12
5
+ java_import java.io.StringReader
6
+ java_import java.io.StringBufferInputStream
7
+ java_import java.security.cert.CertificateFactory
8
+ java_import java.security.KeyStore
9
+ java_import java.io.ByteArrayOutputStream
10
+ java_import org.bouncycastle.openssl.PEMReader
11
+
12
+ java.security.Security.add_provider(org.bouncycastle.jce.provider.BouncyCastleProvider.new)
13
+
14
+ def self.create(pass, name, key, cert)
15
+ pkcs12 = self.new(pass, name, key, cert)
16
+ pkcs12.generate
17
+ pkcs12
18
+ end
19
+
20
+ attr_reader :key, :certificate
21
+
22
+ def initialize(pass, name, key, cert)
23
+ @pass = pass
24
+ @name = name
25
+ @key = key
26
+ @certificate = cert
27
+ end
28
+
29
+ def generate
30
+ key_reader = StringReader.new(key.to_pem)
31
+ key_pair = PEMReader.new(key_reader).read_object
32
+
33
+ cert_input_stream = StringBufferInputStream.new(certificate.to_pem)
34
+ certs = CertificateFactory.get_instance("X.509").generate_certificates(cert_input_stream)
35
+
36
+ store = KeyStore.get_instance("PKCS12", "BC")
37
+ store.load(nil, nil)
38
+ store.set_key_entry(@name, key_pair.get_private, nil, certs.to_array(Java::java.security.cert.Certificate[certs.size].new))
39
+
40
+ pkcs12_output_stream = ByteArrayOutputStream.new
41
+ store.store(pkcs12_output_stream, @pass.to_java.to_char_array)
42
+
43
+ @der = String.from_java_bytes(pkcs12_output_stream.to_byte_array)
44
+ end
45
+
46
+ def to_der
47
+ @der
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jruby-openssl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.pre2
4
+ version: 0.8.0.pre3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -85,6 +85,7 @@ files:
85
85
  - lib/shared/jruby-openssl.rb
86
86
  - lib/shared/openssl.rb
87
87
  - lib/shared/jopenssl/version.rb
88
+ - lib/shared/openssl/pkcs12.rb
88
89
  - test/cert_with_ec_pk.cer
89
90
  - test/test_all.rb
90
91
  - test/test_certificate.rb