jruby-openssl 0.9.5-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/History.txt +218 -0
  3. data/License.txt +30 -0
  4. data/Mavenfile +44 -0
  5. data/README.txt +13 -0
  6. data/Rakefile +7 -0
  7. data/lib/jopenssl.jar +0 -0
  8. data/lib/jopenssl/load.rb +29 -0
  9. data/lib/jopenssl/version.rb +6 -0
  10. data/lib/jopenssl18/openssl.rb +23 -0
  11. data/lib/jopenssl18/openssl/bn.rb +35 -0
  12. data/lib/jopenssl18/openssl/buffering.rb +241 -0
  13. data/lib/jopenssl18/openssl/cipher.rb +65 -0
  14. data/lib/jopenssl18/openssl/config.rb +316 -0
  15. data/lib/jopenssl18/openssl/digest.rb +61 -0
  16. data/lib/jopenssl18/openssl/pkcs7.rb +25 -0
  17. data/lib/jopenssl18/openssl/ssl-internal.rb +179 -0
  18. data/lib/jopenssl18/openssl/ssl.rb +1 -0
  19. data/lib/jopenssl18/openssl/x509-internal.rb +153 -0
  20. data/lib/jopenssl18/openssl/x509.rb +1 -0
  21. data/lib/jopenssl19/openssl.rb +23 -0
  22. data/lib/jopenssl19/openssl/bn.rb +35 -0
  23. data/lib/jopenssl19/openssl/buffering.rb +449 -0
  24. data/lib/jopenssl19/openssl/cipher.rb +65 -0
  25. data/lib/jopenssl19/openssl/config.rb +313 -0
  26. data/lib/jopenssl19/openssl/digest.rb +72 -0
  27. data/lib/jopenssl19/openssl/ssl-internal.rb +177 -0
  28. data/lib/jopenssl19/openssl/ssl.rb +2 -0
  29. data/lib/jopenssl19/openssl/x509-internal.rb +158 -0
  30. data/lib/jopenssl19/openssl/x509.rb +2 -0
  31. data/lib/jopenssl21/openssl.rb +23 -0
  32. data/lib/jopenssl21/openssl/bn.rb +35 -0
  33. data/lib/jopenssl21/openssl/buffering.rb +449 -0
  34. data/lib/jopenssl21/openssl/cipher.rb +65 -0
  35. data/lib/jopenssl21/openssl/config.rb +313 -0
  36. data/lib/jopenssl21/openssl/digest.rb +89 -0
  37. data/lib/jopenssl21/openssl/ssl.rb +237 -0
  38. data/lib/jopenssl21/openssl/x509.rb +162 -0
  39. data/lib/jruby-openssl.rb +5 -0
  40. data/lib/openssl.rb +1 -0
  41. data/lib/openssl/bn.rb +7 -0
  42. data/lib/openssl/buffering.rb +7 -0
  43. data/lib/openssl/cipher.rb +7 -0
  44. data/lib/openssl/config.rb +7 -0
  45. data/lib/openssl/digest.rb +7 -0
  46. data/lib/openssl/pkcs12.rb +106 -0
  47. data/lib/openssl/pkcs7.rb +7 -0
  48. data/lib/openssl/ssl-internal.rb +7 -0
  49. data/lib/openssl/ssl.rb +7 -0
  50. data/lib/openssl/x509-internal.rb +7 -0
  51. data/lib/openssl/x509.rb +7 -0
  52. data/lib/org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47.jar +0 -0
  53. data/lib/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar +0 -0
  54. metadata +97 -0
