net-ssh 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ === 2.0.2 / 29 May 2008
2
+
3
+ * Make sure the agent client understands both RSA "identities answers" [Jamis Buck]
4
+
5
+ * Fixed key truncation bug that caused hmacs other than SHA1 to fail with "corrupt hmac" errors [Jamis Buck]
6
+
7
+ * Fix detection and loading of public keys when the keys don't actually exist [David Dollar]
8
+
9
+
1
10
  === 2.0.1 / 5 May 2008
2
11
 
3
12
  * Teach Net::SSH about a handful of default key names [Jamis Buck]
@@ -39,7 +39,8 @@ module Net; module SSH; module Authentication
39
39
  SSH_COM_AGENT2_FAILURE = 102
40
40
 
41
41
  SSH_AGENT_REQUEST_RSA_IDENTITIES = 1
42
- SSH_AGENT_RSA_IDENTITIES_ANSWER = 2
42
+ SSH_AGENT_RSA_IDENTITIES_ANSWER1 = 2
43
+ SSH_AGENT_RSA_IDENTITIES_ANSWER2 = 5
43
44
  SSH_AGENT_FAILURE = 5
44
45
 
45
46
  # The underlying socket being used to communicate with the SSH agent.
@@ -82,7 +83,7 @@ module Net; module SSH; module Authentication
82
83
 
83
84
  if type == SSH2_AGENT_VERSION_RESPONSE
84
85
  raise NotImplementedError, "SSH2 agents are not yet supported"
85
- elsif type != SSH_AGENT_RSA_IDENTITIES_ANSWER
86
+ elsif type != SSH_AGENT_RSA_IDENTITIES_ANSWER1 && type != SSH_AGENT_RSA_IDENTITIES_ANSWER2
86
87
  raise AgentError, "unknown response from agent: #{type}, #{body.to_s.inspect}"
87
88
  end
88
89
  end
@@ -89,9 +89,10 @@ module Net
89
89
  end
90
90
 
91
91
  key_files.each do |file|
92
- if File.readable?(file)
92
+ public_key_file = file + '.pub'
93
+ if File.readable?(public_key_file)
93
94
  begin
94
- key = KeyFactory.load_public_key(file + ".pub")
95
+ key = KeyFactory.load_public_key(public_key_file)
95
96
  identities.push key
96
97
  known_identities[key] = { :from => :file, :file => file }
97
98
  rescue Exception => e
@@ -31,13 +31,19 @@ module Net; module SSH; module Transport; module HMAC
31
31
  define_method(attribute) { self.class.send(attribute) }
32
32
  end
33
33
 
34
- # The key to use for this instance.
35
- attr_accessor :key
34
+ # The key in use for this instance.
35
+ attr_reader :key
36
36
 
37
37
  def initialize(key=nil)
38
38
  self.key = key
39
39
  end
40
40
 
41
+ # Sets the key to the given value, truncating it so that it is the correct
42
+ # length.
43
+ def key=(value)
44
+ @key = value ? value.to_s[0,key_length] : nil
45
+ end
46
+
41
47
  # Compute the HMAC digest for the given data string.
42
48
  def digest(data)
43
49
  OpenSSL::HMAC.digest(digest_class.new, key, data)[0,mac_length]
@@ -49,7 +49,7 @@ module Net; module SSH
49
49
  MINOR = 0
50
50
 
51
51
  # The tiny component of this version of the Net::SSH library
52
- TINY = 1
52
+ TINY = 2
53
53
 
54
54
  # The current version of the Net::SSH library as a Version instance
55
55
  CURRENT = new(MAJOR, MINOR, TINY)
@@ -1,21 +1,23 @@
1
1
 
2
- # Gem::Specification for Net-ssh-2.0.1
2
+ # Gem::Specification for Net-ssh-2.0.2
3
3
  # Originally generated by Echoe
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{net-ssh}
7
- s.version = "2.0.1"
7
+ s.version = "2.0.2"
8
8
 
9
9
  s.specification_version = 2 if s.respond_to? :specification_version=
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Jamis Buck"]
13
- s.date = %q{2008-05-05}
13
+ s.date = %q{2008-05-29}
14
14
  s.description = %q{a pure-Ruby implementation of the SSH2 client protocol}
15
15
  s.email = %q{jamis@jamisbuck.org}
