openssl-extensions 1.0.0 → 1.1.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.
@@ -1,6 +1,10 @@
1
+ ## 1.1.0, released 2011-01-20
2
+
3
+ * Extended OpenSSL::PKey::PKey to add equality methods.
4
+
1
5
  ## 1.0.0, released 2011-01-17
2
6
 
3
7
  * Initial major release.
4
- * Extends OpenSSL::X509::Request, OpenSSL::X509::Certificate, OpenSSL::X509::Name
5
- * Adds OpenSSLExtensions::X509::CertificateChain and OpenSSLExtensions::X509::AuthorityKeyIdentifier
8
+ * Extended OpenSSL::X509::Request, OpenSSL::X509::Certificate, OpenSSL::X509::Name
9
+ * Added OpenSSLExtensions::X509::CertificateChain and OpenSSLExtensions::X509::AuthorityKeyIdentifier
6
10
 
@@ -1,6 +1,7 @@
1
1
  require 'openssl-extensions'
2
2
  OpenSSLExtensions.check_dependencies!
3
3
 
4
+ require 'openssl-extensions/pkey/pkey'
4
5
  require 'openssl-extensions/x509/certificate'
5
6
  require 'openssl-extensions/x509/certificate_chain'
6
7
  require 'openssl-extensions/x509/request'
@@ -0,0 +1,4 @@
1
+ require 'openssl-extensions'
2
+
3
+ module OpenSSLExtensions::PKey
4
+ end
@@ -0,0 +1,19 @@
1
+ require 'openssl-extensions'
2
+ require 'openssl-extensions/pkey'
3
+
4
+ ##
5
+ # Extends OpenSSL::PKey::PKey and its submodules with helper methods.
6
+ #
7
+ module OpenSSLExtensions::PKey::PKey
8
+ def ==(other)
9
+ other.kind_of?(OpenSSL::PKey::PKey) &&
10
+ self.hash == other.hash
11
+ end
12
+ alias_method :eql?, :==
13
+
14
+ def hash
15
+ to_pem.hash
16
+ end
17
+ end
18
+
19
+ OpenSSL::PKey::PKey.send(:include, OpenSSLExtensions::PKey::PKey)
@@ -1,3 +1,3 @@
1
1
  module OpenSSLExtensions
2
- Version = '1.0.0'
2
+ Version = '1.1.0'
3
3
  end
@@ -0,0 +1,20 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ MIIDPQIBAAKCAQEAiVNJHKZ1id9fDSwG1Ze3Klp2prgLNK42YbkWz2Zf/fubDAU5
3
+ VIdbDAVNJfUrA0ZcMDdFXUw7UbU5rY4rBQWt3OmUD6YTDZoiAZ8wgqU8G6RPf/jh
4
+ erimlVirUWWXGvef5EtXWZ1TaCNHBb9eErSuLWabFjwBDhezgP5ERswBSGDLvB0b
5
+ pabFN8wp/aMgUv315qCPo9meekhPjv0kxqoOai0Jpgl31W/FuJE80tEDBLoVdxvG
6
+ rX7tb9WffBDlonQzEFj5kargRLElZHMo4iQq8l+NmQjVdFQCRrzxwSXpM5B4QYmw
7
+ OKvbr3/6+RBTlymWiY1PoLo0PL70/DFZVT80SwIVAJcUyYEMiZCpIiDBgG7HgUIM
8
+ vpX7AoIBAHtG/S/nEbvdS1rUkUsxJEH4C2wWHUqIpVjpKnwPKDrW4wVDchg4Bblu
9
+ ckK3+6SnFGPyMxiChOtSux1AUwAd170OFp2a4kYHDnjM+Z/rGVlE8Ou5wS7NYEYr
10
+ N707TFTUyQ2S/Gp/+UWmFyfMb2pZcB66KhLT5HMMA1EpHagxRzI9YXgRNIlh7al1
11
+ GOVoG9orz80NJkyZF5AOIXwXLGXJN6Y03V4E9uyIdfnkDyjlcwHHLqy6Jit1r/Q1
12
+ KXOf9vzFhXZ5zClR8WQNjrgd9YKRaMcZl5CjLg5cR+Q/zLfEPmrf2wbnA6plOWCr
13
+ fpHjZke9EolwPBLGPtX+L3mblZAQguQCggEAS0ncfxyk8PPXxTRFTE0ztPijWUIb
14
+ 0w8yFKMkV0Cn5XBCIQ7lB3Q9wrlBgxoOuMCJcILyUru8sOlynYTJEmDen3WtHUIs
15
+ wbwd2DevrFM5c9/fWL0ZHghdefzrY47/urzqgFl9L7yCCBMM/WwTjgNMwcuG2NMM
16
+ iXXpwjy6hD5DuXVHAmJ9i45ciDR+WVfFsVp3SvUWB6Pq0CraAE+S5Z8BRyiSmEHR
17
+ 4n3NGAnDm7ztFKBIOa+mca1hTN7ggUQ+AkknOd90defpDcoGl2250sgwxZacS1A3
18
+ XIZT4X7/cOrxlfpfxkFUNFW/yVGKhvhGxq6BcEBmrxIpKmDm7Fu7tfdHRgIUJgS4
19
+ GiwEtZtv2O0Jh/DHgJ/2nc0=
20
+ -----END DSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEA3f3Bou3FMmtUGzCgmSsNAg+qZspDR1b/Ym9V+cfqHup4yzJf
3
+ YGysS7ISiHfeny+AoMxeIycFMwfu28zKBo90wxNe9AMSFUEcwzUCSH7ZgErEZS+n
4
+ siXIV3+ZfDOl3/dZ2Nu8pzBBtoRIga9QKlfzTbudiysxjAQF3dk37lZ+vAJt3sJh
5
+ ThcGZy1yqYPvN6NQw65hUuqm+zvRzgk+ZIDXs6cZXzZX+LjWRKZivbeNQDiQF4Z2
6
+ Qsf0GSFV4hb5ASLtdl8FFdV7wEda7XTsHrxOHYgNnlhtKgflGDwC0Q2Ll92b8xY6
7
+ vWL4KmZFPm1drHlSr6Ssv+XjceZArz4cii5SsQIDAQABAoIBAA1vE87GUM6yTA6x
8
+ LKbYQhtD024RA21HyICueCd7f6GLUvAJBliRewPBrPlxN5muiDwy4eeCrv/dlQjc
9
+ JcWr3McJXw+pN+jtXc46YP7+Hi9zVttAvQc83hjdce5gOcOJ9nf3JD2B4BgpfTHL
10
+ 6DAHzoN/vRL09DSi8a/xOz9DILxD1H2rz7U4932VpMfFJvGvg5Cnh2pXg6mBo4IB
11
+ t5JHHWm8wPoQzhVqo4AXltc3J8oi5nWC5gCgnx2dOt9OBBtrRLvofo4SYOs5ZX4N
12
+ ZjPm9zgrzL0JDpVWE1ZOGK6eC8Nd2k0hTN85XmzZR7bWvblq9/nIYbkPm88GkDvi
13
+ YRW2jzkCgYEA+GmrmHQqua471KNk9qLFww5wfJHyBfoD5XVp0xnPb2+9gC2si8+W
14
+ 6wLF01zU1fGB4rHXrlDLM0gjk93LBCLLK11tZuYDDAjAoWgBalcmVINiHowLKfUA
15
+ goJb2styB3Oy+uVwPXw2fCa4m7jwB1mfghmOAI2NBgC4vW2c4LfoJy8CgYEA5MV/
16
+ Q69oDtlnM45zverQkCZjtu69oZWYrkX0Iloj78MxEn36XFkcLfQXG6fCopGKneED
17
+ HOwCMR2nGifexzRcp21sXA1r/46VAhwM260ssDOUQN2DoxngOaMUgZHCm6zGuq4k
18
+ YBv6atSTrWL9wLCH4Iu82lIE5UauRULAirGirB8CgYB3zcbDPOtKJ7yVPcQ4qqIE
19
+ A5e+jEiUF1L/vBOwitcfIF3dTqnTt+dKKkksOa4wDEye/zRMzoxhjB4UdzgtI3am
20
+ 0GUt5ip8CFCWx2k/Vw6WXdLZdqL/tjhruOEB8XJqI6OjGzp5fMluMOKBv7yLXu7t
21
+ uNNicuIbjgeK3C13t1pQYwKBgF7ymR8+bbG8CVkchm0MSAOL61bBP3MQ441w+yJG
22
+ xyN7n6JNJtutIETySaTwu5c9UIq2GNSoH0DDTddNNOj4knvqrk6GQ4yNYMq/WZbT
23
+ CPkYby98wGWxF57UUG52UI7L5q8UF4TMF+K+14veyfJvUfWgCYGTCPUfoLSeP8tQ
24
+ bnOBAoGBAO2uosK4fpL/aasgNdnQl6C0LxYdexWUkv5Qmhyqh24mPNIPmqaQeFVm
25
+ OIzf/MfUBz1y7th/37hjICUVUuCk1siXltlflbw1q2AJMT3ZHxCpBwQyKjO2QWqM
26
+ yWRMZH2Bjn0P7+pxVfKX5bfItH3rBFyQmkAi73KB3hf4amT0q3Ku
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenSSL::PKey::PKey do
4
+ subject { pkeys('rsa') }
5
+
6
+ it 'includes the OpenSSLExtensions::PKey::PKey extensions' do
7
+ subject.should be_kind_of OpenSSLExtensions::PKey::PKey
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenSSLExtensions::PKey::PKey do
4
+ subject { extended_pkeys('rsa') }
5
+
6
+ context '==' do
7
+ it 'is true for matching keys' do
8
+ subject.should == extended_pkeys('rsa')
9
+ end
10
+
11
+ it 'is false for mismatched keys' do
12
+ subject.should_not == extended_pkeys('dsa')
13
+ end
14
+ end
15
+
16
+ context 'eql?' do
17
+ it 'is true for matching keys' do
18
+ subject.should be_eql extended_pkeys('rsa')
19
+ end
20
+
21
+ it 'is false for mismatched keys' do
22
+ subject.should_not be_eql extended_pkeys('dsa')
23
+ end
24
+ end
25
+
26
+ context 'hash' do
27
+ it 'returns the hash of the PEM string' do
28
+ subject.stub!(:to_pem => mock('PEM', :hash => 'test'))
29
+ subject.hash
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,46 @@
1
+ module PKeyFixtures
2
+ ##
3
+ # Returns an OpenSSL::X509::Certificate without explicit extensions.
4
+ #
5
+ def pkeys(name)
6
+ name = name.to_s.downcase.gsub(/[^\w\.]/, '-')
7
+ pkey_path = File.expand_path("../../fixtures/keys/#{name}.key", __FILE__)
8
+ key = nil
9
+
10
+ if File.exist?(pkey_path) && File.readable?(pkey_path)
11
+ data = File.read(pkey_path)
12
+ key = [
13
+ OpenSSL::PKey::RSA,
14
+ OpenSSL::PKey::DSA,
15
+ OpenSSL::PKey::EC,
16
+ OpenSSL::PKey::DH
17
+ ].collect { |klass| instantiate_pkey(data, klass) }.
18
+ detect { |key| !key.nil? }
19
+ data = nil
20
+ end
21
+
22
+ key
23
+ end
24
+
25
+ ##
26
+ # Returns an OpenSSL::PKey explicitly extended with
27
+ # OpenSSLExtensions::PKey::PKey.
28
+ #
29
+ def extended_pkeys(name)
30
+ pkeys(name).extend(OpenSSLExtensions::PKey::PKey)
31
+ end
32
+
33
+
34
+ protected
35
+
36
+
37
+ def instantiate_pkey(data, klass)
38
+ klass.new(data)
39
+ rescue OpenSSL::PKey::PKeyError
40
+ nil
41
+ end
42
+ end
43
+
44
+ RSpec.configure do |config|
45
+ config.include PKeyFixtures
46
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openssl-extensions
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
8
+ - 1
7
9
  - 0
