jruby-openssl 0.5.2 → 0.6

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 (45) hide show
  1. data/History.txt +27 -0
  2. data/Manifest.txt +100 -0
  3. data/Rakefile +71 -0
  4. data/lib/jopenssl.jar +0 -0
  5. data/lib/jopenssl/version.rb +1 -1
  6. data/lib/openssl/bn.rb +1 -3
  7. data/lib/openssl/cipher.rb +15 -17
  8. data/lib/openssl/digest.rb +1 -3
  9. data/test/cert_with_ec_pk.cer +27 -0
  10. data/test/fixture/ca_path/72fa7371.0 +19 -0
  11. data/test/fixture/ca_path/verisign.pem +19 -0
  12. data/test/fixture/common.pem +48 -0
  13. data/test/fixture/max.pem +29 -0
  14. data/test/fixture/purpose/b70a5bc1.0 +24 -0
  15. data/test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234 +0 -0
  16. data/test/fixture/purpose/ca/ca_config.rb +37 -0
  17. data/test/fixture/purpose/ca/cacert.pem +24 -0
  18. data/test/fixture/purpose/ca/newcerts/2_cert.pem +19 -0
  19. data/test/fixture/purpose/ca/newcerts/3_cert.pem +19 -0
  20. data/test/fixture/purpose/ca/private/cakeypair.pem +30 -0
  21. data/test/fixture/purpose/ca/serial +1 -0
  22. data/test/fixture/purpose/cacert.pem +24 -0
  23. data/test/fixture/purpose/scripts/gen_cert.rb +127 -0
  24. data/test/fixture/purpose/scripts/gen_csr.rb +50 -0
  25. data/test/fixture/purpose/scripts/init_ca.rb +66 -0
  26. data/test/fixture/purpose/sslclient.pem +19 -0
  27. data/test/fixture/purpose/sslclient/csr.pem +10 -0
  28. data/test/fixture/purpose/sslclient/keypair.pem +15 -0
  29. data/test/fixture/purpose/sslclient/sslclient.pem +19 -0
  30. data/test/fixture/purpose/sslserver.pem +19 -0
  31. data/test/fixture/purpose/sslserver/csr.pem +10 -0
  32. data/test/fixture/purpose/sslserver/keypair.pem +15 -0
  33. data/test/fixture/purpose/sslserver/sslserver.pem +19 -0
  34. data/test/fixture/verisign.pem +19 -0
  35. data/test/fixture/verisign_c3.pem +14 -0
  36. data/test/openssl/test_cipher.rb +22 -0
  37. data/test/openssl/test_pkcs7.rb +1 -0
  38. data/test/openssl/test_ssl.rb +2 -0
  39. data/test/openssl/test_x509ext.rb +21 -0
  40. data/test/openssl/test_x509name.rb +16 -0
  41. data/test/test_cipher.rb +20 -6
  42. data/test/test_integration.rb +43 -4
  43. data/test/test_parse_certificate.rb +20 -0
  44. data/test/test_x509store.rb +155 -0
  45. metadata +37 -3
@@ -1,3 +1,30 @@
1
+ == 0.6
2
+
3
+ - This is a recommended upgrade to jruby-openssl. A security problem
4
+ involving peer certificate verification was found where failed
5
+ verification silently did nothing, making affected applications
6
+ vulnerable to attackers. Attackers could lead a client application
7
+ to believe that a secure connection to a rogue SSL server is
8
+ legitimate. Attackers could also penetrate client-validated SSL
9
+ server applications with a dummy certificate. Your application would
10
+ be vulnerable if you're using the 'net/https' library with
11
+ OpenSSL::SSL::VERIFY_PEER mode and any version of jruby-openssl
12
+ prior to 0.6. Thanks to NaHi (NAKAMURA Hiroshi) for finding the
13
+ problem and providing the fix. See
14
+ http://www.jruby.org/2009/12/07/vulnerability-in-jruby-openssl.html
15
+ for details.
16
+ - This release addresses CVE-2009-4123 which was reserved for the
17
+ above vulnerability.
18
+ - Many fixes from NaHi, including issues related to certificate
19
+ verification and certificate store purpose verification.
20
+ - implement OpenSSL::X509::Store#set_default_paths
21
+ - MRI compat. fix: OpenSSL::X509::Store#add_file
22
+ - Fix nsCertType handling.
23
+ - Fix Cipher#key_len for DES-EDE3: 16 should be 24.
24
+ - Modified test expectations around Cipher#final.
25
+ - Public keys are lazily instantiated when the
26
+ X509::Certificate#public_key method is called (Dave Garcia)
27
+
1
28
  == 0.5.2