@@ -0,0 +1,106 @@
1
+ require 'java'
2
+
3
+ module OpenSSL
4
+ class PKCS12
5
+ class PKCS12Error < OpenSSLError
6
+ end
7
+
8
+ java_import java.io.StringReader
9
+ java_import java.io.StringBufferInputStream
10
+ java_import java.io.ByteArrayOutputStream
11
+ java_import 'org.jruby.ext.openssl.PEMUtils'
12
+ java_import 'org.jruby.ext.openssl.SecurityHelper'
13
+
14
+ def self.create(pass, name, key, cert, ca = nil)
15
+ pkcs12 = self.new
16
+ pkcs12.generate(pass, name, key, cert, ca)
17
+ pkcs12
18
+ end
19
+
20
+ attr_reader :key, :certificate, :ca_certs
21
+
22
+ def initialize(str = nil, password = '')
23
+ return @der = nil unless str
24
+
25
+ if str.is_a?(File)
26
+ file = File.open(str.path, "rb")
27
+ @der = file.read
28
+ file.close
29
+ else
30
+ str.force_encoding(Encoding::ASCII_8BIT)
31
+ @der = str
32
+ end
33
+
34
+ p12_input_stream = StringBufferInputStream.new(@der)
35
+
36
+ store = SecurityHelper.getKeyStore("PKCS12")
37
+ store.load(p12_input_stream, password.to_java.to_char_array)
38
+
39
+ aliases = store.aliases
40
+ aliases.each do |alias_name|
41
+ if store.is_key_entry(alias_name)
42
+ if java_certificate = store.get_certificate(alias_name)
43
+ der = String.from_java_bytes(java_certificate.get_encoded)
44
+ @certificate = OpenSSL::X509::Certificate.new(der)
45
+ end
46
+
47
+ java_key = store.get_key(alias_name, password.to_java.to_char_array)
48
+ if java_key
49
+ der = String.from_java_bytes(java_key.get_encoded)
50
+ algorithm = java_key.get_algorithm
51
+ if algorithm == "RSA"
52
+ @key = OpenSSL::PKey::RSA.new(der)
53
+ elsif algorithm == "DSA"
54
+ @key = OpenSSL::PKey::DSA.new(der)
55
+ elsif algorithm == "DH"
56
+ @key = OpenSSL::PKey::DH.new(der)
57
+ elsif algorithm == "EC"
58
+ @key = OpenSSL::PKey::EC.new(der)
59
+ else
60
+ raise PKCS12Error, "Unknown key algorithm #{algorithm}"
61
+ end
62
+ end
63
+
64
+ @ca_certs = Array.new
65
+ java_ca_certs = store.get_certificate_chain(alias_name)
66
+ if java_ca_certs
67
+ java_ca_certs.each do |java_ca_cert|
68
+ der = String.from_java_bytes(java_ca_cert.get_encoded)
69
+ ruby_cert = OpenSSL::X509::Certificate.new(der)
70
+ if (ruby_cert.to_pem != @certificate.to_pem)
71
+ @ca_certs << ruby_cert
72
+ end
73
+ end
74
+ end
75
+ end
76
+ break
77
+ end
78
+ rescue java.lang.Exception => e
79
+ raise PKCS12Error, "Exception: #{e}"
80
+ end
81
+
82
+ def generate(pass, alias_name, key, cert, ca = nil)
83
+ @key, @certificate, @ca_certs = key, cert, ca
84
+
85
+ certificates = cert.to_pem
86
+ ca.each { |ca_cert| certificates << ca_cert.to_pem } if ca
87
+
88
+ begin
89
+ der_bytes = PEMUtils.generatePKCS12(
90
+ StringReader.new(key.to_pem), certificates.to_java_bytes,
91
+ alias_name, ( pass.nil? ? "" : pass ).to_java.to_char_array
92
+ )
93
+ rescue java.security.KeyStoreException, java.security.cert.CertificateException => e
94
+ raise PKCS12Error, e.message
95
+ rescue java.security.GeneralSecurityException, java.io.IOException => e
96
+ raise PKCS12Error, "Exception: #{e}"
97
+ end
98
+
99
+ @der = String.from_java_bytes(der_bytes)
100
+ end
101
+
102
+ def to_der
103
+ @der
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,7 @@
1
+ if RUBY_VERSION >= '2.1.0'
2
+ raise LoadError, "no such library in 2.1: openssl/pkcs7"
3
+ elsif RUBY_VERSION >= '1.9.0'
4
+ raise LoadError, "no such library in 1.9: openssl/pkcs7"
5
+ else
6
+ load('jopenssl18/openssl/pkcs7.rb')
7
+ end
@@ -0,0 +1,7 @@
1
+ if RUBY_VERSION >= '2.1.0'
2
+ raise LoadError, "no such library in 2.1: openssl/ssl-internal.rb"
3
+ elsif RUBY_VERSION >= '1.9.0'
4
+ load('jopenssl19/openssl/ssl-internal.rb')
5
+ else
6
+ load('jopenssl18/openssl/ssl-internal.rb')
7
+ end
@@ -0,0 +1,7 @@
1
+ if RUBY_VERSION >= '2.1.0'
2
+ load('jopenssl21/openssl/ssl.rb')
3
+ elsif RUBY_VERSION >= '1.9.0'
4
+ load('jopenssl19/openssl/ssl.rb')
5
+ else
6
+ load('jopenssl18/openssl/ssl.rb')
7
+ end
@@ -0,0 +1,7 @@
1
+ if RUBY_VERSION >= '2.1.0'
2
+ raise LoadError, "no such library in 2.1: openssl/x509-internal.rb"
3
+ elsif RUBY_VERSION >= '1.9.0'
4
+ load('jopenssl19/openssl/x509-internal.rb')
5
+ else
6
+ load('jopenssl18/openssl/x509-internal.rb')
7
+ end
@@ -0,0 +1,7 @@
1
+ if RUBY_VERSION >= '2.1.0'
2
+ load('jopenssl21/openssl/x509.rb')
3
+ elsif RUBY_VERSION >= '1.9.0'
4
+ load('jopenssl19/openssl/x509.rb')
5
+ else
6
+ load('jopenssl18/openssl/x509.rb')
7
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jruby-openssl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.5
5
+ platform: java
6
+ authors:
7
+ - Ola Bini
8
+ - JRuby contributors
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-06-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: JRuby-OpenSSL is an add-on gem for JRuby that emulates the Ruby OpenSSL native library.
15
+ email: ola.bini@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - License.txt
21
+ - Rakefile
22
+ - README.txt
23
+ - Mavenfile
24
+ - History.txt
25
+ - lib/jruby-openssl.rb
26
+ - lib/openssl.rb
27
+ - lib/jopenssl.jar
28
+ - lib/jopenssl19/openssl.rb
29
+ - lib/jopenssl19/openssl/bn.rb
30
+ - lib/jopenssl19/openssl/x509.rb
31
+ - lib/jopenssl19/openssl/cipher.rb
32
+ - lib/jopenssl19/openssl/ssl.rb
33
+ - lib/jopenssl19/openssl/config.rb
34
+ - lib/jopenssl19/openssl/digest.rb
35
+ - lib/jopenssl19/openssl/ssl-internal.rb
36
+ - lib/jopenssl19/openssl/buffering.rb
37
+ - lib/jopenssl19/openssl/x509-internal.rb
38
+ - lib/openssl/pkcs7.rb
39
+ - lib/openssl/bn.rb
40
+ - lib/openssl/x509.rb
41
+ - lib/openssl/pkcs12.rb
42
+ - lib/openssl/cipher.rb
43
+ - lib/openssl/ssl.rb
44
+ - lib/openssl/config.rb
45
+ - lib/openssl/digest.rb
46
+ - lib/openssl/ssl-internal.rb
47
+ - lib/openssl/buffering.rb
48
+ - lib/openssl/x509-internal.rb
49
+ - lib/jopenssl21/openssl.rb
50
+ - lib/jopenssl21/openssl/bn.rb
51
+ - lib/jopenssl21/openssl/x509.rb
52
+ - lib/jopenssl21/openssl/cipher.rb
53
+ - lib/jopenssl21/openssl/ssl.rb
54
+ - lib/jopenssl21/openssl/config.rb
55
+ - lib/jopenssl21/openssl/digest.rb
56
+ - lib/jopenssl21/openssl/buffering.rb
57
+ - lib/jopenssl18/openssl.rb
58
+ - lib/jopenssl18/openssl/pkcs7.rb
59
+ - lib/jopenssl18/openssl/bn.rb
60
+ - lib/jopenssl18/openssl/x509.rb
61
+ - lib/jopenssl18/openssl/cipher.rb
62
+ - lib/jopenssl18/openssl/ssl.rb
63
+ - lib/jopenssl18/openssl/config.rb
64
+ - lib/jopenssl18/openssl/digest.rb
65
+ - lib/jopenssl18/openssl/ssl-internal.rb
66
+ - lib/jopenssl18/openssl/buffering.rb
67
+ - lib/jopenssl18/openssl/x509-internal.rb
68
+ - lib/org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47.jar
69
+ - lib/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar
70
+ - lib/jopenssl/version.rb
71
+ - lib/jopenssl/load.rb
72
+ homepage: https://github.com/jruby/jruby
73
+ licenses: []
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements:
90
+ - jar org.bouncycastle:bcpkix-jdk15on, 1.47
91
+ - jar org.bouncycastle:bcprov-jdk15on, 1.47
92
+ rubyforge_project: jruby/jruby
93
+ rubygems_version: 2.1.9
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: JRuby OpenSSL
97
+ test_files: []