net-ssh 4.0.0.alpha4 → 4.0.0.beta1
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 +4 -4
- checksums.yaml.gz.sig +2 -1
- data.tar.gz.sig +0 -0
- data/.travis.yml +7 -5
- data/CHANGES.txt +6 -0
- data/appveyor.yml +4 -2
- data/lib/net/ssh.rb +13 -8
- data/lib/net/ssh/authentication/ed25519.rb +6 -4
- data/lib/net/ssh/authentication/ed25519_loader.rb +21 -0
- data/lib/net/ssh/authentication/key_manager.rb +1 -1
- data/lib/net/ssh/authentication/pageant.rb +1 -1
- data/lib/net/ssh/buffer.rb +27 -4
- data/lib/net/ssh/connection/session.rb +1 -0
- data/lib/net/ssh/key_factory.rb +7 -6
- data/lib/net/ssh/transport/algorithms.rb +3 -2
- data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +5 -3
- data/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +1 -1
- data/lib/net/ssh/transport/openssl.rb +1 -1
- data/lib/net/ssh/transport/state.rb +1 -1
- data/lib/net/ssh/version.rb +1 -1
- data/net-ssh.gemspec +5 -4
- metadata +29 -14
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d025eee7824e27e0335a51be6851449e02c0b5e0
|
4
|
+
data.tar.gz: 26ec72c6a40090938e90a01f8bf038802aff27f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc0fffec6a7fc76d68155dc5016c04f2b484d51a2537c4f4c822427e16f6d8ccb8fe9ce822f6a855905e06f480152d204b12be56f7b01740cb7fe9acbd35d080
|
7
|
+
data.tar.gz: 6adc48f5d3eae3f8396d2ccfb8605b74ab578114a98a662ff1d159ff1e0c6e728ae693338b2d465204b01db09e8538467edd82e070158c1286b42e7e79e07d43
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
��6j|x��9/�����xĆ2���x�5��f~
|
2
|
+
��3�������N%�#i5�v��A�҄�YR��B�ԊPv��7��L�_wv�,/��9�''�(a�\v���b��+ ,��T��t�>A�OG9^��cݛ�Lp���*�Ll%+�[��1?�s=5���x�4�6�r�Hޣ���vT�nb00���u����%Q��)��yqt
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.travis.yml
CHANGED
@@ -7,7 +7,7 @@ rvm:
|
|
7
7
|
- 2.1
|
8
8
|
- 2.2
|
9
9
|
- 2.3.0
|
10
|
-
- jruby-9.
|
10
|
+
- jruby-9.1.2.0
|
11
11
|
- rbx-3.25
|
12
12
|
- ruby-head
|
13
13
|
env:
|
@@ -16,23 +16,25 @@ env:
|
|
16
16
|
matrix:
|
17
17
|
exclude:
|
18
18
|
- rvm: rbx-3.25
|
19
|
-
- rvm: jruby-9.
|
19
|
+
- rvm: jruby-9.1.2.0
|
20
20
|
include:
|
21
21
|
- rvm: rbx-3.25
|
22
22
|
env: NET_SSH_RUN_INTEGRATION_TESTS=
|
23
|
-
- rvm: jruby-9.
|
23
|
+
- rvm: jruby-9.1.2.0
|
24
24
|
env: JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -Xcext.enabled=false -J-Xss2m -Xcompile.invokedynamic=false' NET_SSH_RUN_INTEGRATION_TESTS=
|
25
|
+
fast_finish: true
|
25
26
|
allow_failures:
|
26
|
-
- rvm: ruby-head
|
27
27
|
- rvm: rbx-3.25
|
28
|
-
- rvm: jruby-9.
|
28
|
+
- rvm: jruby-9.1.2.0
|
29
29
|
|
30
30
|
install:
|
31
31
|
- export JRUBY_OPTS='--client -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -Xcext.enabled=false -J-Xss2m -Xcompile.invokedynamic=false'
|
32
32
|
- sudo pip install ansible
|
33
33
|
- gem install bundler -v "= 1.11.2"
|
34
34
|
- bundle _1.11.2_ install
|
35
|
+
- BUNDLE_GEMFILE=./Gemfile.norbnacl bundle _1.11.2_ install
|
35
36
|
- sudo ansible-galaxy install rvm_io.rvm1-ruby
|
37
|
+
- sudo chown -R travis:travis /home/travis/.ansible
|
36
38
|
- ansible-playbook ./test/integration/playbook.yml -i "localhost," --become -c local -e 'no_rvm=true' -e 'myuser=travis' -e 'mygroup=travis' -e 'homedir=/home/travis'
|
37
39
|
|
38
40
|
script:
|
data/CHANGES.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 4.0.0.beta
|
2
|
+
|
3
|
+
* Fix pageant [elconas, #235]
|
4
|
+
* Relaxed rbnacl,rbnacl-selenium contstraints ang give better errors about them [Miklos Fazekas, #398]
|
5
|
+
* Fix UTF-8 encoding issues [Ethan J. Brown, #407]
|
6
|
+
|
1
7
|
=== 4.0.0.alpha4
|
2
8
|
|
3
9
|
* Experimental event loop abstraction [Miklos Fazekas]
|
data/appveyor.yml
CHANGED
@@ -10,9 +10,11 @@ environment:
|
|
10
10
|
install:
|
11
11
|
- SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
12
12
|
- gem install bundler --no-document -v 1.11.2
|
13
|
-
- BUNDLE_GEMFILE
|
13
|
+
- SET BUNDLE_GEMFILE=Gemfile.norbnacl
|
14
|
+
- bundle _1.11.2_ install --retry=3
|
14
15
|
|
15
16
|
test_script:
|
16
|
-
- BUNDLE_GEMFILE
|
17
|
+
- SET BUNDLE_GEMFILE=Gemfile.norbnacl
|
18
|
+
- bundle _1.11.2_ exec rake test
|
17
19
|
|
18
20
|
build: off
|
data/lib/net/ssh.rb
CHANGED
@@ -71,7 +71,8 @@ module Net
|
|
71
71
|
:known_hosts, :global_known_hosts_file, :user_known_hosts_file, :host_key_alias,
|
72
72
|
:host_name, :user, :properties, :passphrase, :keys_only, :max_pkt_size,
|
73
73
|
:max_win_size, :send_env, :use_agent, :number_of_password_prompts,
|
74
|
-
:append_supported_algorithms, :non_interactive, :password_prompt, :agent_socket_factory
|
74
|
+
:append_supported_algorithms, :non_interactive, :password_prompt, :agent_socket_factory,
|
75
|
+
:minimum_dh_bits
|
75
76
|
]
|
76
77
|
|
77
78
|
# The standard means of starting a new SSH connection. When used with a
|
@@ -206,6 +207,8 @@ module Net
|
|
206
207
|
raise ArgumentError, "invalid option(s): #{invalid_options.join(', ')}"
|
207
208
|
end
|
208
209
|
|
210
|
+
assign_defaults(options)
|
211
|
+
|
209
212
|
if options.values.include? nil
|
210
213
|
nil_options = options.keys.select { |k| options[k].nil? }
|
211
214
|
raise ArgumentError, "Value(s) have been set to nil: #{nil_options.join(', ')}"
|
@@ -215,17 +218,10 @@ module Net
|
|
215
218
|
options = configuration_for(host, options.fetch(:config, true)).merge(options)
|
216
219
|
host = options.fetch(:host_name, host)
|
217
220
|
|
218
|
-
if !options.key?(:logger)
|
219
|
-
options[:logger] = Logger.new(STDERR)
|
220
|
-
options[:logger].level = Logger::FATAL
|
221
|
-
end
|
222
|
-
|
223
221
|
if options[:non_interactive]
|
224
222
|
options[:number_of_password_prompts] = 0
|
225
223
|
end
|
226
224
|
|
227
|
-
options[:password_prompt] ||= Prompt.default(options)
|
228
|
-
|
229
225
|
if options[:verbose]
|
230
226
|
options[:logger].level = case options[:verbose]
|
231
227
|
when Fixnum then options[:verbose]
|
@@ -277,5 +273,14 @@ module Net
|
|
277
273
|
|
278
274
|
Net::SSH::Config.for(host, files)
|
279
275
|
end
|
276
|
+
|
277
|
+
def self.assign_defaults(options)
|
278
|
+
if !options[:logger]
|
279
|
+
options[:logger] = Logger.new(STDERR)
|
280
|
+
options[:logger].level = Logger::FATAL
|
281
|
+
end
|
282
|
+
|
283
|
+
options[:password_prompt] ||= Prompt.default(options)
|
284
|
+
end
|
280
285
|
end
|
281
286
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
gem 'rbnacl-libsodium', '
|
2
|
-
gem 'rbnacl', '
|
1
|
+
gem 'rbnacl-libsodium', '>= 1.0.10'
|
2
|
+
gem 'rbnacl', '>= 3.2.0', '< 4.0'
|
3
3
|
gem 'bcrypt_pbkdf', '~> 1.0.0.alpha1' unless RUBY_PLATFORM == "java"
|
4
4
|
|
5
5
|
require 'rbnacl/libsodium'
|
@@ -14,6 +14,7 @@ require 'base64'
|
|
14
14
|
require 'net/ssh/transport/cipher_factory'
|
15
15
|
require 'bcrypt_pbkdf' unless RUBY_PLATFORM == "java"
|
16
16
|
|
17
|
+
module Net; module SSH; module Authentication
|
17
18
|
module ED25519
|
18
19
|
class SigningKeyFromFile < RbNaCl::Signatures::Ed25519::SigningKey
|
19
20
|
def initialize(pk,sk)
|
@@ -32,7 +33,7 @@ module ED25519
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def to_blob
|
35
|
-
Net::SSH::Buffer.from(:
|
36
|
+
Net::SSH::Buffer.from(:mstring,"ssh-ed25519",:string,@verify_key.to_bytes).to_s
|
36
37
|
end
|
37
38
|
|
38
39
|
def ssh_type
|
@@ -132,4 +133,5 @@ module ED25519
|
|
132
133
|
ED25519::PubKey.read_keyblob(buffer)
|
133
134
|
end
|
134
135
|
end
|
135
|
-
end
|
136
|
+
end
|
137
|
+
end; end; end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Net; module SSH; module Authentication
|
2
|
+
|
3
|
+
# Loads ED25519 support which requires optinal dependecies like
|
4
|
+
# rbnacl-libsodium, rbnacl, bcrypt_pbkdf
|
5
|
+
module ED25519Loader
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'net/ssh/authentication/ed25519'
|
9
|
+
LOADED = true
|
10
|
+
ERROR = nil
|
11
|
+
rescue LoadError => e
|
12
|
+
ERROR = e
|
13
|
+
LOADED = false
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.raiseUnlessLoaded(message)
|
17
|
+
raise NotImplementedError, "#{message} -- see #{ED25519_LOAD_ERROR}" unless LOADED
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end; end; end
|
@@ -254,7 +254,7 @@ module Net; module SSH; module Authentication
|
|
254
254
|
Win.GetTokenInformation(token_handle,
|
255
255
|
token_information_class,
|
256
256
|
Win::NULL, 0, preturn_length)
|
257
|
-
ptoken_information = malloc_ptr(preturn_length.
|
257
|
+
ptoken_information = malloc_ptr(preturn_length.to_s(Win::SIZEOF_DWORD).unpack('L')[0])
|
258
258
|
|
259
259
|
# This call is going to write the requested information to
|
260
260
|
# the memory location referenced by token_information.
|
data/lib/net/ssh/buffer.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'net/ssh/ruby_compat'
|
2
2
|
require 'net/ssh/transport/openssl'
|
3
3
|
|
4
|
+
require 'net/ssh/authentication/ed25519_loader'
|
5
|
+
|
4
6
|
module Net; module SSH
|
5
7
|
|
6
8
|
# Net::SSH::Buffer is a flexible class for building and parsing binary
|
@@ -34,6 +36,7 @@ module Net; module SSH
|
|
34
36
|
# * :long => write a 4-byte integer (#write_long)
|
35
37
|
# * :byte => write a single byte (#write_byte)
|
36
38
|
# * :string => write a 4-byte length followed by character data (#write_string)
|
39
|
+
# * :mstring => same as string, but caller cannot resuse the string, avoids potential duplication (#write_moved)
|
37
40
|
# * :bool => write a single byte, interpreted as a boolean (#write_bool)
|
38
41
|
# * :bignum => write an SSH-encoded bignum (#write_bignum)
|
39
42
|
# * :key => write an SSH-encoded key value (#write_key)
|
@@ -182,7 +185,7 @@ module Net; module SSH
|
|
182
185
|
consume!
|
183
186
|
data
|
184
187
|
end
|
185
|
-
|
188
|
+
|
186
189
|
# Return the next 8 bytes as a 64-bit integer (in network byte order).
|
187
190
|
# Returns nil if there are less than 8 bytes remaining to be read in the
|
188
191
|
# buffer.
|
@@ -256,8 +259,8 @@ module Net; module SSH
|
|
256
259
|
key.n = read_bignum
|
257
260
|
|
258
261
|
when /^ssh-ed25519$/
|
259
|
-
key
|
260
|
-
|
262
|
+
Net::SSH::Authentication::ED25519Loader.raiseUnlessLoaded("unsupported key type `#{type}'")
|
263
|
+
key = Net::SSH::Authentication::ED25519::PubKey.read_keyblob(self)
|
261
264
|
when /^ecdsa\-sha2\-(\w*)$/
|
262
265
|
unless defined?(OpenSSL::PKey::EC)
|
263
266
|
raise NotImplementedError, "unsupported key type `#{type}'"
|
@@ -284,7 +287,14 @@ module Net; module SSH
|
|
284
287
|
# Writes the given data literally into the string. Does not alter the
|
285
288
|
# read position. Returns the buffer object.
|
286
289
|
def write(*data)
|
287
|
-
data.each { |datum| @content << datum }
|
290
|
+
data.each { |datum| @content << datum.dup.force_encoding('BINARY') }
|
291
|
+
self
|
292
|
+
end
|
293
|
+
|
294
|
+
# Optimized version of write where the caller gives up ownership of string
|
295
|
+
# to the method. This way we can mutate the string.
|
296
|
+
def write_moved(string)
|
297
|
+
@content << string.force_encoding('BINARY')
|
288
298
|
self
|
289
299
|
end
|
290
300
|
|
@@ -327,6 +337,19 @@ module Net; module SSH
|
|
327
337
|
self
|
328
338
|
end
|
329
339
|
|
340
|
+
# Writes each argument to the buffer as an SSH2-encoded string. Each
|
341
|
+
# string is prefixed by its length, encoded as a 4-byte long integer.
|
342
|
+
# Does not alter the read position. Returns the buffer object.
|
343
|
+
# Might alter arguments see write_moved
|
344
|
+
def write_mstring(*text)
|
345
|
+
text.each do |string|
|
346
|
+
s = string.to_s
|
347
|
+
write_long(s.bytesize)
|
348
|
+
write_moved(s)
|
349
|
+
end
|
350
|
+
self
|
351
|
+
end
|
352
|
+
|
330
353
|
# Writes each argument to the buffer as a (C-style) boolean, with 1
|
331
354
|
# meaning true, and 0 meaning false. Does not alter the read position.
|
332
355
|
# Returns the buffer object.
|
data/lib/net/ssh/key_factory.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
require 'net/ssh/transport/openssl'
|
2
2
|
require 'net/ssh/prompt'
|
3
3
|
|
4
|
-
|
5
|
-
require 'net/ssh/authentication/ed25519'
|
6
|
-
rescue Gem::LoadError => e # rubocop:disable Lint/HandleExceptions
|
7
|
-
end
|
4
|
+
require 'net/ssh/authentication/ed25519_loader'
|
8
5
|
|
9
6
|
module Net; module SSH
|
10
7
|
|
@@ -26,7 +23,7 @@ module Net; module SSH
|
|
26
23
|
}
|
27
24
|
if defined?(OpenSSL::PKey::EC)
|
28
25
|
MAP["ecdsa"] = OpenSSL::PKey::EC
|
29
|
-
MAP["ed25519"] = ED25519::PrivKey if defined? ED25519
|
26
|
+
MAP["ed25519"] = Net::SSH::Authentication::ED25519::PrivKey if defined? Net::SSH::Authentication::ED25519
|
30
27
|
end
|
31
28
|
|
32
29
|
class <<self
|
@@ -112,7 +109,11 @@ module Net; module SSH
|
|
112
109
|
# appropriately.
|
113
110
|
def classify_key(data, filename)
|
114
111
|
if data.match(/-----BEGIN OPENSSH PRIVATE KEY-----/)
|
115
|
-
|
112
|
+
if defined?(Net::SSH::Authentication::ED25519)
|
113
|
+
return ->(key_data, passphrase) { Net::SSH::Authentication::ED25519::PrivKey.read(key_data, passphrase) }, ArgumentError
|
114
|
+
else
|
115
|
+
raise OpenSSL::PKey::PKeyError, "OpenSSH keys only supported if ED25519 is available - #{ED25519_LOAD_ERROR}"
|
116
|
+
end
|
116
117
|
elsif OpenSSL::PKey.respond_to?(:read)
|
117
118
|
return ->(key_data, passphrase) { OpenSSL::PKey.read(key_data, passphrase) }, ArgumentError
|
118
119
|
elsif data.match(/-----BEGIN DSA PRIVATE KEY-----/)
|
@@ -287,8 +287,8 @@ module Net; module SSH; module Transport
|
|
287
287
|
|
288
288
|
Net::SSH::Buffer.from(:byte, KEXINIT,
|
289
289
|
:long, [rand(0xFFFFFFFF), rand(0xFFFFFFFF), rand(0xFFFFFFFF), rand(0xFFFFFFFF)],
|
290
|
-
:
|
291
|
-
:
|
290
|
+
:mstring, [kex, host_key, encryption, encryption, hmac, hmac],
|
291
|
+
:mstring, [compression, compression, language, language],
|
292
292
|
:bool, false, :long, 0)
|
293
293
|
end
|
294
294
|
|
@@ -357,6 +357,7 @@ module Net; module SSH; module Transport
|
|
357
357
|
:server_algorithm_packet => @server_packet,
|
358
358
|
:client_algorithm_packet => @client_packet,
|
359
359
|
:need_bytes => kex_byte_requirement,
|
360
|
+
:minimum_dh_bits => options[:minimum_dh_bits],
|
360
361
|
:logger => logger)
|
361
362
|
result = algorithm.exchange_keys
|
362
363
|
|
@@ -23,8 +23,10 @@ module Net::SSH::Transport::Kex
|
|
23
23
|
# for Compatibility: OpenSSH requires (need_bits * 2 + 1) length of parameter
|
24
24
|
need_bits = data[:need_bytes] * 8 * 2 + 1
|
25
25
|
|
26
|
-
|
27
|
-
|
26
|
+
data[:minimum_dh_bits] ||= MINIMUM_BITS
|
27
|
+
|
28
|
+
if need_bits < data[:minimum_dh_bits]
|
29
|
+
need_bits = data[:minimum_dh_bits]
|
28
30
|
elsif need_bits > MAXIMUM_BITS
|
29
31
|
need_bits = MAXIMUM_BITS
|
30
32
|
end
|
@@ -38,7 +40,7 @@ module Net::SSH::Transport::Kex
|
|
38
40
|
compute_need_bits
|
39
41
|
|
40
42
|
# request the DH key parameters for the given number of bits.
|
41
|
-
buffer = Net::SSH::Buffer.from(:byte, KEXDH_GEX_REQUEST, :long,
|
43
|
+
buffer = Net::SSH::Buffer.from(:byte, KEXDH_GEX_REQUEST, :long, data[:minimum_dh_bits],
|
42
44
|
:long, data[:need_bits], :long, MAXIMUM_BITS)
|
43
45
|
connection.send_message(buffer)
|
44
46
|
|
@@ -57,7 +57,7 @@ module Net; module SSH; module Transport; module Kex
|
|
57
57
|
# send the KEXECDH_INIT message
|
58
58
|
## byte SSH_MSG_KEX_ECDH_INIT
|
59
59
|
## string Q_C, client's ephemeral public key octet string
|
60
|
-
buffer = Net::SSH::Buffer.from(:byte, init, :
|
60
|
+
buffer = Net::SSH::Buffer.from(:byte, init, :mstring, ecdh.public_key.to_bn.to_s(2))
|
61
61
|
connection.send_message(buffer)
|
62
62
|
|
63
63
|
# expect the following KEXECDH_REPLY message
|
@@ -185,7 +185,7 @@ module OpenSSL
|
|
185
185
|
def to_blob
|
186
186
|
@blob ||= Net::SSH::Buffer.from(:string, ssh_type,
|
187
187
|
:string, CurveNameAliasInv[self.group.curve_name],
|
188
|
-
:
|
188
|
+
:mstring, self.public_key.to_bn.to_s(2)).to_s
|
189
189
|
@blob
|
190
190
|
end
|
191
191
|
|
data/lib/net/ssh/version.rb
CHANGED
@@ -55,7 +55,7 @@ module Net; module SSH
|
|
55
55
|
|
56
56
|
# The prerelease component of this version of the Net::SSH library
|
57
57
|
# nil allowed
|
58
|
-
PRE = "
|
58
|
+
PRE = "beta1"
|
59
59
|
|
60
60
|
# The current version of the Net::SSH library as a Version instance
|
61
61
|
CURRENT = new(*[MAJOR, MINOR, TINY, PRE].compact)
|
data/net-ssh.gemspec
CHANGED
@@ -29,16 +29,17 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.require_paths = ["lib"]
|
30
30
|
|
31
31
|
unless ENV['NET_SSH_NO_RBNACL']
|
32
|
-
spec.add_development_dependency("rbnacl-libsodium", "
|
33
|
-
spec.add_development_dependency("rbnacl", "
|
34
|
-
spec.add_development_dependency("bcrypt_pbkdf", "
|
32
|
+
spec.add_development_dependency("rbnacl-libsodium", "~> 1.0.10")
|
33
|
+
spec.add_development_dependency("rbnacl", "~> 3.4.0")
|
34
|
+
spec.add_development_dependency("bcrypt_pbkdf", "~> 1.0.0.alpha1") unless RUBY_PLATFORM == "java"
|
35
35
|
end
|
36
36
|
|
37
|
-
spec.add_development_dependency "bundler", "~> 1.11
|
37
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
38
38
|
spec.add_development_dependency "rake", "~> 11.1"
|
39
39
|
spec.add_development_dependency "minitest", "~> 5.0"
|
40
40
|
spec.add_development_dependency "rubocop", "~> 0.39.0"
|
41
41
|
spec.add_development_dependency "mocha", ">= 1.1.0"
|
42
|
+
spec.add_development_dependency("byebug") if RUBY_ENGINE == "ruby"
|
42
43
|
|
43
44
|
spec.add_dependency('jruby-pageant', '>= 1.1.1') if RUBY_PLATFORM == 'jruby'
|
44
45
|
end
|
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: 4.0.0.
|
4
|
+
version: 4.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
@@ -31,48 +31,48 @@ cert_chain:
|
|
31
31
|
s/ZUKye79ELwFYKJOhjW5g725OL3hy+llhEleytwKRwgXFQBPTC4f5UkdxZVVWGH
|
32
32
|
e2C9M1m/2odPZo8h
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-
|
34
|
+
date: 2016-07-23 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rbnacl-libsodium
|
38
38
|
requirement: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 1.0.
|
42
|
+
version: 1.0.10
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.0.
|
49
|
+
version: 1.0.10
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: rbnacl
|
52
52
|
requirement: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - "
|
54
|
+
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 3.
|
56
|
+
version: 3.4.0
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - "
|
61
|
+
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 3.
|
63
|
+
version: 3.4.0
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: bcrypt_pbkdf
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 1.0.0.alpha1
|
71
71
|
type: :development
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 1.0.0.alpha1
|
78
78
|
- !ruby/object:Gem::Dependency
|
@@ -81,14 +81,14 @@ dependencies:
|
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 1.11
|
84
|
+
version: '1.11'
|
85
85
|
type: :development
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 1.11
|
91
|
+
version: '1.11'
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: rake
|
94
94
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,6 +145,20 @@ dependencies:
|
|
145
145
|
- - ">="
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: 1.1.0
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: byebug
|
150
|
+
requirement: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
148
162
|
description: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It
|
149
163
|
allows you to write programs that invoke and interact with processes on remote servers,
|
150
164
|
via SSH2.'
|
@@ -176,6 +190,7 @@ files:
|
|
176
190
|
- lib/net/ssh/authentication/agent/socket.rb
|
177
191
|
- lib/net/ssh/authentication/constants.rb
|
178
192
|
- lib/net/ssh/authentication/ed25519.rb
|
193
|
+
- lib/net/ssh/authentication/ed25519_loader.rb
|
179
194
|
- lib/net/ssh/authentication/key_manager.rb
|
180
195
|
- lib/net/ssh/authentication/methods/abstract.rb
|
181
196
|
- lib/net/ssh/authentication/methods/hostbased.rb
|
metadata.gz.sig
CHANGED
Binary file
|