2
29
 
3
30
  * Multiple bugs fixed:
@@ -0,0 +1,100 @@
1
+ Rakefile
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ License.txt
6
+ lib/jopenssl.jar
7
+ lib/bcmail-jdk14-139.jar
8
+ lib/bcprov-jdk14-139.jar
9
+ lib/jopenssl
10
+ lib/jopenssl.jar
11
+ lib/openssl
12
+ lib/openssl.rb
13
+ lib/jopenssl/version.rb
14
+ lib/openssl/bn.rb
15
+ lib/openssl/buffering.rb
16
+ lib/openssl/cipher.rb
17
+ lib/openssl/digest.rb
18
+ lib/openssl/dummy.rb
19
+ lib/openssl/dummyssl.rb
20
+ lib/openssl/ssl.rb
21
+ lib/openssl/x509.rb
22
+ test/cert_with_ec_pk.cer
23
+ test/fixture
24
+ test/openssl
25
+ test/pkcs7_mime_enveloped.message
26
+ test/pkcs7_mime_signed.message
27
+ test/pkcs7_multipart_signed.message
28
+ test/ref
29
+ test/test_cipher.rb
30
+ test/test_integration.rb
31
+ test/test_java.rb
32
+ test/test_java_attribute.rb
33
+ test/test_java_bio.rb
34
+ test/test_java_mime.rb
35
+ test/test_java_pkcs7.rb
36
+ test/test_java_smime.rb
37
+ test/test_openssl.rb
38
+ test/test_openssl_x509.rb
39
+ test/test_parse_certificate.rb
40
+ test/test_pkey.rb
41
+ test/test_x509store.rb
42
+ test/ut_eof.rb
43
+ test/fixture/ca_path
44
+ test/fixture/cacert.pem
45
+ test/fixture/cert_localhost.pem
46
+ test/fixture/common.pem
47
+ test/fixture/localhost_keypair.pem
48
+ test/fixture/max.pem
49
+ test/fixture/purpose
50
+ test/fixture/verisign.pem
51
+ test/fixture/verisign_c3.pem
52
+ test/fixture/ca_path/72fa7371.0
53
+ test/fixture/ca_path/verisign.pem
54
+ test/fixture/purpose/b70a5bc1.0
55
+ test/fixture/purpose/ca
56
+ test/fixture/purpose/cacert.pem
57
+ test/fixture/purpose/scripts
58
+ test/fixture/purpose/sslclient
59
+ test/fixture/purpose/sslclient.pem
60
+ test/fixture/purpose/sslserver
61
+ test/fixture/purpose/sslserver.pem
62
+ test/fixture/purpose/ca/ca_config.rb
63
+ test/fixture/purpose/ca/cacert.pem
64
+ test/fixture/purpose/ca/newcerts
65
+ test/fixture/purpose/ca/PASSWD_OF_CA_KEY_IS_1234
66
+ test/fixture/purpose/ca/private
67
+ test/fixture/purpose/ca/serial
68
+ test/fixture/purpose/ca/newcerts/2_cert.pem
69
+ test/fixture/purpose/ca/newcerts/3_cert.pem
70
+ test/fixture/purpose/ca/private/cakeypair.pem
71
+ test/fixture/purpose/scripts/gen_cert.rb
72
+ test/fixture/purpose/scripts/gen_csr.rb
73
+ test/fixture/purpose/scripts/init_ca.rb
74
+ test/fixture/purpose/sslclient/csr.pem
75
+ test/fixture/purpose/sslclient/keypair.pem
76
+ test/fixture/purpose/sslclient/sslclient.pem
77
+ test/fixture/purpose/sslserver/csr.pem
78
+ test/fixture/purpose/sslserver/keypair.pem
79
+ test/fixture/purpose/sslserver/sslserver.pem
80
+ test/openssl/ssl_server.rb
81
+ test/openssl/test_asn1.rb
82
+ test/openssl/test_cipher.rb
83
+ test/openssl/test_digest.rb
84
+ test/openssl/test_hmac.rb
85
+ test/openssl/test_ns_spki.rb
86
+ test/openssl/test_pair.rb
87
+ test/openssl/test_pkcs7.rb
88
+ test/openssl/test_pkey_rsa.rb
89
+ test/openssl/test_ssl.rb
90
+ test/openssl/test_x509cert.rb
91
+ test/openssl/test_x509crl.rb
92
+ test/openssl/test_x509ext.rb
93
+ test/openssl/test_x509name.rb
94
+ test/openssl/test_x509req.rb
95
+ test/openssl/test_x509store.rb
96
+ test/openssl/utils.rb
97
+ test/ref/a.out
98
+ test/ref/compile.rb
99
+ test/ref/pkcs1
100
+ test/ref/pkcs1.c
@@ -0,0 +1,71 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ MANIFEST = FileList["Rakefile", "History.txt", "Manifest.txt", "README.txt", "License.txt", "lib/jopenssl.jar", "lib/**/*", "test/**/*"]
5
+ BC_JARS = FileList["lib/bc*.jar"]
6
+
7
+ task :default => [:java_compile, :test]
8
+
9
+ def java_classpath_arg # myriad of ways to discover JRuby classpath
10
+ begin
11
+ cpath = Java::java.lang.System.getProperty('java.class.path').split(File::PATH_SEPARATOR)
12
+ cpath += Java::java.lang.System.getProperty('sun.boot.class.path').split(File::PATH_SEPARATOR)
13
+ jruby_cpath = cpath.compact.join(File::PATH_SEPARATOR)
14
+ rescue => e
15
+ end
16
+ unless jruby_cpath
17
+ jruby_cpath = ENV['JRUBY_PARENT_CLASSPATH'] || ENV['JRUBY_HOME'] &&
18
+ FileList["#{ENV['JRUBY_HOME']}/lib/*.jar"].join(File::PATH_SEPARATOR)
19
+ end
20
+ bc_jars = BC_JARS.join(File::PATH_SEPARATOR)
21
+ jruby_cpath ? "-cp #{jruby_cpath}#{File::PATH_SEPARATOR}#{bc_jars}" : "-cp #{bc_jars}"
22
+ end
23
+
24
+ desc "Compile the native Java code."
25
+ task :java_compile do
26
+ mkdir_p "pkg/classes"
27
+
28
+ File.open("pkg/compile_options", "w") do |f|
29
+ f << "-target 1.5 -source 1.5 -Xlint:unchecked -Xlint:deprecation -d pkg/classes"
30
+ end
31
+
32
+ File.open("pkg/compile_classpath", "w") do |f|
33
+ f << java_classpath_arg
34
+ end
35
+
36
+ File.open("pkg/compile_sourcefiles", "w") do |f|
37
+ f << FileList['src/java/**/*.java'].join(' ')
38
+ end
39
+
40
+ sh "javac @pkg/compile_options @pkg/compile_classpath @pkg/compile_sourcefiles"
41
+ File.open("pkg/classes/manifest.mf", "w") {|f| f.puts "Class-Path: #{BC_JARS.map{|f| File.basename(f) }.join(' ')}"}
42
+ sh "jar cfm lib/jopenssl.jar pkg/classes/manifest.mf -C pkg/classes/ ."
43
+ end
44
+ file "lib/jopenssl.jar" => :java_compile
45
+
46
+ task :more_clean do
47
+ rm_f FileList['lib/jopenssl.jar']
48
+ end
49
+ task :clean => :more_clean
50
+
51
+ File.open("Manifest.txt", "w") {|f| MANIFEST.each {|n| f.puts n } }
52
+
53
+ require File.dirname(__FILE__) + "/lib/jopenssl/version"
54
+ begin
55
+ require 'hoe'
56
+ Hoe.spec("jruby-openssl") do |p|
57
+ p.version = Jopenssl::Version::VERSION
58
+ p.rubyforge_name = "jruby-extras"
59
+ p.url = "http://jruby-extras.rubyforge.org/jruby-openssl"
60
+ p.author = "Ola Bini and JRuby contributors"
61
+ p.email = "ola.bini@gmail.com"
62
+ p.summary = "OpenSSL add-on for JRuby"
63
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
64
+ p.description = p.paragraphs_of('README.txt', 0...1).join("\n\n")
65
+ p.test_globs = ENV["TEST"] || ["test/test_*.rb"]
66
+ end.spec.dependencies.delete_if { |dep| dep.name == "hoe" }
67
+ rescue LoadError
68
+ puts "You really need Hoe installed to be able to package this gem"
69
+ rescue => e
70
+ puts "ignoring error while loading hoe: #{e.to_s}"
71
+ end
Binary file
@@ -1,5 +1,5 @@
1
1
  module Jopenssl