8
- - 0
9
- version: 1.0.0
10
+ version: 1.1.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Nathaniel Bibler
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-01-07 00:00:00 -05:00
18
+ date: 2011-01-20 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ~>
27
28
  - !ruby/object:Gem::Version
29
+ hash: 31
28
30
  segments:
29
31
  - 2
30
32
  - 4
@@ -40,6 +42,7 @@ dependencies:
40
42
  requirements:
41
43
  - - ~>
42
44
  - !ruby/object:Gem::Version
45
+ hash: 29
43
46
  segments:
44
47
  - 0
45
48
  - 0
@@ -58,6 +61,8 @@ extra_rdoc_files: []
58
61
 
59
62
  files:
60
63
  - lib/openssl-extensions/all.rb
64
+ - lib/openssl-extensions/pkey/pkey.rb
65
+ - lib/openssl-extensions/pkey.rb
61
66
  - lib/openssl-extensions/ssl/ssl_socket.rb
62
67
  - lib/openssl-extensions/ssl.rb
63
68
  - lib/openssl-extensions/version.rb
@@ -89,10 +94,14 @@ files:
89
94
  - spec/fixtures/certificates/hongkong-post-root-ca.pem
90
95
  - spec/fixtures/certificates/www.geocerts.com.pem
91
96
  - spec/fixtures/certificates/www.twongo.com.pem
