jruby-openssl 0.9.5-java

Sign up to get free protection for your applications and to get access to all the features.
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: []