async-rspec 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48c1918366c0f12d4369e364ca892617e9a03811db3d5605e1882e4d67d35cc1
4
- data.tar.gz: 6c4a20431e847ac0091f4d7af182c47756916a1a98f9e1b4e36649ba25a0c327
3
+ metadata.gz: e3740c7d6640f8341b9c748d5d992e3fe815fb404c0096077de47f42437d9464
4
+ data.tar.gz: a0e097113adadf7e7e5483cb2bf62184af9162d2f5320c9e38b95e7f94236142
5
5
  SHA512:
6
- metadata.gz: 8a34badf61a39f8dcd4bba9851940c739083b90ae3a43defc01a060445b317ba557eef6abc771f0dee85968313ca0610d4025e502b87dd605416c40f9b932392
7
- data.tar.gz: 9e710cccf414484f6f839eb11e44befe092072ae9718a20ac2b257df8a316fa326be78e0cb7d1824f9f04cd131542b7b22a6a28dcf10b3b1cc87524159f94674
6
+ metadata.gz: 1512325a47c8ee2c63336b598b3767545a8a0e85709c7ad2f2ff81620634a3cca389e29867609127f9e9699d814a67fb5318f7e5cea7be551aa274483f240a80
7
+ data.tar.gz: fac2caaeaccc3b7206647f9a9456d106da12edd2745712d7b574ee35abee5b370abe6d8c46a92c164419c18666dcf69eb824631280b73a6b3c05c92cea796053
@@ -34,6 +34,9 @@ module Async
34
34
 
35
35
  module VerifiedContexts
36
36
  end
37
+
38
+ module HostCertificates
39
+ end
37
40
  end
38
41
 
39
42
  RSpec.shared_context SSL::CertificateAuthority do
@@ -57,7 +60,7 @@ module Async
57
60
  certificate.not_before = Time.now
58
61
  certificate.not_after = Time.now + 3600
59
62
 
60
- extension_factory = OpenSSL::X509::ExtensionFactory.new()
63
+ extension_factory = OpenSSL::X509::ExtensionFactory.new
61
64
  extension_factory.subject_certificate = certificate
62
65
  extension_factory.issuer_certificate = certificate
63
66
  certificate.add_extension extension_factory.create_extension("basicConstraints", "CA:TRUE", true)
@@ -107,6 +110,69 @@ module Async
107
110
  end
108
111
  end
109
112
 
113
+ RSpec.shared_context SSL::HostCertificates do
114
+ include_context SSL::CertificateAuthority
115
+
116
+ let(:keys) do
117
+ Hash[
118
+ hosts.collect{|name| [name, OpenSSL::PKey::RSA.new(1024)]}
119
+ ]
120
+ end
121
+
122
+ # The certificate used for actual communication:
123
+ let(:certificates) do
124
+ Hash[
125
+ hosts.collect do |name|
126
+ certificate_name = OpenSSL::X509::Name.parse("O=Test/CN=#{name}")
127
+
128
+ certificate = OpenSSL::X509::Certificate.new
129
+ certificate.subject = certificate_name
130
+ certificate.issuer = certificate_authority.subject
131
+
132
+ certificate.public_key = keys[name].public_key
133
+
134
+ certificate.serial = 2
135
+ certificate.version = 2
136
+
137
+ certificate.not_before = Time.now
138
+ certificate.not_after = Time.now + 3600
139
+
140
+ extension_factory = OpenSSL::X509::ExtensionFactory.new
141
+ extension_factory.subject_certificate = certificate
142
+ extension_factory.issuer_certificate = certificate_authority
143
+ certificate.add_extension extension_factory.create_extension("keyUsage", "digitalSignature", true)
144
+ certificate.add_extension extension_factory.create_extension("subjectKeyIdentifier", "hash")
145
+
146
+ certificate.sign certificate_authority_key, OpenSSL::Digest::SHA256.new
147
+
148
+ [name, certificate]
149
+ end
150
+ ]
151
+ end
152
+
153
+ let(:server_context) do
154
+ OpenSSL::SSL::SSLContext.new.tap do |context|
155
+ context.servername_cb = Proc.new do |socket, name|
156
+ if hosts.include? name
157
+ socket.hostname = name
158
+
159
+ OpenSSL::SSL::SSLContext.new.tap do |context|
160
+ context.cert = certificates[name]
161
+ context.key = keys[name]
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
167
+
168
+ let(:client_context) do
169
+ OpenSSL::SSL::SSLContext.new.tap do |context|
170
+ context.cert_store = certificate_store
171
+ context.verify_mode = OpenSSL::SSL::VERIFY_PEER
172
+ end
173
+ end
174
+ end
175
+
110
176
  RSpec.shared_context SSL::InvalidCertificate do
111
177
  include_context SSL::CertificateAuthority
112
178
 
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module RSpec
23
- VERSION = "1.3.1"
23
+ VERSION = "1.4.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-27 00:00:00.000000000 Z
11
+ date: 2018-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec