sslackey 0.6.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.
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIICzTCCAjagAwIBAgIOAgAAAAABNw9QCUY2BIQwDQYJKoZIhvcNAQEFBQAwUTEL
3
+ MAkGA1UEBhMCVVMxIDAeBgNVBAoTF0FrYW1haSBUZWNobm9sb2dpZXMgSW5jMSAw
4
+ HgYDVQQDExdBa2FtYWkgU3Vib3JkaW5hdGUgQ0EgMzAeFw0xMjA1MDIyMTAwMDha
5
+ Fw0xMzA1MDIyMTAwMDhaMIGMMQswCQYDVQQGEwJVUzEQMA4GA1UEBxMHUGhvZW5p
6
+ eDEmMCQGA1UEChMdQW1lcmljYW4gRXhwcmVzcyBUZWNobm9sb2dpZXMxETAPBgNV
7
+ BAsTCENvbnN1bWVyMRAwDgYDVQQIEwdBcml6b25hMR4wHAYDVQQDFBUqLmFtZXJp
8
+ Y2FuZXhwcmVzcy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKxhYcYS
9
+ MHXkKn8yWmV6N3Ac3eJOVfZDH6NEIaNPNgH+5Bzm5xfry8lA0QmRELQafClC8afV
10
+ JqQuP7aDVZwaSUmk0EPVGIhbKi81CzO3wc9FCxhgySsvoFwxfOQywQd5ewlU/ZNg
11
+ UKXbqR9Ba1yqJcVOq3axjxmY1OykKKqMHcaJAgMBAAGjbDBqMDkGA1UdHwQyMDAw
12
+ LqAsoCqGKGh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvQWthbWFpU3ViMy5jcmww
13
+ HQYDVR0OBBYEFP0U8j2HOCBc39gxkO3y79Eb+il+MA4GA1UdDwEB/wQEAwIFIDAN
14
+ BgkqhkiG9w0BAQUFAAOBgQCDFNSSY9NGGEZbaWx4CAZFRmwBvhcUxDWK+0tLnC3y
15
+ 5NH1+2cEAKpzK4xD8u2bONJaEchM7x6Uc4/lhFPblCX9uIqcKB8EdAuDxr7FTH0S
16
+ vofrkpwuSWkdY9FGWd0kIyl4hLIi/Fm9mE9zrmDPYkced3MvL5deZAXlL22jxiJR
17
+ Ew==
18
+ -----END CERTIFICATE-----
@@ -0,0 +1,35 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIGEzCCBPugAwIBAgIQfJwdpj3YKPYCRiHLu80CyzANBgkqhkiG9w0BAQUFADCB
3
+ vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
4
+ ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug
5
+ YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv
6
+ VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew
7
+ HhcNMTAxMTAyMDAwMDAwWhcNMTIwODE2MjM1OTU5WjCB+TETMBEGCysGAQQBgjc8
8
+ AgEDEwJVUzEZMBcGCysGAQQBgjc8AgECFAhEZWxhd2FyZTEdMBsGA1UEDxMUUHJp
9
+ dmF0ZSBPcmdhbml6YXRpb24xEDAOBgNVBAUTBzQ3NTIyODIxCzAJBgNVBAYTAlVT
10
+ MREwDwYDVQQIFAhOZXcgWW9yazERMA8GA1UEBxQITmV3IFlvcmsxFDASBgNVBAoU
11
+ C01hbmlsbGEgTExDMTMwMQYDVQQLFCpUZXJtcyBvZiB1c2UgYXQgd3d3LnZlcmlz
12
+ aWduLmNvbS9ycGEgKGMpMDUxGDAWBgNVBAMUD2FwcC5tYW5pbGxhLmNvbTCCASIw
13
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnpFmttCpcZxWFc3gQwB0pg7xEf
14
+ aZnJXYz4EBaLks/Jvr4cR3ytoXchTwTS3y2up2uW2WFvjlcKOI8HacXUtEymbiPb
15
+ c9RADCCo0G5TJ2DL7fpzOX6N3f+wDOjN//odiDDKn/AZNjtkae3t+jYglDfrYRnc
16
+ SfGL1Gw3Nj9Jf9MlRamiUzKh75QWHa+3J+oNDHqesR1+pgAhulJge22K8dWkMhjz
17
+ kbMeKn5JDUq5GL/+dHE56abnoZiSWo64XeqcWN0FGrPniJxLzT/mLgRj7GQLuvf0
18
+ je0DOjOoqf+IL9pmZ/KB7nUE+h93GZvpqG1ZfqDuI6tLy1S7wfl57kL3NOcCAwEA
19
+ AaOCAc4wggHKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMEQGA1UdIAQ9MDswOQYL
20
+ YIZIAYb4RQEHFwYwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24u
21
+ Y29tL2NwczA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJp
22
+ c2lnbi5jb20vRVZJbnRsMjAwNi5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsG
23
+ AQUFBwMCBglghkgBhvhCBAEwHwYDVR0jBBgwFoAUTkPIHXbvN1N6T/JYb5TzOOLV
24
+ vd8wbwYIKwYBBQUHAQEEYzBhMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJp
25
+ c2lnbi5jb20wOQYIKwYBBQUHMAKGLWh0dHA6Ly9FVkludGwtYWlhLnZlcmlzaWdu
26
+ LmNvbS9FVkludGwyMDA2LmNlcjBuBggrBgEFBQcBDARiMGChXqBcMFowWDBWFglp
27
+ bWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsHiyEFGDAmFiRo
28
+ dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJKoZIhvcNAQEF
29
+ BQADggEBAC0BoimlCBynBKmilNsVIxpNa6nWddc9gyAPzlis0LWIwLylmTxPsPa3
30
+ LDhblWzGN2wzOkarjvnPVzvY66dA9GLabNBrBpAh6HrhVwOE5LKSTAmvEU3pU0Tg
31
+ Rj6LVCq6xDKP1ayeY3dj8MvPIi76i5QpV9v89wJbw1/CJorKAqDl9XZF6xX8gyuB
32
+ rdv7dS6nTSb61sEFo9D2tO9u6dgseiwHctmla9AwXLqm3uyqA1HkWvhhTmOg6rMe
33
+ k2KXQo/gEIMXwONdDp2kZb5QT2aFNskByuKB9CQsn7wBLROBwVzTLibs/fsYamZH
34
+ 65Ih38OovopLwNuIXwgpqp7nsRExRq4=
35
+ -----END CERTIFICATE-----
@@ -0,0 +1,29 @@
1
+ #useful utility to generating a certificate revocation list given a certificate you want to be revoked.
2
+ require 'openssl'
3
+ require 'active_support/all'
4
+
5
+
6
+ cert = OpenSSL::X509::Certificate.new(File.read("ocsp_enabled_cert.pem"))
7
+ serial = cert.serial
8
+
9
+ puts "cert serial: #{cert.serial}"
10
+ revoked = OpenSSL::X509::Revoked.new()
11
+ revoked.serial = serial
12
+ revoked.time = Time.now
13
+
14
+
15
+ puts "revoked: #{revoked.serial}"
16
+
17
+ crl = OpenSSL::X509::CRL.new
18
+
19
+ crl.add_revoked(revoked)
20
+ crl.last_update = 5.days.ago.to_time
21
+ crl.next_update= 5.days.from_now.to_time
22
+
23
+ puts crl.to_text
24
+
25
+ der = crl.to_der
26
+
27
+ output = File.open("sample_certificate_revocation_list.crl", "w")
28
+ output.write(der)
29
+ output.close
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+ require 'openssl'
3
+ require 'tempfile'
4
+ require 'uri'
5
+ require 'lib/sslackey/revocation_checker'
6
+
7
+ LOGGER = Logger.new(STDERR)
8
+
9
+ describe RevocationChecker do
10
+
11
+ def load_ocsp_enabled_cert
12
+ ocsp_enabled_cert = File.read(File.expand_path "../fixtures/ocsp_enabled_cert.pem", __FILE__)
13
+ OpenSSL::X509::Certificate.new(ocsp_enabled_cert)
14
+ end
15
+
16
+ def load_non_ocsp_cert
17
+ crl_only_cert = File.read(File.expand_path "../fixtures/crl_only_cert.pem", __FILE__)
18
+ OpenSSL::X509::Certificate.new(crl_only_cert)
19
+ end
20
+
21
+ def load_sample_ocsp_response
22
+ File.open(File.expand_path "../fixtures/sample_ocsp_response.der", __FILE__)
23
+ end
24
+
25
+ def load_crl_without_cert_revoked
26
+ File.read(File.expand_path "../fixtures/AkamaiSub3.crl", __FILE__)
27
+ end
28
+
29
+ def load_crl_with_cert_revoked
30
+ File.read(File.expand_path "../fixtures/sample_certificate_revocation_list.crl", __FILE__)
31
+ end
32
+
33
+ describe ".setup" do
34
+ it "caches trusted certificates correctly" do
35
+ path = File.expand_path "../fixtures/cacert.pem", __FILE__
36
+ RevocationChecker.setup(path)
37
+ RevocationChecker.issuers.keys.size.should == 18
38
+ RevocationChecker.issuers["FC:8A:50:BA:9E:B9:25:5A:7B:55:85:4F:95:00:63:8F:E9:58:6B:43"].serial.should == 121579451771502689459931452667480057963
39
+ RevocationChecker.issuers_by_name.keys.size.should == 23
40
+ RevocationChecker.issuers_by_name[301028566].serial.should == 185237570324729778462978133790525665700
41
+ RevocationChecker.trusted_certs_file_path.should == path
42
+ end
43
+ end
44
+
45
+ describe "#check_revocation_status" do
46
+ it "skips caching if no cache has been configured" do
47
+ cert = load_ocsp_enabled_cert
48
+ RevocationChecker.any_instance.expects(:get_latest_revocation_status).returns :successful
49
+ checker = RevocationChecker.new
50
+ checker.check_revocation_status(cert).should == :successful
51
+ end
52
+ it "uses the cached response when available" do
53
+ cert = load_ocsp_enabled_cert
54
+ cache = mock()
55
+ cache.expects(:cached_response).with(cert).returns :successful
56
+ cache.expects(:cache_response).never
57
+ RevocationChecker.expects(:cache).twice.returns cache
58
+ AuthorityChecker.any_instance.expects(:validate).never
59
+ checker = RevocationChecker.new
60
+ checker.check_revocation_status(cert).should == :successful
61
+ end
62
+
63
+ it "retrieves the latest response and caches it when there's nothing in the cache" do
64
+ cert = load_ocsp_enabled_cert
65
+ cache = mock()
66
+ cache.expects(:cached_response).with(cert).returns nil
67
+ cache.expects(:cache_response).with(cert, :successful)
68
+ RevocationChecker.expects(:cache).at_least_once.returns cache
69
+ AuthorityChecker.any_instance.expects(:validate).returns :successful
70
+ checker = RevocationChecker.new
71
+ checker.check_revocation_status(cert).should == :successful
72
+ end
73
+ end
74
+
75
+
76
+ describe "#get_latest_revocation_status" do
77
+ before do
78
+ @revocation_checker = RevocationChecker.new
79
+ end
80
+
81
+ context "when authority key info extension exists" do
82
+ it "retrieves the issuer certificate using the authority key info" do
83
+ AuthorityChecker.any_instance.stubs(:validate)
84
+ RevocationChecker.expects(:issuers).returns "stub issuer cert"
85
+ cert = load_ocsp_enabled_cert
86
+ @revocation_checker.get_latest_revocation_status(cert)
87
+ end
88
+ end
89
+
90
+ context "when authority key info extension does not exist" do
91
+ it "retrieves the issuer certificate using the issuer name" do
92
+ RevocationChecker.stubs(:parse_authority_info_access)
93
+ cert = load_non_ocsp_cert
94
+ issuers = {1983599852 => "an issuer"}
95
+ RevocationChecker.expects(:issuers_by_name).returns issuers
96
+ @revocation_checker.get_latest_revocation_status(cert)
97
+ end
98
+ end
99
+
100
+ context "when the issuer certificate is not loaded" do
101
+ it "raises an error" do
102
+ RevocationChecker.expects(:issuers_by_name).returns Hash.new
103
+ issuer = stub(:hash => "12345", :to_s => "an issuer")
104
+ cert = mock()
105
+ cert.expects(:extensions).returns []
106
+ cert.expects(:subject).returns "test certificate"
107
+ cert.expects(:issuer).twice.returns issuer
108
+ expect{@revocation_checker.get_latest_revocation_status(cert)}.to raise_error /No issuer certificate/
109
+ end
110
+ end
111
+
112
+ end
113
+ end
@@ -0,0 +1,22 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
2
+
3
+ $: << '.'
4
+
5
+ require 'bundler'
6
+ Bundler.require
7
+
8
+ require 'sslackey'
9
+ require 'rspec'
10
+
11
+ require 'active_support/string_inquirer'
12
+ Dir[File.expand_path(File.join(File.dirname(__FILE__), "support/**/*.rb"))].each { |f| require f }
13
+
14
+ RSpec.configure do |config|
15
+ config.mock_with :mocha
16
+ end
17
+
18
+ RSpec::Matchers.define :include_hash do |expected|
19
+ match do |actual|
20
+ actual.present? && actual.slice(*expected.keys) == expected
21
+ end
22
+ end
data/sslackey.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/sslackey/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Manilla", "Peter Krimmel"]
6
+ gem.email = ["engineering@manilla.com"]
7
+ gem.description = %q{Checks a certificate via ocsp or crl to see if it has been revoked}
8
+ gem.summary = %q{Ruby ssl certificate revocation checking}
9
+ gem.homepage = "http://chill.manilla.com"
10
+
11
+
12
+ gem.add_runtime_dependency('resque')
13
+ gem.add_runtime_dependency('activesupport')
14
+ gem.add_runtime_dependency('redis')
15
+ gem.add_runtime_dependency('redis-namespace')
16
+ gem.add_runtime_dependency('i18n')
17
+ gem.add_runtime_dependency('rake')
18
+ gem.add_runtime_dependency('httparty')
19
+
20
+ gem.add_development_dependency('rspec')
21
+ gem.add_development_dependency('mocha')
22
+ gem.add_development_dependency('fuubar')
23
+ gem.add_development_dependency('awesome_print')
24
+ gem.add_development_dependency('ruby-debug19')
25
+ gem.add_development_dependency('highline')
26
+
27
+
28
+
29
+ gem.files = `git ls-files`.split($\)
30
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
31
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
32
+ gem.name = "sslackey"
33
+ gem.require_paths = ["lib"]
34
+ gem.version = Sslackey::VERSION
35
+ end
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sslackey
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Manilla
9
+ - Peter Krimmel
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-07-23 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: resque
17
+ requirement: &2153512620 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2153512620
26
+ - !ruby/object:Gem::Dependency
27
+ name: activesupport
28
+ requirement: &2153512200 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2153512200
37
+ - !ruby/object:Gem::Dependency
38
+ name: redis
39
+ requirement: &2153511780 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *2153511780
48
+ - !ruby/object:Gem::Dependency
49
+ name: redis-namespace
50
+ requirement: &2153511360 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *2153511360
59
+ - !ruby/object:Gem::Dependency
60
+ name: i18n
61
+ requirement: &2153510940 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: *2153510940
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ requirement: &2153510520 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: *2153510520
81
+ - !ruby/object:Gem::Dependency
82
+ name: httparty
83
+ requirement: &2153510100 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: *2153510100
92
+ - !ruby/object:Gem::Dependency
93
+ name: rspec
94
+ requirement: &2153509680 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *2153509680
103
+ - !ruby/object:Gem::Dependency
104
+ name: mocha
105
+ requirement: &2153509260 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: *2153509260
114
+ - !ruby/object:Gem::Dependency
115
+ name: fuubar
116
+ requirement: &2153508840 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *2153508840
125
+ - !ruby/object:Gem::Dependency
126
+ name: awesome_print
127
+ requirement: &2153539880 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: *2153539880
136
+ - !ruby/object:Gem::Dependency
137
+ name: ruby-debug19
138
+ requirement: &2153539460 !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: *2153539460
147
+ - !ruby/object:Gem::Dependency
148
+ name: highline
149
+ requirement: &2153539040 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ type: :development
156
+ prerelease: false
157
+ version_requirements: *2153539040
158
+ description: Checks a certificate via ocsp or crl to see if it has been revoked
159
+ email:
160
+ - engineering@manilla.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .gitignore
166
+ - .rspec
167
+ - .rvmrc
168
+ - Gemfile
169
+ - LICENSE
170
+ - README.md
171
+ - Rakefile
172
+ - examples/README.md
173
+ - examples/cacert.pem
174
+ - examples/simple.rb
175
+ - lib/sslackey.rb
176
+ - lib/sslackey/authority_checker.rb
177
+ - lib/sslackey/cache/redis_revocation_cache.rb
178
+ - lib/sslackey/revocation_checker.rb
179
+ - lib/sslackey/version.rb
180
+ - spec/authority_checker_spec.rb
181
+ - spec/cache/redis_revocation_cache_spec.rb
182
+ - spec/fixtures/AkamaiSub3.crl
183
+ - spec/fixtures/cacert.pem
184
+ - spec/fixtures/crl_only_cert.pem
185
+ - spec/fixtures/ocsp_enabled_cert.pem
186
+ - spec/fixtures/sample_certificate_revocation_list.crl
187
+ - spec/fixtures/sample_ocsp_response.der
188
+ - spec/fixtures/ssl.rb
189
+ - spec/revocation_checker_spec.rb
190
+ - spec/spec_helper.rb
191
+ - sslackey.gemspec
192
+ homepage: http://chill.manilla.com
193
+ licenses: []
194
+ post_install_message:
195
+ rdoc_options: []
196
+ require_paths:
197
+ - lib
198
+ required_ruby_version: !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubyforge_project:
212
+ rubygems_version: 1.8.15
213
+ signing_key:
214
+ specification_version: 3
215
+ summary: Ruby ssl certificate revocation checking
216
+ test_files:
217
+ - spec/authority_checker_spec.rb
218
+ - spec/cache/redis_revocation_cache_spec.rb
219
+ - spec/fixtures/AkamaiSub3.crl
220
+ - spec/fixtures/cacert.pem
221
+ - spec/fixtures/crl_only_cert.pem
222
+ - spec/fixtures/ocsp_enabled_cert.pem
223
+ - spec/fixtures/sample_certificate_revocation_list.crl
224
+ - spec/fixtures/sample_ocsp_response.der
225
+ - spec/fixtures/ssl.rb
226
+ - spec/revocation_checker_spec.rb
227
+ - spec/spec_helper.rb