16
+ s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/net/ssh/authentication/agent.rb", "lib/net/ssh/authentication/constants.rb", "lib/net/ssh/authentication/key_manager.rb", "lib/net/ssh/authentication/methods/abstract.rb", "lib/net/ssh/authentication/methods/hostbased.rb", "lib/net/ssh/authentication/methods/keyboard_interactive.rb", "lib/net/ssh/authentication/methods/password.rb", "lib/net/ssh/authentication/methods/publickey.rb", "lib/net/ssh/authentication/pageant.rb", "lib/net/ssh/authentication/session.rb", "lib/net/ssh/buffer.rb", "lib/net/ssh/buffered_io.rb", "lib/net/ssh/config.rb", "lib/net/ssh/connection/channel.rb", "lib/net/ssh/connection/constants.rb", "lib/net/ssh/connection/session.rb", "lib/net/ssh/connection/term.rb", "lib/net/ssh/errors.rb", "lib/net/ssh/key_factory.rb", "lib/net/ssh/known_hosts.rb", "lib/net/ssh/loggable.rb", "lib/net/ssh/packet.rb", "lib/net/ssh/prompt.rb", "lib/net/ssh/proxy/errors.rb", "lib/net/ssh/proxy/http.rb", "lib/net/ssh/proxy/socks4.rb", "lib/net/ssh/proxy/socks5.rb", "lib/net/ssh/service/forward.rb", "lib/net/ssh/test/channel.rb", "lib/net/ssh/test/extensions.rb", "lib/net/ssh/test/kex.rb", "lib/net/ssh/test/local_packet.rb", "lib/net/ssh/test/packet.rb", "lib/net/ssh/test/remote_packet.rb", "lib/net/ssh/test/script.rb", "lib/net/ssh/test/socket.rb", "lib/net/ssh/test.rb", "lib/net/ssh/transport/algorithms.rb", "lib/net/ssh/transport/cipher_factory.rb", "lib/net/ssh/transport/constants.rb", "lib/net/ssh/transport/hmac/abstract.rb", "lib/net/ssh/transport/hmac/md5.rb", "lib/net/ssh/transport/hmac/md5_96.rb", "lib/net/ssh/transport/hmac/none.rb", "lib/net/ssh/transport/hmac/sha1.rb", "lib/net/ssh/transport/hmac/sha1_96.rb", "lib/net/ssh/transport/hmac.rb", "lib/net/ssh/transport/identity_cipher.rb", "lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb", "lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb", "lib/net/ssh/transport/kex.rb", "lib/net/ssh/transport/openssl.rb", "lib/net/ssh/transport/packet_stream.rb", "lib/net/ssh/transport/server_version.rb", "lib/net/ssh/transport/session.rb", "lib/net/ssh/transport/state.rb", "lib/net/ssh/verifiers/lenient.rb", "lib/net/ssh/verifiers/null.rb", "lib/net/ssh/verifiers/strict.rb", "lib/net/ssh/version.rb", "lib/net/ssh.rb", "README.rdoc", "THANKS.rdoc"]
16
17
  s.files = ["CHANGELOG.rdoc", "lib/net/ssh/authentication/agent.rb", "lib/net/ssh/authentication/constants.rb", "lib/net/ssh/authentication/key_manager.rb", "lib/net/ssh/authentication/methods/abstract.rb", "lib/net/ssh/authentication/methods/hostbased.rb", "lib/net/ssh/authentication/methods/keyboard_interactive.rb", "lib/net/ssh/authentication/methods/password.rb", "lib/net/ssh/authentication/methods/publickey.rb", "lib/net/ssh/authentication/pageant.rb", "lib/net/ssh/authentication/session.rb", "lib/net/ssh/buffer.rb", "lib/net/ssh/buffered_io.rb", "lib/net/ssh/config.rb", "lib/net/ssh/connection/channel.rb", "lib/net/ssh/connection/constants.rb", "lib/net/ssh/connection/session.rb", "lib/net/ssh/connection/term.rb", "lib/net/ssh/errors.rb", "lib/net/ssh/key_factory.rb", "lib/net/ssh/known_hosts.rb", "lib/net/ssh/loggable.rb", "lib/net/ssh/packet.rb", "lib/net/ssh/prompt.rb", "lib/net/ssh/proxy/errors.rb", "lib/net/ssh/proxy/http.rb", "lib/net/ssh/proxy/socks4.rb", "lib/net/ssh/proxy/socks5.rb", "lib/net/ssh/service/forward.rb", "lib/net/ssh/test/channel.rb", "lib/net/ssh/test/extensions.rb", "lib/net/ssh/test/kex.rb", "lib/net/ssh/test/local_packet.rb", "lib/net/ssh/test/packet.rb", "lib/net/ssh/test/remote_packet.rb", "lib/net/ssh/test/script.rb", "lib/net/ssh/test/socket.rb", "lib/net/ssh/test.rb", "lib/net/ssh/transport/algorithms.rb", "lib/net/ssh/transport/cipher_factory.rb", "lib/net/ssh/transport/constants.rb", "lib/net/ssh/transport/hmac/abstract.rb", "lib/net/ssh/transport/hmac/md5.rb", "lib/net/ssh/transport/hmac/md5_96.rb", "lib/net/ssh/transport/hmac/none.rb", "lib/net/ssh/transport/hmac/sha1.rb", "lib/net/ssh/transport/hmac/sha1_96.rb", "lib/net/ssh/transport/hmac.rb", "lib/net/ssh/transport/identity_cipher.rb", "lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb", "lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb", "lib/net/ssh/transport/kex.rb", "lib/net/ssh/transport/openssl.rb", "lib/net/ssh/transport/packet_stream.rb", "lib/net/ssh/transport/server_version.rb", "lib/net/ssh/transport/session.rb", "lib/net/ssh/transport/state.rb", "lib/net/ssh/verifiers/lenient.rb", "lib/net/ssh/verifiers/null.rb", "lib/net/ssh/verifiers/strict.rb", "lib/net/ssh/version.rb", "lib/net/ssh.rb", "Rakefile", "README.rdoc", "setup.rb", "test/authentication/methods/common.rb", "test/authentication/methods/test_abstract.rb", "test/authentication/methods/test_hostbased.rb", "test/authentication/methods/test_keyboard_interactive.rb", "test/authentication/methods/test_password.rb", "test/authentication/methods/test_publickey.rb", "test/authentication/test_agent.rb", "test/authentication/test_key_manager.rb", "test/authentication/test_session.rb", "test/common.rb", "test/configs/exact_match", "test/configs/wild_cards", "test/connection/test_channel.rb", "test/connection/test_session.rb", "test/test_all.rb", "test/test_buffer.rb", "test/test_buffered_io.rb", "test/test_config.rb", "test/test_key_factory.rb", "test/transport/hmac/test_md5.rb", "test/transport/hmac/test_md5_96.rb", "test/transport/hmac/test_none.rb", "test/transport/hmac/test_sha1.rb", "test/transport/hmac/test_sha1_96.rb", "test/transport/kex/test_diffie_hellman_group1_sha1.rb", "test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb", "test/transport/test_algorithms.rb", "test/transport/test_cipher_factory.rb", "test/transport/test_hmac.rb", "test/transport/test_identity_cipher.rb", "test/transport/test_packet_stream.rb", "test/transport/test_server_version.rb", "test/transport/test_session.rb", "test/transport/test_state.rb", "THANKS.rdoc", "Manifest", "net-ssh.gemspec"]