2
2
  module Version
3
- VERSION = "0.5.2"
3
+ VERSION = "0.6"
4
4
  end
5
5
  end
@@ -14,9 +14,7 @@
14
14
  $Id: bn.rb,v 1.1 2003/07/23 16:11:30 gotoyuzo Exp $
15
15
  =end
16
16
 
17
- ##
18
- # Should we care what if somebody require this file directly?
19
- #require 'openssl'
17
+ require 'openssl'
20
18
 
21
19
  module OpenSSL
22
20
  class BN
@@ -14,12 +14,24 @@
14
14
  $Id: cipher.rb,v 1.1.2.2 2006/06/20 11:18:15 gotoyuzo Exp $
15
15
  =end
16
16
 
17
- ##
18
- # Should we care what if somebody require this file directly?
19
- #require 'openssl'
17
+ require 'openssl'
20
18
 
21
19
  module OpenSSL
22
20
  module Cipher
21
+ class Cipher
22
+ def random_key
23
+ str = OpenSSL::Random.random_bytes(self.key_len)
24
+ self.key = str
25
+ return str
26
+ end
27
+
28
+ def random_iv
29
+ str = OpenSSL::Random.random_bytes(self.iv_len)
30
+ self.iv = str
31
+ return str
32
+ end
33
+ end
34
+
23
35
  %w(AES CAST5 BF DES IDEA RC2 RC4 RC5).each{|name|
24
36
  klass = Class.new(Cipher){
25
37
  define_method(:initialize){|*args|
@@ -40,19 +52,5 @@ module OpenSSL
40
52
  }
41
53
  const_set("AES#{keylen}", klass)
42
54
  }
43
-
44
- class Cipher
45
- def random_key
46
- str = OpenSSL::Random.random_bytes(self.key_len)
47
- self.key = str
48
- return str
49
- end
50
-
51
- def random_iv
52
- str = OpenSSL::Random.random_bytes(self.iv_len)
53
- self.iv = str
54
- return str
55
- end
56
- end
57
55
  end # Cipher
58
56
  end # OpenSSL
@@ -14,9 +14,7 @@
14
14
  $Id: digest.rb,v 1.1.2.2 2006/06/20 11:18:15 gotoyuzo Exp $
15
15
  =end
16
16
 
17
- ##
18
- # Should we care what if somebody require this file directly?
19
- #require 'openssl'
17
+ require 'openssl'
20
18
 
21
19
  module OpenSSL
22
20
  module Digest
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgTCCA2mgAwIBAgIDBbhmMA0GCSqGSIb3DQEBBQUAMIGXMQswCQYDVQQGEwJB
3
+ VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
4
+ bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR4wHAYDVQQLDBVhLXNpZ24tUHJl
5
+ bWl1bS1TaWctMDIxHjAcBgNVBAMMFWEtc2lnbi1QcmVtaXVtLVNpZy0wMjAeFw0w
6
+ OTA2MjYwOTExMzdaFw0xNDA2MjYwOTExMzdaMGAxCzAJBgNVBAYTAkFUMRcwFQYD
7
+ VQQDDA5NYXggTXVzdGVybWFubjETMBEGA1UEBAwKTXVzdGVybWFubjEMMAoGA1UE
8
+ KgwDTWF4MRUwEwYDVQQFEww3NTkzNjIxNTE2MTYwSTATBgcqhkjOPQIBBggqhkjO
9
+ PQMBAQMyAARbbFo9QvtuaQ5asz4LNXYpSq7Ey/AbNswno8CDMKD+tP39MfSUEjuY
10
+ 7yZ8T3XVYjejggHlMIIB4TATBgNVHSMEDDAKgAhN3+H/S9nJ3zAnBggrBgEFBQcB
11
+ AwEB/wQYMBYwCAYGBACORgEBMAoGCCsGAQUFBwsBMHsGCCsGAQUFBwEBBG8wbTBC
12
+ BggrBgEFBQcwAoY2aHR0cDovL3d3dy5hLXRydXN0LmF0L2NlcnRzL2Etc2lnbi1Q
13
+ cmVtaXVtLVNpZy0wMmEuY3J0MCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcC5hLXRy
14
+ dXN0LmF0L29jc3AwWQYDVR0gBFIwUDBEBgYqKAARAQswOjA4BggrBgEFBQcCARYs
15
+ aHR0cDovL3d3dy5hLXRydXN0LmF0L2RvY3MvY3AvYS1zaWduLVByZW1pdW0wCAYG
16
+ BACLMAEBMIGaBgNVHR8EgZIwgY8wgYyggYmggYaGgYNsZGFwOi8vbGRhcC5hLXRy
17
+ dXN0LmF0L291PWEtc2lnbi1QcmVtaXVtLVNpZy0wMixvPUEtVHJ1c3QsYz1BVD9j
18
+ ZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2Vy
19
+ dGlmaWNhdGlvbkF1dGhvcml0eTARBgNVHQ4ECgQIR1fr2jRYTEUwDgYDVR0PAQH/
20
+ BAQDAgbAMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBAHsrgU7+M1jpofom
21
+ DCx1sZHOX8yPodS2hJuSf0pE7TkazV7i0sZG92P5UPWhh+FdyK7Nrn07tGrLLbGG
22
+ occclVUf8wVsRipKfBjLTYXFZPddzQ/Urtf0zvUFH7wYnMaVX1k32V6R/C/mLC0l
23
+ qmn+1htPnNks/+I4uHcPKLhcXatDPfOdLjLZGLI63B6Azxsf2/gMKEOr2hvdqDIX
24
+ +bGTdwU5r/8+oPlaTbq6xLVhyr6dKSqaXOBZDk8I7lSxDC/YwOfC6yyC2gxyiZP+
25
+ LPcGEzWnwX+9oz9gwfFKTH83i1ifHEI24NGTeJeeEPqP47XSLJf7bX264Vxtq2yf
26
+ xcxpndk=
27
+ -----END CERTIFICATE-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
3
+ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
4
+ c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
5
+ MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
6
+ emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
7
+ DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
8
+ FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
9
+ UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
10
+ YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
11
+ MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
12
+ AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
13
+ pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
14
+ 13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
15
+ AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
16
+ U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
17
+ F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
18
+ oJ2daZH9
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
3
+ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
4
+ c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
5
+ MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
6
+ emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
7
+ DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
8
+ FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
9
+ UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
10
+ YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
11
+ MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
12
+ AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
13
+ pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
14
+ 13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
15
+ AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
16
+ U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
17
+ F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
18
+ oJ2daZH9
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,48 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIIgTCCB2mgAwIBAgICGuwwDQYJKoZIhvcNAQEFBQAwgeAxCzAJBgNVBAYTAkVT
3
+ MS4wLAYJKoZIhvcNAQkBFh9hY19jYW1lcmZpcm1hX2NjQGNhbWVyZmlybWEuY29t
4
+ MUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
5
+ bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGTAXBgNV
6
+ BAoTEEFDIENhbWVyZmlybWEgU0ExLTArBgNVBAMTJEFDIENhbWVyZmlybWEgQ2Vy
7
+ dGlmaWNhZG9zIENhbWVyYWxlczAeFw0wNTA0MDgxMDUxMDBaFw0wOTA0MDcxMDUx
8
+ MDBaMIIBsDELMAkGA1UEBhMCRVMxHzAdBgNVBAMTFkNlcnRpZmljYWRvIGRlIFBy
9
+ dWViYXMxIjAgBgkqhkiG9w0BCQEWE2luZm9AY2FtZXJmaXJtYS5jb20xEjAQBgNV
10
+ BAUTCTEyMzQ1Njc4WjETMBEGA1UEBBMKZGUgUHJ1ZWJhczEUMBIGA1UEKhMLQ2Vy
11
+ dGlmaWNhZG8xTjBMBgorBgEEAYGHLh4CEz5DSUYgSVZBIChWQVQgbnVtYmVyIGFz
12
+ IGJ5IGFydGljbGUgMjhoIG9mIERpcmVjdGl2ZSA3Ny8zODgvRUVDKTEbMBkGCisG
13
+ AQQBgYcuHgMTC0VTQTAwMTIzNDU2MR0wGwYDVQQKExRPIERFTU8gQUMgQ2FtZXJm
14
+ aXJtYTEeMBwGA1UECxMVT1UgREVNTyBBQyBDYW1lcmZpcm1hMR0wGwYDVQQMExRU
15
+ IERFTU8gQUMgQ2FtZXJmaXJtYTFSMFAGA1UEDRNJQ2hhbWJlcnMgb2YgQ29tbWVy
16
+ Y2UgUXVhbGlmaWVkIENlcnRpZmljYXRlOiBOYXR1cmFsIFBlcnNvbiBDQU0tUEYt
17
+ U1ctS1BTQzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwmt+Ul58DwnCmPvZ
18
+ NiLJ7nXSIGBfb5hFEph7sP4NRFCVzLDOGpzIYTJ9CR+m0LVaUVTXgeLANjw1DEPC
19
+ kplWfpQejO4/nPVfRalg2GosrmqnaN3Y1lurnpQGdCz7nLOYJdS1ME52mzau8OFZ
20
+ 1fSuM+/jHfLvABuwaLXb0OvWlVMCAwEAAaOCA/QwggPwMAwGA1UdEwEB/wQCMAAw
21
+ DgYDVR0PAQH/BAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAR
22
+ BglghkgBhvhCAQEEBAMCBaAwQgYJYIZIAYb4QgEDBDUWM1VSSTpodHRwOi8vY3Js
23
+ LmNhbWVyZmlybWEuY29tL2FjX2NhbWVyZmlybWFfY2MuY2dpPzBGBglghkgBhvhC
24
+ AQgEORY3VVJJOmh0dHA6Ly9jcHMuY2FtZXJmaXJtYS5jb20vY3BzL2FjX2NhbWVy
25
+ ZmlybWFfY2MuaHRtbDA5BglghkgBhvhCAQ0ELBYqQ2VydGlmaWNhZG8gZGUgcHJ1
26
+ ZWJhcyBzaW4gcmVzcG9uc2FiaWxpZGFkMB0GA1UdDgQWBBS0rINdIfvWilZ+sklt
27
+ abvkb9harDB4BggrBgEFBQcBAQRsMGowQAYIKwYBBQUHMAKGNGh0dHA6Ly93d3cu
28
+ Y2FtZXJmaXJtYS5jb20vY2VydHMvYWNfY2FtZXJmaXJtYV9jYy5jcnQwJgYIKwYB
29
+ BQUHMAGGGmh0dHA6Ly9vY3NwLmNhbWVyZmlybWEuY29tMIGrBgNVHSMEgaMwgaCA
30
+ FLYfTp0caJEuN3Jg4UaPWqUqMTG5oYGEpIGBMH8xCzAJBgNVBAYTAkVVMScwJQYD
31
+ VQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0
32
+ dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIwIAYDVQQDExlDaGFtYmVycyBvZiBD
33
+ b21tZXJjZSBSb290ggEFMHYGA1UdHwRvMG0wNKAyoDCGLmh0dHA6Ly9jcmwuY2Ft
34
+ ZXJmaXJtYS5jb20vYWNfY2FtZXJmaXJtYV9jYy5jcmwwNaAzoDGGL2h0dHA6Ly9j
35
+ cmwxLmNhbWVyZmlybWEuY29tL2FjX2NhbWVyZmlybWFfY2MuY3JsMB4GA1UdEQQX
36
+ MBWBE2luZm9AY2FtZXJmaXJtYS5jb20wKgYDVR0SBCMwIYEfYWNfY2FtZXJmaXJt
37
+ YV9jY0BjYW1lcmZpcm1hLmNvbTCBmgYDVR0gBIGSMIGPMIGMBg0rBgEEAYGHLgoJ
38
+ AgEBMHswPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2FtZXJmaXJtYS5jb20vY3Bz
39
+ L2FjX2NhbWVyZmlybWFfY2MuaHRtbDA4BggrBgEFBQcCAjAsGipDZXJ0aWZpY2Fk
40
+ byBkZSBwcnVlYmFzIHNpbiByZXNwb25zYWJpbGlkYWQwLwYIKwYBBQUHAQMEIzAh
41
+ MAgGBgQAjkYBATAVBgYEAI5GAQIwCxMDRVVSAgEAAgEBMA0GCSqGSIb3DQEBBQUA
42
+ A4IBAQBBfXUkreSi+Zr696+HxCpZmwhko/JmF25C3rECXvZ7L2OXEBELxiygOBpm
43
+ hs3EgRRTVA6tdWliPbI9m0Vp61qOYD566ilQspBS7MeGvNQoyyuk43EQakSCNZcl
44
+ dE6mqjXl3OT4At57vvJOnlzeidqmrPM2ULfFMBD2K6oce3PelRdOvM8stYEwqpCu
45
+ 7/jC/F+Y8ZKJTroqOYv5saHozKSooq4QP9Xd1YOFrZlh5oP7B5lpfUmphQwi/+M5
46
+ dUJywr3f+s5aaHlhkoPhNEmuhDK834PT6OekkSFCt3P/MBs71ERvSWgf1GcG+Vcm
47
+ f9cJTANAF/i6XDLRAJPsvFkNpMfc
48
+ -----END CERTIFICATE-----
@@ -0,0 +1,29 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIE4zCCA8ugAwIBAgIDBbhlMA0GCSqGSIb3DQEBBQUAMIGXMQswCQYDVQQGEwJB
3
+ VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
4
+ bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMR4wHAYDVQQLDBVhLXNpZ24tUHJl
5
+ bWl1bS1FbmMtMDIxHjAcBgNVBAMMFWEtc2lnbi1QcmVtaXVtLUVuYy0wMjAeFw0w
6
+ OTA2MjYwOTExMzZaFw0xNDA2MjYwOTExMzZaMGAxCzAJBgNVBAYTAkFUMRcwFQYD
7
+ VQQDDA5NYXggTXVzdGVybWFubjETMBEGA1UEBAwKTXVzdGVybWFubjEMMAoGA1UE
8
+ KgwDTWF4MRUwEwYDVQQFEww3NTkzNjIxNTE2MTYwgd8wDQYJKoZIhvcNAQEBBQAD
9
+ gc0AMIHJAoHBAO+1eEcrMoYJ2S2iybcqUEzIxKQ9yJJL0XRNQSrKo/bDOBibfQ3H
10
+ E/TExiivgdXG2p0UjuPO1NEFgxhT5gtdaLthV2Kuokb+vbp3mWoUGz+uHIILT2zJ
11
+ TG6Yz6sooi/ppNIagFx3qAdFes8QMAereZQp0zzphK/a21FTLk0GVHpw+DWn7NRn
12
+ ynDVY0XgFkHXS4uHSfZDhzMGXVef3+SJLQzsV8R1ThMYQeoizA7tj6hT3YeBID2E
13
+ lh86V1Z8XuznUQIDAQABo4IBsDCCAawwEwYDVR0jBAwwCoAIRyFHjpdh4x4wewYI
14
+ KwYBBQUHAQEEbzBtMEIGCCsGAQUFBzAChjZodHRwOi8vd3d3LmEtdHJ1c3QuYXQv
15
+ Y2VydHMvYS1zaWduLVByZW1pdW0tRW5jLTAyYS5jcnQwJwYIKwYBBQUHMAGGG2h0
16
+ dHA6Ly9vY3NwLmEtdHJ1c3QuYXQvb2NzcDBNBgNVHSAERjBEMEIGBiooABEBDDA4
17
+ MDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNp
18
+ Z24tdG9rZW4wgZoGA1UdHwSBkjCBjzCBjKCBiaCBhoaBg2xkYXA6Ly9sZGFwLmEt
19
+ dHJ1c3QuYXQvb3U9YS1zaWduLVByZW1pdW0tRW5jLTAyLG89QS1UcnVzdCxjPUFU
20
+ P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFzcz1laWRD
21
+ ZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MBEGA1UdDgQKBAhMueHceqw1zzAOBgNVHQ8B
22
+ Af8EBAMCBLAwCQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEASLyAbafKFN5h
23
+ 0Mkk0QQoUl4Uvl+yy2ECe/QWNmDQpd7UCw1UAKrMvR8p6OcBiTnvbvg1HnbWI3Hy
24
+ BaEhGAhb1tziWkbV93z1NQCIt8hmdqE7GEp58ptYSuzwev6rgO/RZIxI9FCQn9kJ
25
+ ruGTM8hOIkh3QEy7Mq6utquMOEO0hQSUOvZkJdaSqHAoh2I3SzsxGr3juAa61x+0
26
+ K8kW1ZgIsc0jhhb3NOyso48AqDK6oqwfiC6fp/HzSB5gycLllWrgUnMeae6Axbag
27
+ dImyOtaoxhIwZCr1tjTaQmaNK49kpvDGlIuDIQHf8uZgAoyduQfAvwiQ0llu5Ns2
28
+ AOs41se+Gg==
29
+ -----END CERTIFICATE-----
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEADCCAuigAwIBAgIBATANBgkqhkiG9w0BAQUFADBMMQswCQYDVQQGEwJKUDEa
3
+ MBgGA1UECgwRd3d3LnJ1YnktbGFuZy5vcmcxFDASBgNVBAsMC2RldmVsb3BtZW50
4
+ MQswCQYDVQQDDAJDQTAeFw0wOTExMTkxMDI5MjBaFw0yOTExMTQxMDI5MjBaMEwx
5
+ CzAJBgNVBAYTAkpQMRowGAYDVQQKDBF3d3cucnVieS1sYW5nLm9yZzEUMBIGA1UE
6
+ CwwLZGV2ZWxvcG1lbnQxCzAJBgNVBAMMAkNBMIIBIjANBgkqhkiG9w0BAQEFAAOC
7
+ AQ8AMIIBCgKCAQEA2nXhXZxXUs1Sfxqi8sReyzPHRcAHQM9RqDAGG9Nt1zYrLXwg
8
+ MmUhOr4yBeW2KAxJGxdRQSzI38jyT6mrDRBpTl/OeU9zBG4p6AtFGkoMnRvUonB3
9
+ CvgYJXhmrFjnHn34JNaRSORjaZDBmI9/fMGvaYndEM3wJ2b3jEOeizDIG60kZxA6
10
+ XQ+X7ral+aABsjomubvjEQ9dlcDhQlssKjbjaN3NZ/kL/i/75jc6rzT05XYYkj+Z
11
+ 9rPRfT+HH3c5EYLtxcRTEHVWXMC8/of7oOFgZwwI3Cx9/v1s2Z6gdJ8J0kIkEoUL
12
+ ziYsLIOmVB2tx0rKkmeivJB4PTM5QyHb7d1xUwIDAQABo4HsMIHpMA8GA1UdEwEB
13
+ /wQFMAMBAf8wMQYJYIZIAYb4QgENBCQWIlJ1YnkvT3BlblNTTCBHZW5lcmF0ZWQg
14
+ Q2VydGlmaWNhdGUwHQYDVR0OBBYEFBOZGvHkAfn+0Ct33rQ6tW2UmF5TMA4GA1Ud
15
+ DwEB/wQEAwIBBjB0BgNVHSMEbTBrgBQTmRrx5AH5/tArd960OrVtlJheU6FQpE4w
16
+ TDELMAkGA1UEBhMCSlAxGjAYBgNVBAoMEXd3dy5ydWJ5LWxhbmcub3JnMRQwEgYD
17
+ VQQLDAtkZXZlbG9wbWVudDELMAkGA1UEAwwCQ0GCAQEwDQYJKoZIhvcNAQEFBQAD
18
+ ggEBACfgSl3pA+e3JyjgS/zscaJHHNDwXIIoH0KY6pcrZnl7Zh8CW+Gdba621Lek
19
+ aAy0YhAAM9bF87QZG1+sL7B2H1oSTt7F67SwQfq079oNWjhEdV5dxBKk6XaU0R31
20
+ KXSsmLR4pMxcFdPzGM0FTiSj9FNKk2pydVySsa5jJeG0qvXVFMqsRUUwklQHl9Kx
21
+ 9GZiknt4PEGj/ThUwarhRbRjV5z7ZxXKexkangBlRWPX7TjvlpZPgLzAODG4fiRW
22
+ ZUo8Ng7QolTJuPAhlVxhdi9n5hItm6mt21RTpQcP49KoGe8x+T4EzPO0PPdCMliD
23
+ fH3udDO+bq2F8H4ts6ZJAYWFo8U=
24
+ -----END CERTIFICATE-----