97
+ - spec/fixtures/keys/dsa.key
98
+ - spec/fixtures/keys/rsa.key
99
+ - spec/integration/openssl/pkey/pkey_spec.rb
92
100
  - spec/integration/openssl/ssl/ssl_socket_spec.rb
93
101
  - spec/integration/openssl/x509/certificate_spec.rb
94
102
  - spec/integration/openssl/x509/name_spec.rb
95
103
  - spec/integration/openssl/x509/request_spec.rb
104
+ - spec/models/openssl-extensions/pkey/pkey_spec.rb
96
105
  - spec/models/openssl-extensions/ssl/ssl_socket_spec.rb
97
106
  - spec/models/openssl-extensions/x509/authority_key_identifier_spec.rb
98
107
  - spec/models/openssl-extensions/x509/certificate_chain_spec.rb
@@ -102,6 +111,7 @@ files:
102
111
  - spec/models/openssl-extensions_spec.rb
103
112
  - spec/spec_helper.rb
104
113
  - spec/support/certificate_request_fixtures.rb
114
+ - spec/support/pkey_fixtures.rb
105
115
  - spec/support/ssl_certificate_fixtures.rb
106
116
  has_rdoc: true
107
117
  homepage: http://github.com/envylabs/openssl-extensions
@@ -117,6 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
127
  requirements:
118
128
  - - ">="
119
129
  - !ruby/object:Gem::Version
130
+ hash: 3
120
131
  segments:
121
132
  - 0
122
133
  version: "0"
@@ -125,6 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
136
  requirements:
126
137
  - - ">="
127
138
  - !ruby/object:Gem::Version
139
+ hash: 23
128
140
  segments:
129
141
  - 1
130
142
  - 3
@@ -156,10 +168,14 @@ test_files:
156
168
  - spec/fixtures/certificates/hongkong-post-root-ca.pem
157
169
  - spec/fixtures/certificates/www.geocerts.com.pem
158
170
  - spec/fixtures/certificates/www.twongo.com.pem
171
+ - spec/fixtures/keys/dsa.key
172
+ - spec/fixtures/keys/rsa.key
173
+ - spec/integration/openssl/pkey/pkey_spec.rb
159
174
  - spec/integration/openssl/ssl/ssl_socket_spec.rb
160
175
  - spec/integration/openssl/x509/certificate_spec.rb
161
176
  - spec/integration/openssl/x509/name_spec.rb
162
177
  - spec/integration/openssl/x509/request_spec.rb
178
+ - spec/models/openssl-extensions/pkey/pkey_spec.rb
163
179
  - spec/models/openssl-extensions/ssl/ssl_socket_spec.rb
164
180
  - spec/models/openssl-extensions/x509/authority_key_identifier_spec.rb
165
181
  - spec/models/openssl-extensions/x509/certificate_chain_spec.rb
@@ -169,4 +185,5 @@ test_files:
169
185
  - spec/models/openssl-extensions_spec.rb
170
186
  - spec/spec_helper.rb
171
187
  - spec/support/certificate_request_fixtures.rb
188
+ - spec/support/pkey_fixtures.rb
172
189
  - spec/support/ssl_certificate_fixtures.rb