ruby-tls 1.0.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,120 +1,155 @@
1
- require 'ruby-tls'
2
-
3
-
4
- describe RubyTls do
5
- describe RubyTls::Connection do
6
- before :each do
7
- @client = RubyTls::Connection.new
8
- @server = RubyTls::Connection.new
9
-
10
- @server_started = false
11
- @server_stop = false
12
- @client_stop = false
13
-
14
- @dir = File.dirname(File.expand_path(__FILE__)) + '/'
15
- @cert_from_file = File.read(@dir + 'client.crt')
16
- end
17
-
18
- it "should verify the peer" do
19
- @server_data = []
20
- @client_data = []
21
-
22
- @client.close_cb do
23
- @client_data << 'close'
24
- @client_stop = true
25
- end
26
- @client.dispatch_cb do |data|
27
- @client_data << data
28
- end
29
- @client.transmit_cb do |data|
30
- if not @server_started
31
- @server_started = true
32
- @server.start(:server => true, :verify_peer => true)
33
- end
34
- @server.decrypt(data) unless @client_stop
35
- end
36
- @client.handshake_cb do
37
- @client_data << 'ready'
38
- end
39
-
40
- @server.close_cb do
41
- @server_data << 'close'
42
- @server_stop = true
43
- end
44
- @server.dispatch_cb do |data|
45
- @server_data << data
46
- end
47
- @server.transmit_cb do |data|
48
- @client.decrypt(data) unless @server_stop
49
- end
50
- @server.handshake_cb do
51
- @server_data << 'ready'
52
- end
53
- @server.verify_cb do |cert|
54
- @server_data << 'verify'
55
- @cert_from_server = cert
56
- true
57
- end
58
-
59
- @client.start(:private_key_file => @dir + 'client.key', :cert_chain_file => @dir + 'client.crt')
60
- @client.cleanup
61
- @server.cleanup
62
-
63
- expect(@client_data).to eq(['ready'])
64
- expect(@server_data).to eq(['verify', 'verify', 'verify', 'ready'])
65
- expect(@cert_from_server).to eq(@cert_from_file)
66
- end
67
-
68
-
69
- it "should deny the connection" do
70
- @server_data = []
71
- @client_data = []
72
-
73
- @client.close_cb do
74
- @client_data << 'close'
75
- @client_stop = true
76
- end
77
- @client.dispatch_cb do |data|
78
- @client_data << data
79
- end
80
- @client.transmit_cb do |data|
81
- if not @server_started
82
- @server_started = true
83
- @server.start(:server => true, :verify_peer => true)
84
- end
85
- @server.decrypt(data) unless @client_stop
86
- end
87
- @client.handshake_cb do
88
- @client_data << 'ready'
89
- end
90
-
91
- @server.close_cb do
92
- @server_data << 'close'
93
- @server_stop = true
94
- end
95
- @server.dispatch_cb do |data|
96
- @server_data << data
97
- end
98
- @server.transmit_cb do |data|
99
- @client.decrypt(data) unless @server_stop
100
- end
101
- @server.handshake_cb do
102
- @server_data << 'ready'
103
- end
104
- @server.verify_cb do |cert|
105
- @server_data << 'verify'
106
- @cert_from_server = cert
107
- false
108
- end
109
-
110
- @client.start(:private_key_file => @dir + 'client.key', :cert_chain_file => @dir + 'client.crt')
111
- @client.cleanup
112
- @server.cleanup
113
-
114
- expect(@client_data).to eq([])
115
- expect(@server_data).to eq(['verify', 'close', 'verify', 'close'])
116
- expect(@cert_from_server).to eq(@cert_from_file)
117
- end
118
- end
119
- end
120
-
1
+ require 'ruby-tls'
2
+
3
+
4
+ describe RubyTls do
5
+
6
+ class Client2
7
+ def initialize(client_data, dir)
8
+ @client_data = client_data
9
+ @ssl = RubyTls::SSL::Box.new(false, self, private_key: dir + 'client.key', cert_chain: dir + 'client.crt')
10
+ end
11
+
12
+ attr_reader :ssl
13
+ attr_accessor :stop
14
+ attr_accessor :server
15
+
16
+ def close_cb
17
+ @client_data << 'close'
18
+ @stop = true
19
+ end
20
+
21
+ def dispatch_cb(data)
22
+ @client_data << data
23
+ end
24
+
25
+ def transmit_cb(data)
26
+ if not @server.started
27
+ @server.started = true
28
+ @server.ssl.start
29
+ end
30
+ @server.ssl.decrypt(data) unless @stop
31
+ end
32
+
33
+ def handshake_cb
34
+ @client_data << 'ready'
35
+ end
36
+ end
37
+
38
+ describe RubyTls::SSL::Box do
39
+ before :each do
40
+ @dir = File.dirname(File.expand_path(__FILE__)) + '/'
41
+ @cert_from_file = File.read(@dir + 'client.crt')
42
+ end
43
+
44
+ it "should verify the peer" do
45
+ @server_data = []
46
+ @client_data = []
47
+
48
+
49
+ class Server2
50
+ def initialize(client, server_data)
51
+ @client = client
52
+ @server_data = server_data
53
+ @ssl = RubyTls::SSL::Box.new(true, self, verify_peer: true)
54
+ end
55
+
56
+ attr_reader :ssl
57
+ attr_accessor :started
58
+ attr_accessor :stop
59
+ attr_accessor :cert_from_server
60
+
61
+ def close_cb
62
+ @server_data << 'close'
63
+ @stop = true
64
+ end
65
+
66
+ def dispatch_cb(data)
67
+ @server_data << data
68
+ end
69
+
70
+ def transmit_cb(data)
71
+ @client.ssl.decrypt(data) unless @stop
72
+ end
73
+
74
+ def handshake_cb
75
+ @server_data << 'ready'
76
+ end
77
+
78
+ def verify_cb(cert)
79
+ @server_data << 'verify'
80
+ @cert_from_server = cert
81
+ true
82
+ end
83
+ end
84
+
85
+
86
+ @client = Client2.new(@client_data, @dir)
87
+ @server = Server2.new(@client, @server_data)
88
+ @client.server = @server
89
+
90
+ @client.ssl.start
91
+ @client.ssl.cleanup
92
+ @server.ssl.cleanup
93
+
94
+ expect(@client_data).to eq(['ready'])
95
+ expect(@server_data).to eq(['ready', 'verify', 'verify', 'verify'])
96
+ expect(@server.cert_from_server).to eq(@cert_from_file)
97
+ end
98
+
99
+
100
+ it "should deny the connection" do
101
+ @server_data = []
102
+ @client_data = []
103
+
104
+ class Server3
105
+ def initialize(client, server_data)
106
+ @client = client
107
+ @server_data = server_data
108
+ @ssl = RubyTls::SSL::Box.new(true, self, verify_peer: true)
109
+ end
110
+
111
+ attr_reader :ssl
112
+ attr_accessor :started
113
+ attr_accessor :stop
114
+ attr_accessor :cert_from_server
115
+
116
+ def close_cb
117
+ @server_data << 'close'
118
+ @stop = true
119
+ end
120
+
121
+ def dispatch_cb(data)
122
+ @server_data << data
123
+ end
124
+
125
+ def transmit_cb(data)
126
+ @client.ssl.decrypt(data) unless @stop
127
+ end
128
+
129
+ def handshake_cb
130
+ @server_data << 'ready'
131
+ end
132
+
133
+ def verify_cb(cert)
134
+ @server_data << 'verify'
135
+ @cert_from_server = cert
136
+ false
137
+ end
138
+ end
139
+
140
+ @client = Client2.new(@client_data, @dir)
141
+ @server = Server3.new(@client, @server_data)
142
+ @client.server = @server
143
+
144
+ @client.ssl.start
145
+ @client.ssl.cleanup
146
+ @server.ssl.cleanup
147
+
148
+ expect(@client_data).to eq(['ready'])
149
+ expect(@server_data).to eq(['ready', 'verify', 'close'])
150
+
151
+ expect(@server.cert_from_server).to eq(@cert_from_file)
152
+ end
153
+ end
154
+ end
155
+
metadata CHANGED
@@ -1,121 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-tls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen von Takach
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-17 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-compiler
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 0.0.2
20
15
  requirement: !ruby/object:Gem::Requirement