17
18
  s.has_rdoc = true
18
19
  s.homepage = %q{http://net-ssh.rubyforge.org/ssh}
20
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Net-ssh", "--main", "README.rdoc"]
19
21
  s.require_paths = ["lib"]
20
22
  s.rubyforge_project = %q{net-ssh}
21
23
  s.rubygems_version = %q{1.1.1}
@@ -103,4 +103,4 @@ class MockTransport < Net::SSH::Transport::Session
103
103
  def hint(name, value=true)
104
104
  @hints[name] = value
105
105
  end
106
- end
106
+ end
@@ -24,6 +24,11 @@ module Transport; module HMAC
24
24
  assert_equal "\275\345\006\307y~Oi\035<.\341\031\250<\257", hmac.digest("hello world")
25
25
  end
26
26
 
27
+ def test_key_should_be_truncated_to_required_length
28
+ hmac = subject.new("12345678901234567890")
29
+ assert_equal "1234567890123456", hmac.key
30
+ end
31
+
27
32
  private
28
33
 
29
34
  def subject
@@ -7,7 +7,7 @@ module Transport
7
7
  Net::SSH::Transport::HMAC::MAP.each do |name, value|
8
8
  method = name.tr("-", "_")
9
9
  define_method("test_get_with_#{method}_returns_new_hmac_instance") do
10
- key = "abcdefghijklmnopqrstuvwxyz"[0..Net::SSH::Transport::HMAC::MAP[name].key_length]
10
+ key = "abcdefghijklmnopqrstuvwxyz"[0,Net::SSH::Transport::HMAC::MAP[name].key_length]
11
11
  hmac = Net::SSH::Transport::HMAC.get(name, key)
12
12
  assert_instance_of Net::SSH::Transport::HMAC::MAP[name], hmac
13
13
  assert_equal key, hmac.key
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamis Buck
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-05 00:00:00 -06:00
12
+ date: 2008-05-29 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -19,8 +19,71 @@ executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
- extra_rdoc_files: []
23
-
22
+ extra_rdoc_files:
23
+ - CHANGELOG.rdoc
24
+ - lib/net/ssh/authentication/agent.rb
25
+ - lib/net/ssh/authentication/constants.rb
26
+ - lib/net/ssh/authentication/key_manager.rb
27
+ - lib/net/ssh/authentication/methods/abstract.rb
28
+ - lib/net/ssh/authentication/methods/hostbased.rb
29
+ - lib/net/ssh/authentication/methods/keyboard_interactive.rb
30
+ - lib/net/ssh/authentication/methods/password.rb
31
+ - lib/net/ssh/authentication/methods/publickey.rb
32
+ - lib/net/ssh/authentication/pageant.rb
33
+ - lib/net/ssh/authentication/session.rb
34
+ - lib/net/ssh/buffer.rb
35
+ - lib/net/ssh/buffered_io.rb
36
+ - lib/net/ssh/config.rb
37
+ - lib/net/ssh/connection/channel.rb
38
+ - lib/net/ssh/connection/constants.rb
39
+ - lib/net/ssh/connection/session.rb
40
+ - lib/net/ssh/connection/term.rb
41
+ - lib/net/ssh/errors.rb
42
+ - lib/net/ssh/key_factory.rb
43
+ - lib/net/ssh/known_hosts.rb
44
+ - lib/net/ssh/loggable.rb
45
+ - lib/net/ssh/packet.rb
46
+ - lib/net/ssh/prompt.rb
47
+ - lib/net/ssh/proxy/errors.rb
48
+ - lib/net/ssh/proxy/http.rb
49
+ - lib/net/ssh/proxy/socks4.rb
50
+ - lib/net/ssh/proxy/socks5.rb
51
+ - lib/net/ssh/service/forward.rb
52
+ - lib/net/ssh/test/channel.rb
53
+ - lib/net/ssh/test/extensions.rb
54
+ - lib/net/ssh/test/kex.rb
55
+ - lib/net/ssh/test/local_packet.rb
56
+ - lib/net/ssh/test/packet.rb
57
+ - lib/net/ssh/test/remote_packet.rb
58
+ - lib/net/ssh/test/script.rb
59
+ - lib/net/ssh/test/socket.rb
60
+ - lib/net/ssh/test.rb
61
+ - lib/net/ssh/transport/algorithms.rb
62
+ - lib/net/ssh/transport/cipher_factory.rb
63
+ - lib/net/ssh/transport/constants.rb
64
+ - lib/net/ssh/transport/hmac/abstract.rb
65
+ - lib/net/ssh/transport/hmac/md5.rb
66
+ - lib/net/ssh/transport/hmac/md5_96.rb
67
+ - lib/net/ssh/transport/hmac/none.rb
68
+ - lib/net/ssh/transport/hmac/sha1.rb
69
+ - lib/net/ssh/transport/hmac/sha1_96.rb
70
+ - lib/net/ssh/transport/hmac.rb
71
+ - lib/net/ssh/transport/identity_cipher.rb
72
+ - lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb
73
+ - lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb
74
+ - lib/net/ssh/transport/kex.rb
75
+ - lib/net/ssh/transport/openssl.rb
76
+ - lib/net/ssh/transport/packet_stream.rb
77
+ - lib/net/ssh/transport/server_version.rb
78
+ - lib/net/ssh/transport/session.rb
79
+ - lib/net/ssh/transport/state.rb
80
+ - lib/net/ssh/verifiers/lenient.rb
81
+ - lib/net/ssh/verifiers/null.rb
82
+ - lib/net/ssh/verifiers/strict.rb
83
+ - lib/net/ssh/version.rb
84
+ - lib/net/ssh.rb
85
+ - README.rdoc
86
+ - THANKS.rdoc
24
87
  files:
25
88
  - CHANGELOG.rdoc
26
89
  - lib/net/ssh/authentication/agent.rb
@@ -127,8 +190,13 @@ files:
127
190
  has_rdoc: true
128
191
  homepage: http://net-ssh.rubyforge.org/ssh
129
192
  post_install_message:
130
- rdoc_options: []
131
-
193
+ rdoc_options:
194
+ - --line-numbers
195
+ - --inline-source
196
+ - --title
197
+ - Net-ssh
198
+ - --main
199
+ - README.rdoc
132
200
  require_paths:
133
201
  - lib
134
202
  required_ruby_version: !ruby/object:Gem::Requirement