async-rspec 1.3.1 → 1.4.0

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.
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