21
16
  requirements:
22
- - - '>='
17
+ - - ">="
23
18
  - !ruby/object:Gem::Version
24
19
  version: 0.0.2
25
- prerelease: false
26
20
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: rake
21
+ prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
- - - '>='
24
+ - - ">="
32
25
  - !ruby/object:Gem::Version
33
- version: '0'
26
+ version: 0.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: thread_safe
34
29
  requirement: !ruby/object:Gem::Requirement
35
30
  requirements:
36
- - - '>='
31
+ - - ">="
37
32
  - !ruby/object:Gem::Version
38
33
  version: '0'
39
- prerelease: false
40
34
  type: :runtime
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
35
+ prerelease: false
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - '>='
38
+ - - ">="
46
39
  - !ruby/object:Gem::Version
47
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
- - - '>='
45
+ - - ">="
51
46
  - !ruby/object:Gem::Version
52
47
  version: '0'
53
- prerelease: false
54
48
  type: :development
55
- - !ruby/object:Gem::Dependency
56
- name: yard
49
+ prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
62
57
  requirement: !ruby/object:Gem::Requirement
63
58
  requirements:
64
- - - '>='
59
+ - - ">="
65
60
  - !ruby/object:Gem::Version
66
61
  version: '0'
67
- prerelease: false
68
62
  type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
