openssl-extensions 1.2.0 → 1.2.1
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 +15 -0
- data/.gitignore +5 -0
- data/.rspec +0 -1
- data/.travis.yml +6 -9
- data/CHANGELOG.md +26 -11
- data/README.md +47 -18
- data/Rakefile +2 -6
- data/lib/openssl-extensions.rb +0 -2
- data/lib/openssl-extensions/all.rb +2 -0
- data/lib/openssl-extensions/pkey/dsa.rb +13 -0
- data/lib/openssl-extensions/pkey/pkey.rb +9 -0
- data/lib/openssl-extensions/pkey/rsa.rb +13 -0
- data/lib/openssl-extensions/ssl/ssl_socket.rb +0 -2
- data/lib/openssl-extensions/version.rb +1 -1
- data/lib/openssl-extensions/x509/authority_key_identifier.rb +13 -13
- data/lib/openssl-extensions/x509/certificate.rb +12 -11
- data/lib/openssl-extensions/x509/certificate_chain.rb +4 -2
- data/lib/openssl-extensions/x509/request.rb +8 -6
- data/openssl-extensions.gemspec +15 -18
- data/spec/fixtures/certificates/bgthelpdesk.braxtongrant.com.pem +19 -0
- data/spec/models/openssl-extensions/x509/certificate_spec.rb +12 -3
- metadata +18 -25
- data/.rvmrc +0 -2
- data/Gemfile.lock +0 -31
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZDNlZTQzYmJkNmZlMGFmYTBkNDhmMzUyM2JlYjhhM2E3YWVkMTViMQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjcyYzRmMDc2NzQ5MmYwOTc3ZWEwMjIyZDFhYTJiMzQzNmQ5MWVkOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTMzNzQ1MzFhNTg0ODI1ZWViMTIyZWFhZDM1NzUyMTZjYTQyMWRlOWViNDJk
|
10
|
+
OTE0ZGVmNDA3ZDVjNTQ1NTdmNjE3OTczMzg2YWZkOWE1ZWYzMTAxYThjMWNk
|
11
|
+
ZjVjZGFkODJkNmIxNDRjN2Y4Njk5MTJjMDg1NjM1MDYwN2VlODU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MWI3Mzg5MjFlNjExNzFkY2VjNTUyMjA4OGU1YmFhOTQyMWEyYjgwYjkyODQ2
|
14
|
+
ZmExMDdlZGY0ZmYxNjdmNWYxYWFmMDg5NzQxMzQ5M2IwMTUzY2ZmOWY2MjJk
|
15
|
+
MDE0YTY2OGU5ODY3ZTA0ZGY2OGViZGU3OGU1ODc3YjBlYmI3YWU=
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.travis.yml
CHANGED
@@ -3,13 +3,10 @@ rvm:
|
|
3
3
|
- 1.9.2
|
4
4
|
- 1.9.3
|
5
5
|
- ree
|
6
|
-
-
|
7
|
-
- rbx
|
8
|
-
|
9
|
-
- Gemfile
|
10
|
-
script: "bundle exec rspec spec/"
|
11
|
-
branches:
|
12
|
-
only:
|
13
|
-
- master
|
6
|
+
- rbx-18mode
|
7
|
+
- rbx-19mode
|
8
|
+
script: "rake spec"
|
14
9
|
notifications:
|
15
|
-
email:
|
10
|
+
email:
|
11
|
+
on_success: change
|
12
|
+
on_failure: always
|
data/CHANGELOG.md
CHANGED
@@ -1,23 +1,38 @@
|
|
1
|
-
|
1
|
+
# openssl-extensions changelog
|
2
2
|
|
3
|
-
[
|
3
|
+
## [HEAD][unreleased] / unreleased
|
4
4
|
|
5
|
-
|
5
|
+
* No significant changes.
|
6
6
|
|
7
|
-
|
8
|
-
* Extended OpenSSL::X509::Certificate, adding #authority_info_access and #crl_distribution_points methods \[[pyrat](https://github.com/pyrat)\]
|
7
|
+
## [1.2.1][v1.2.1] / 2013-06-11
|
9
8
|
|
10
|
-
|
9
|
+
* Fix strength calculation with X509 certificates encrypted with DSA keys.
|
10
|
+
* Loosen the RSpec dependency requirements to ~> 2.x.
|
11
|
+
* Fix failing specs in CRL distribution points.
|
11
12
|
|
12
|
-
[
|
13
|
+
## [1.2.0][v1.2.0] / 2011-11-03
|
13
14
|
|
14
|
-
|
15
|
+
* Extended OpenSSL::BN to provide a #to_hex helper, a shortcut for to_s(16)
|
16
|
+
\[[pyrat][pyrat]\]
|
17
|
+
* Extended OpenSSL::X509::Certificate, adding #authority_info_access and
|
18
|
+
#crl_distribution_points methods \[[pyrat][pyrat]\]
|
19
|
+
|
20
|
+
## [1.1.0][v1.1.0] / 2011-01-20
|
15
21
|
|
16
22
|
* Extended OpenSSL::PKey::PKey to add equality methods
|
17
23
|
|
18
|
-
## 1.0.0
|
24
|
+
## 1.0.0 / 2011-01-17
|
19
25
|
|
20
26
|
* Initial major release.
|
21
|
-
* Extended OpenSSL::X509::Request, OpenSSL::X509::Certificate,
|
22
|
-
|
27
|
+
* Extended OpenSSL::X509::Request, OpenSSL::X509::Certificate,
|
28
|
+
OpenSSL::X509::Name
|
29
|
+
* Added OpenSSLExtensions::X509::CertificateChain and
|
30
|
+
OpenSSLExtensions::X509::AuthorityKeyIdentifier
|
31
|
+
|
32
|
+
|
33
|
+
[unreleased]: https://github.com/envylabs/openssl-extensions/compare/v1.2.1...master
|
34
|
+
[v1.2.1]: https://github.com/envylabs/openssl-extensions/compare/v1.2.0...v1.2.1
|
35
|
+
[v1.2.0]: https://github.com/envylabs/openssl-extensions/compare/v1.1.0...v1.2.0
|
36
|
+
[v1.1.0]: https://github.com/envylabs/openssl-extensions/compare/v1.0.0...v1.1.0
|
23
37
|
|
38
|
+
[pyrat]: https://github.com/pyrat
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
# OpenSSL Extensions
|
1
|
+
# OpenSSL Extensions
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/openssl-extensions)
|
4
|
+
[](http://travis-ci.org/envylabs/openssl-extensions)
|
5
|
+
[](https://codeclimate.com/github/envylabs/openssl-extensions)
|
2
6
|
|
3
7
|
This library generally provides helper methods which makes working with
|
4
8
|
OpenSSL a little more bearable. It does, however, provide some additional
|
@@ -9,14 +13,20 @@ features of the library.
|
|
9
13
|
|
10
14
|
With [Bundler](http://gembundler.com):
|
11
15
|
|
12
|
-
|
16
|
+
```ruby
|
17
|
+
gem 'openssl-extensions', :require => 'openssl-extensions/all'
|
18
|
+
```
|
13
19
|
|
14
20
|
With standard RubyGems:
|
15
21
|
|
16
|
-
|
22
|
+
```shell
|
23
|
+
gem install openssl-extensions
|
24
|
+
```
|
17
25
|
|
18
|
-
|
19
|
-
|
26
|
+
```ruby
|
27
|
+
require 'rubygems'
|
28
|
+
require 'openssl-extensions/all'
|
29
|
+
```
|
20
30
|
|
21
31
|
Once required, the extensions are automatically applied.
|
22
32
|
|
@@ -31,23 +41,42 @@ OpenSSL::X509::NAME).
|
|
31
41
|
Below is a simple example exercising a few helpers provided by this
|
32
42
|
library:
|
33
43
|
|
34
|
-
|
35
|
-
|
44
|
+
```ruby
|
45
|
+
csr_body = File.read('example.csr') # assuming this is valid and exists
|
46
|
+
request = OpenSSL::X509::Request.new(csr_body)
|
36
47
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
48
|
+
request.subject.common_name # => "example.com"
|
49
|
+
request.subject.organization # => "Example Corp"
|
50
|
+
request.subject.locality # => "Orlando"
|
51
|
+
request.subject.region # => "Florida"
|
52
|
+
request.subject.country # => "US"
|
53
|
+
request.subject.location # => "Orlando, Florida, US"
|
43
54
|
|
44
|
-
|
45
|
-
|
46
|
-
|
55
|
+
request.strength # => 2048
|
56
|
+
request.challenge_password? # => false
|
57
|
+
request.subject_alternative_names # => ['example.com', 'www.example.com']
|
58
|
+
```
|
59
|
+
|
60
|
+
## Supported Ruby Implementations
|
61
|
+
|
62
|
+
This OpenSSL extension library currently supports (and is continuously tested
|
63
|
+
against) the following Ruby implementations:
|
64
|
+
|
65
|
+
* [MRI 1.8.7][mri]
|
66
|
+
* [MRI 1.9.2][mri]
|
67
|
+
* [MRI 1.9.3][mri]
|
68
|
+
* [Ruby Enterprise Edition][ree]
|
69
|
+
* [Rubinius][rubinius]
|
70
|
+
|
71
|
+
The following implementations are known to be incompatible:
|
72
|
+
|
73
|
+
* [JRuby][jruby]
|
47
74
|
|
48
75
|
## License
|
49
76
|
|
50
77
|
Released under the MIT License. See the LICENSE file for further details.
|
51
78
|
|
52
|
-
[
|
53
|
-
[
|
79
|
+
[mri]: http://www.ruby-lang.org/
|
80
|
+
[ree]: http://www.rubyenterpriseedition.com/
|
81
|
+
[rubinius]: http://rubini.us/
|
82
|
+
[jruby]: http://jruby.org/
|
data/Rakefile
CHANGED
data/lib/openssl-extensions.rb
CHANGED
@@ -2,6 +2,8 @@ require 'openssl-extensions'
|
|
2
2
|
OpenSSLExtensions.check_dependencies!
|
3
3
|
|
4
4
|
require 'openssl-extensions/pkey/pkey'
|
5
|
+
require 'openssl-extensions/pkey/dsa'
|
6
|
+
require 'openssl-extensions/pkey/rsa'
|
5
7
|
require 'openssl-extensions/x509/certificate'
|
6
8
|
require 'openssl-extensions/x509/certificate_chain'
|
7
9
|
require 'openssl-extensions/x509/request'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'openssl-extensions'
|
2
|
+
require 'openssl-extensions/pkey'
|
3
|
+
|
4
|
+
##
|
5
|
+
# Extends OpenSSL::PKey::RSA with helper methods.
|
6
|
+
#
|
7
|
+
module OpenSSLExtensions::PKey::DSA
|
8
|
+
def strength
|
9
|
+
p.num_bits
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
OpenSSL::PKey::DSA.send(:include, OpenSSLExtensions::PKey::DSA)
|
@@ -5,6 +5,8 @@ require 'openssl-extensions/pkey'
|
|
5
5
|
# Extends OpenSSL::PKey::PKey and its submodules with helper methods.
|
6
6
|
#
|
7
7
|
module OpenSSLExtensions::PKey::PKey
|
8
|
+
UnknownAlgorithmError = Class.new(RuntimeError)
|
9
|
+
|
8
10
|
##
|
9
11
|
# Equality is tested by comparing the instances' +hash+.
|
10
12
|
#
|
@@ -21,6 +23,13 @@ module OpenSSLExtensions::PKey::PKey
|
|
21
23
|
def hash
|
22
24
|
to_pem.hash
|
23
25
|
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Returns the strength of the public key in number of bits.
|
29
|
+
#
|
30
|
+
def strength
|
31
|
+
raise UnknownAlgorithmError
|
32
|
+
end
|
24
33
|
end
|
25
34
|
|
26
35
|
OpenSSL::PKey::PKey.send(:include, OpenSSLExtensions::PKey::PKey)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'openssl-extensions'
|
2
|
+
require 'openssl-extensions/pkey'
|
3
|
+
|
4
|
+
##
|
5
|
+
# Extends OpenSSL::PKey::RSA with helper methods.
|
6
|
+
#
|
7
|
+
module OpenSSLExtensions::PKey::RSA
|
8
|
+
def strength
|
9
|
+
n.num_bits
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
OpenSSL::PKey::RSA.send(:include, OpenSSLExtensions::PKey::RSA)
|
@@ -3,7 +3,6 @@ require 'openssl-extensions/ssl'
|
|
3
3
|
require 'openssl-extensions/x509/certificate_chain'
|
4
4
|
|
5
5
|
module OpenSSLExtensions::SSL::SSLSocket
|
6
|
-
|
7
6
|
def self.included(base)
|
8
7
|
base.send(:alias_method,
|
9
8
|
:peer_cert_chain_without_openssl_extension,
|
@@ -22,7 +21,6 @@ module OpenSSLExtensions::SSL::SSLSocket
|
|
22
21
|
OpenSSLExtensions::X509::CertificateChain.
|
23
22
|
new(peer_cert, peer_cert_chain_without_openssl_extension)
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
27
25
|
|
28
26
|
OpenSSL::SSL::SSLSocket.send(:include, OpenSSLExtensions::SSL::SSLSocket)
|
@@ -15,19 +15,9 @@ class OpenSSLExtensions::X509::AuthorityKeyIdentifier
|
|
15
15
|
parse(extension_string.dup) if extension_string
|
16
16
|
end
|
17
17
|
|
18
|
-
def parse(string)
|
19
|
-
Hash[string.scan(%r{(\w+):([^,\n]+)})].tap do |h|
|
20
|
-
@issuer_name = common_name(strip(h['DirName']))
|
21
|
-
@serial_number = strip(h['serial'])
|
22
|
-
@key_id = strip(h['keyid'])
|
23
|
-
end
|
24
|
-
end
|
25
|
-
private :parse
|
26
18
|
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
private :strip
|
19
|
+
private
|
20
|
+
|
31
21
|
|
32
22
|
def common_name(input)
|
33
23
|
if input
|
@@ -37,6 +27,16 @@ class OpenSSLExtensions::X509::AuthorityKeyIdentifier
|
|
37
27
|
name[1] if name
|
38
28
|
end
|
39
29
|
end
|
40
|
-
private :common_name
|
41
30
|
|
31
|
+
def parse(string)
|
32
|
+
Hash[string.scan(%r{(\w+):([^,\n]+)})].tap do |h|
|
33
|
+
@issuer_name = common_name(strip(h['DirName']))
|
34
|
+
@serial_number = strip(h['serial'])
|
35
|
+
@key_id = strip(h['keyid'])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def strip(input)
|
40
|
+
input ? input.to_s.strip : nil
|
41
|
+
end
|
42
42
|
end
|
@@ -6,7 +6,6 @@ require 'openssl-extensions/x509/authority_key_identifier'
|
|
6
6
|
# Extends OpenSSL::X509::Certificate with shortcut methods.
|
7
7
|
#
|
8
8
|
module OpenSSLExtensions::X509::Certificate
|
9
|
-
|
10
9
|
##
|
11
10
|
# Equality is tested by comparing the generated PEM signatures.
|
12
11
|
#
|
@@ -31,7 +30,7 @@ module OpenSSLExtensions::X509::Certificate
|
|
31
30
|
##
|
32
31
|
# Override the default Object#hash to identify uniqueness of the
|
33
32
|
# Certificate. This uses a hash of the certificate PEM.
|
34
|
-
#
|
33
|
+
#
|
35
34
|
def hash
|
36
35
|
to_pem.hash
|
37
36
|
end
|
@@ -49,11 +48,6 @@ module OpenSSLExtensions::X509::Certificate
|
|
49
48
|
self.issuer.organization == issuer.subject.organization)
|
50
49
|
end
|
51
50
|
|
52
|
-
def read_extension_by_oid(oid)
|
53
|
-
(extensions.detect { |e| e.to_a.first == oid } || []).to_a[1]
|
54
|
-
end
|
55
|
-
protected :read_extension_by_oid
|
56
|
-
|
57
51
|
##
|
58
52
|
# Returns +true+ if this certificate is a root certificate (it is its
|
59
53
|
# own issuer).
|
@@ -67,7 +61,7 @@ module OpenSSLExtensions::X509::Certificate
|
|
67
61
|
# Returns the bit strength of the public certificate.
|
68
62
|
#
|
69
63
|
def strength
|
70
|
-
public_key.
|
64
|
+
public_key.strength
|
71
65
|
end
|
72
66
|
|
73
67
|
##
|
@@ -83,13 +77,13 @@ module OpenSSLExtensions::X509::Certificate
|
|
83
77
|
def subject_key_identifier
|
84
78
|
read_extension_by_oid('subjectKeyIdentifier')
|
85
79
|
end
|
86
|
-
|
80
|
+
|
87
81
|
##
|
88
82
|
# This can be used for getting OCSP Urls for revocation checks.
|
89
83
|
def authority_info_access
|
90
84
|
read_extension_by_oid('authorityInfoAccess')
|
91
85
|
end
|
92
|
-
|
86
|
+
|
93
87
|
def crl_distribution_points
|
94
88
|
read_extension_by_oid('crlDistributionPoints')
|
95
89
|
end
|
@@ -110,7 +104,14 @@ module OpenSSLExtensions::X509::Certificate
|
|
110
104
|
$1.to_i
|
111
105
|
end
|
112
106
|
end
|
113
|
-
|
107
|
+
|
108
|
+
|
109
|
+
protected
|
110
|
+
|
111
|
+
|
112
|
+
def read_extension_by_oid(oid)
|
113
|
+
(extensions.detect { |e| e.to_a.first == oid } || []).to_a[1]
|
114
|
+
end
|
114
115
|
end
|
115
116
|
|
116
117
|
OpenSSL::X509::Certificate.send(:include, OpenSSLExtensions::X509::Certificate)
|
@@ -21,10 +21,13 @@ class OpenSSLExtensions::X509::CertificateChain
|
|
21
21
|
reorganize!(peer_certificate, certificates)
|
22
22
|
end
|
23
23
|
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
|
24
28
|
def method_missing(method, *args, &block)
|
25
29
|
@certificates.send(method, *args, &block)
|
26
30
|
end
|
27
|
-
private :method_missing
|
28
31
|
|
29
32
|
def reorganize!(site_certificate, certificates)
|
30
33
|
return unless site_certificate && !certificates.empty?
|
@@ -41,5 +44,4 @@ class OpenSSLExtensions::X509::CertificateChain
|
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|
44
|
-
private :reorganize!
|
45
47
|
end
|
@@ -25,16 +25,11 @@ module OpenSSLExtensions::X509::Request
|
|
25
25
|
##
|
26
26
|
# Override the default Object#hash to identify uniqueness of the
|
27
27
|
# Request. This uses a hash of the PEM.
|
28
|
-
#
|
28
|
+
#
|
29
29
|
def hash
|
30
30
|
to_pem.hash
|
31
31
|
end
|
32
32
|
|
33
|
-
def read_attributes_by_oid(*oids)
|
34
|
-
attributes.detect { |a| oids.include?(a.oid) }
|
35
|
-
end
|
36
|
-
protected :read_attributes_by_oid
|
37
|
-
|
38
33
|
##
|
39
34
|
# Returns the bit strength of the public key used for the signing
|
40
35
|
# request.
|
@@ -64,6 +59,13 @@ module OpenSSLExtensions::X509::Request
|
|
64
59
|
end
|
65
60
|
alias :sans :subject_alternative_names
|
66
61
|
|
62
|
+
|
63
|
+
protected
|
64
|
+
|
65
|
+
|
66
|
+
def read_attributes_by_oid(*oids)
|
67
|
+
attributes.detect { |a| oids.include?(a.oid) }
|
68
|
+
end
|
67
69
|
end
|
68
70
|
|
69
71
|
OpenSSL::X509::Request.send(:include, OpenSSLExtensions::X509::Request)
|
data/openssl-extensions.gemspec
CHANGED
@@ -1,25 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib/', __FILE__)
|
3
|
-
|
4
|
-
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
4
|
require 'openssl-extensions/version'
|
6
5
|
|
7
|
-
Gem::Specification.new do |
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
s.required_rubygems_version = '>= 1.3.6'
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'openssl-extensions'
|
8
|
+
spec.version = OpenSSLExtensions::Version
|
9
|
+
spec.authors = ["Envy Labs"]
|
10
|
+
spec.email = [""]
|
11
|
+
spec.summary = 'Helper methods and extensions for OpenSSL to make the interface more intuitive.'
|
12
|
+
spec.description = 'This library patches OpenSSL to add helper methods and extensions to OpenSSL objects with the intention of making the interface more intuitive.'
|
13
|
+
spec.homepage = 'http://github.com/envylabs/openssl-extensions'
|
14
|
+
spec.license = 'MIT'
|
17
15
|
|
18
|
-
|
19
|
-
s.add_development_dependency 'fuubar', '~> 0.0.1'
|
16
|
+
spec.add_development_dependency 'rspec', '~> 2.4'
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
spec.files = `git ls-files`.split($/)
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
+
spec.require_paths = ["lib"]
|
25
22
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDJDCCAuGgAwIBAgIET6p/CDALBgcqhkjOOAQDBQAwdTELMAkGA1UEBhMCVVMx
|
3
|
+
CzAJBgNVBAgTAk1EMRcwFQYDVQQHEw5NYXJyaW90dHN2aWxsZTEMMAoGA1UEChMD
|
4
|
+
QkdUMQswCQYDVQQLEwJJVDElMCMGA1UEAxMcYmd0aGVscGRlc2suYnJheHRvbmdy
|
5
|
+
YW50LmNvbTAeFw0xMjA1MDkxNDI4MjRaFw0xNTA1MDkxNDI4MjRaMHUxCzAJBgNV
|
6
|
+
BAYTAlVTMQswCQYDVQQIEwJNRDEXMBUGA1UEBxMOTWFycmlvdHRzdmlsbGUxDDAK
|
7
|
+
BgNVBAoTA0JHVDELMAkGA1UECxMCSVQxJTAjBgNVBAMTHGJndGhlbHBkZXNrLmJy
|
8
|
+
YXh0b25ncmFudC5jb20wggG3MIIBLAYHKoZIzjgEATCCAR8CgYEA/X9TgR11EilS
|
9
|
+
30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuA
|
10
|
+
HTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVU
|
11
|
+
E1oWkTL2dfOuK2HXKu/yIgMZndFIAccCFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QKB
|
12
|
+
gQD34aCF1ps93su8q1w2uFe5eZSvu/o66oL5V0wLPQeCZ1FZV4661FlP5nEHEIGA
|
13
|
+
tEkWcSPoTCgWE7fPCTKMyKbhPBZ6i1R8jSjgo64eK7OmdZFuo38L+iE1YvH7YnoB
|
14
|
+
JDvMpPG+qFGQiaiD3+Fa5Z8GkotmXoB7VSVkAUw7/s9JKgOBhAACgYBAQ5zGDMvY
|
15
|
+
d0s/pZMeeViCgd4R6GxTpJ6+PmRcZd+Qt9X05XvueffnKtORUmnfCrgr3PyxxEoD
|
16
|
+
Nlapvpv9jH3HDfWhVNFIj70PsZdYJ1GMOudg8pfxCxfRjtD1upxfNeJ1d7DH3q0j
|
17
|
+
Oxq3lNQle3rhi6nH+7sTAluc8NoRFJ/5YTALBgcqhkjOOAQDBQADMAAwLQIVAInO
|
18
|
+
kQcVY0d0SUFKr7GGiF7o+zD2AhRL7oFGOAWewa/KiS+2n6JSlDwrjA==
|
19
|
+
-----END CERTIFICATE-----
|
@@ -16,11 +16,17 @@ describe OpenSSLExtensions::X509::Certificate do
|
|
16
16
|
it { should == 2048 }
|
17
17
|
end
|
18
18
|
|
19
|
-
context 'for a 1024 bit certificate' do
|
19
|
+
context 'for a 1024 bit RSA-signed certificate' do
|
20
20
|
let(:certificate) { extended_ssl_certificates('www.twongo.com') }
|
21
21
|
|
22
22
|
it { should == 1024 }
|
23
23
|
end
|
24
|
+
|
25
|
+
context 'for a 1024 bit DSA-signed certificate' do
|
26
|
+
let(:certificate) { extended_ssl_certificates('bgthelpdesk.braxtongrant.com') }
|
27
|
+
|
28
|
+
it { should == 1024 }
|
29
|
+
end
|
24
30
|
end
|
25
31
|
|
26
32
|
context 'allows_certificate_signing?' do
|
@@ -131,12 +137,15 @@ describe OpenSSLExtensions::X509::Certificate do
|
|
131
137
|
context 'crl_distribution_points' do
|
132
138
|
subject { certificate.crl_distribution_points }
|
133
139
|
|
134
|
-
it { should
|
140
|
+
it { should be_a String }
|
141
|
+
it { should include "URI:http://EVSSL-crl.geotrust.com/crls/gtextvalca.crl" }
|
135
142
|
end
|
136
143
|
|
137
144
|
context 'authority_info_access' do
|
138
145
|
subject { certificate.authority_info_access }
|
139
146
|
|
140
|
-
it { should
|
147
|
+
it { should be_a String }
|
148
|
+
it { should include "OCSP - URI:http://EVSSL-ocsp.geotrust.com" }
|
149
|
+
it { should include "CA Issuers - URI:http://EVSSL-aia.geotrust.com/evca.crt" }
|
141
150
|
end
|
142
151
|
end
|
metadata
CHANGED
@@ -1,53 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openssl-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
-
|
7
|
+
- Envy Labs
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-06-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.4
|
19
|
+
version: '2.4'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: fuubar
|
27
|
-
requirement: &2152563220 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
23
|
requirements:
|
30
24
|
- - ~>
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *2152563220
|
26
|
+
version: '2.4'
|
36
27
|
description: This library patches OpenSSL to add helper methods and extensions to
|
37
28
|
OpenSSL objects with the intention of making the interface more intuitive.
|
38
29
|
email:
|
39
|
-
-
|
30
|
+
- ''
|
40
31
|
executables: []
|
41
32
|
extensions: []
|
42
33
|
extra_rdoc_files: []
|
43
34
|
files:
|
44
35
|
- .gitignore
|
45
36
|
- .rspec
|
46
|
-
- .rvmrc
|
47
37
|
- .travis.yml
|
48
38
|
- CHANGELOG.md
|
49
39
|
- Gemfile
|
50
|
-
- Gemfile.lock
|
51
40
|
- LICENSE
|
52
41
|
- README.md
|
53
42
|
- Rakefile
|
@@ -56,7 +45,9 @@ files:
|
|
56
45
|
- lib/openssl-extensions/all.rb
|
57
46
|
- lib/openssl-extensions/bn.rb
|
58
47
|
- lib/openssl-extensions/pkey.rb
|
48
|
+
- lib/openssl-extensions/pkey/dsa.rb
|
59
49
|
- lib/openssl-extensions/pkey/pkey.rb
|
50
|
+
- lib/openssl-extensions/pkey/rsa.rb
|
60
51
|
- lib/openssl-extensions/ssl.rb
|
61
52
|
- lib/openssl-extensions/ssl/ssl_socket.rb
|
62
53
|
- lib/openssl-extensions/version.rb
|
@@ -73,6 +64,7 @@ files:
|
|
73
64
|
- spec/fixtures/certificate_requests/geocerts.csr
|
74
65
|
- spec/fixtures/certificate_requests/sans.csr
|
75
66
|
- spec/fixtures/certificates/app1.hongkongpost.com.pem
|
67
|
+
- spec/fixtures/certificates/bgthelpdesk.braxtongrant.com.pem
|
76
68
|
- spec/fixtures/certificates/equifax-secure-ca.pem
|
77
69
|
- spec/fixtures/certificates/geotrust-extended-validation-ssl-ca.pem
|
78
70
|
- spec/fixtures/certificates/geotrust-primary-certification-authority.pem
|
@@ -104,28 +96,28 @@ files:
|
|
104
96
|
- spec/support/pkey_fixtures.rb
|
105
97
|
- spec/support/ssl_certificate_fixtures.rb
|
106
98
|
homepage: http://github.com/envylabs/openssl-extensions
|
107
|
-
licenses:
|
99
|
+
licenses:
|
100
|
+
- MIT
|
101
|
+
metadata: {}
|
108
102
|
post_install_message:
|
109
103
|
rdoc_options: []
|
110
104
|
require_paths:
|
111
105
|
- lib
|
112
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
107
|
requirements:
|
115
108
|
- - ! '>='
|
116
109
|
- !ruby/object:Gem::Version
|
117
110
|
version: '0'
|
118
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
112
|
requirements:
|
121
113
|
- - ! '>='
|
122
114
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
115
|
+
version: '0'
|
124
116
|
requirements: []
|
125
117
|
rubyforge_project:
|
126
|
-
rubygems_version:
|
118
|
+
rubygems_version: 2.0.3
|
127
119
|
signing_key:
|
128
|
-
specification_version:
|
120
|
+
specification_version: 4
|
129
121
|
summary: Helper methods and extensions for OpenSSL to make the interface more intuitive.
|
130
122
|
test_files:
|
131
123
|
- spec/fixtures/certificate_requests/1024.csr
|
@@ -134,6 +126,7 @@ test_files:
|
|
134
126
|
- spec/fixtures/certificate_requests/geocerts.csr
|
135
127
|
- spec/fixtures/certificate_requests/sans.csr
|
136
128
|
- spec/fixtures/certificates/app1.hongkongpost.com.pem
|
129
|
+
- spec/fixtures/certificates/bgthelpdesk.braxtongrant.com.pem
|
137
130
|
- spec/fixtures/certificates/equifax-secure-ca.pem
|
138
131
|
- spec/fixtures/certificates/geotrust-extended-validation-ssl-ca.pem
|
139
132
|
- spec/fixtures/certificates/geotrust-primary-certification-authority.pem
|
data/.rvmrc
DELETED
data/Gemfile.lock
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
openssl-extensions (1.2.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: http://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.1.2)
|
10
|
-
fuubar (0.0.3)
|
11
|
-
rspec (~> 2.0)
|
12
|
-
rspec-instafail (~> 0.1.4)
|
13
|
-
ruby-progressbar (~> 0.0.9)
|
14
|
-
rspec (2.4.0)
|
15
|
-
rspec-core (~> 2.4.0)
|
16
|
-
rspec-expectations (~> 2.4.0)
|
17
|
-
rspec-mocks (~> 2.4.0)
|
18
|
-
rspec-core (2.4.0)
|
19
|
-
rspec-expectations (2.4.0)
|
20
|
-
diff-lcs (~> 1.1.2)
|
21
|
-
rspec-instafail (0.1.5)
|
22
|
-
rspec-mocks (2.4.0)
|
23
|
-
ruby-progressbar (0.0.9)
|
24
|
-
|
25
|
-
PLATFORMS
|
26
|
-
ruby
|
27
|
-
|
28
|
-
DEPENDENCIES
|
29
|
-
fuubar (~> 0.0.1)
|
30
|
-
openssl-extensions!
|
31
|
-
rspec (~> 2.4.0)
|