69
  description: |2
70
70
  Allows transport layers outside Ruby TCP be secured.
71
71
  email:
72
72
  - steve@cotag.me
73
73
  executables: []
74
- extensions:
75
- - ext/Rakefile
74
+ extensions: []
76
75
  extra_rdoc_files:
77
76
  - README.md
78
77
  files:
78
+ - README.md
79
79
  - lib/ruby-tls.rb
80
- - lib/ruby-tls/connection.rb
81
- - lib/ruby-tls/ext.rb
80
+ - lib/ruby-tls/ssl.rb
82
81
  - lib/ruby-tls/version.rb
83
- - Rakefile
84
82
  - ruby-tls.gemspec
85
- - README.md
86
- - EM-LICENSE
87
- - ext/tls/ssl.cpp
88
- - ext/tls/ssl.h
89
- - ext/tls/page.cpp
90
- - ext/tls/page.h
91
83
  - spec/client.crt
92
84
  - spec/client.key
93
85
  - spec/comms_spec.rb
94
86
  - spec/verify_spec.rb
95
- - ext/Rakefile
96
87
  homepage: https://github.com/cotag/ruby-tls
97
88
  licenses:
98
- - Ruby
99
- - GPL
89
+ - MIT
100
90
  metadata: {}
101
- post_install_message:
91
+ post_install_message:
102
92
  rdoc_options: []
103
93
  require_paths:
104
94
  - lib
105
95
  required_ruby_version: !ruby/object:Gem::Requirement
106
96
  requirements:
107
- - - '>='
97
+ - - ">="
108
98
  - !ruby/object:Gem::Version
109
99
  version: '0'
110
100
  required_rubygems_version: !ruby/object:Gem::Requirement
111
101
  requirements:
112
- - - '>='
102
+ - - ">="
113
103
  - !ruby/object:Gem::Version
114
104
  version: '0'
115
105
  requirements: []
116
- rubyforge_project:
117
- rubygems_version: 2.1.9
118
- signing_key:
106
+ rubyforge_project:
107
+ rubygems_version: 2.4.5
108
+ signing_key:
119
109
  specification_version: 4
120
110
  summary: Abstract TLS for Ruby
121
111
  test_files:
@@ -123,4 +113,4 @@ test_files:
123
113
  - spec/client.key
124
114
  - spec/comms_spec.rb
125
115
  - spec/verify_spec.rb
126
- has_rdoc:
116
+ has_rdoc:
data/EM-LICENSE DELETED
@@ -1,60 +0,0 @@
1
- EventMachine is copyrighted free software owned by Francis Cianfrocca
2
- (blackhedd ... gmail.com). The Owner of this software permits you to
3
- redistribute and/or modify the software under either the terms of the GPL
4
- version 2 (see the file GPL), or the conditions below ("Ruby License"):
5
-
6
- 1. You may make and give away verbatim copies of the source form of this
7
- software without restriction, provided that you retain ALL of the
8
- original copyright notices and associated disclaimers.
9
-
10
- 2. You may modify your copy of the software in any way, provided that
11
- you do at least ONE of the following:
12
-
13
- a) place your modifications in the Public Domain or otherwise
14
- make them Freely Available, such as by posting said
15
- modifications to Usenet or an equivalent medium, or by allowing
16
- the author to include your modifications in the software.
17
-
18
- b) use the modified software only within your corporation or
19
- organization.
20
-
21
- c) give non-standard binaries non-standard names, with
22
- instructions on where to get the original software distribution.
23
-
24
- d) make other distribution arrangements with the Owner.
25
-
26
- 3. You may distribute the software in object code or binary form,
27
- provided that you do at least ONE of the following:
28
-
29
- a) distribute the binaries and library files of the software,
30
- together with instructions (in a manual page or equivalent)
31
- on where to get the original distribution.
32
-
33
- b) accompany the distribution with the machine-readable source of
34
- the software.
35
-
36
- c) give non-standard binaries non-standard names, with
37
- instructions on where to get the original software distribution.
38
-
39
- d) make other distribution arrangements with the Owner.
40
-
41
- 4. You may modify and include parts of the software into any other
42
- software (possibly commercial), provided you comply with the terms in
43
- Sections 1, 2, and 3 above. But some files in the distribution
44
- are not written by the Owner, so they may be made available to you
45
- under different terms.
46
-
47
- For the list of those files and their copying conditions, see the
48
- file LEGAL.
49
-
50
- 5. The scripts and library files supplied as input to or produced as
51
- output from the software do not automatically fall under the
52
- copyright of the software, but belong to whoever generated them,
53
- and may be sold commercially, and may be aggregated with this
54
- software.
55
-
56
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
57
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
58
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
59
- PURPOSE.
60
-