net-ssh 1.1.4 → 2.0.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.
- data/CHANGELOG.rdoc +37 -0
- data/Manifest +101 -0
- data/README.rdoc +110 -0
- data/Rakefile +26 -0
- data/{THANKS → THANKS.rdoc} +2 -5
- data/lib/net/ssh.rb +189 -57
- data/lib/net/ssh/authentication/agent.rb +175 -0
- data/lib/net/ssh/authentication/constants.rb +18 -0
- data/lib/net/ssh/authentication/key_manager.rb +166 -0
- data/lib/net/ssh/authentication/methods/abstract.rb +60 -0
- data/lib/net/ssh/authentication/methods/hostbased.rb +71 -0
- data/lib/net/ssh/authentication/methods/keyboard_interactive.rb +66 -0
- data/lib/net/ssh/authentication/methods/password.rb +39 -0
- data/lib/net/ssh/authentication/methods/publickey.rb +92 -0
- data/lib/net/ssh/authentication/pageant.rb +176 -0
- data/lib/net/ssh/authentication/session.rb +116 -0
- data/lib/net/ssh/buffer.rb +339 -0
- data/lib/net/ssh/buffered_io.rb +149 -0
- data/lib/net/ssh/config.rb +173 -0
- data/lib/net/ssh/connection/channel.rb +575 -454
- data/lib/net/ssh/connection/constants.rb +31 -45
- data/lib/net/ssh/connection/session.rb +569 -0
- data/lib/net/ssh/connection/term.rb +176 -88
- data/lib/net/ssh/errors.rb +83 -61
- data/lib/net/ssh/key_factory.rb +85 -0
- data/lib/net/ssh/known_hosts.rb +129 -0
- data/lib/net/ssh/loggable.rb +61 -0
- data/lib/net/ssh/packet.rb +102 -0
- data/lib/net/ssh/prompt.rb +93 -0
- data/lib/net/ssh/proxy/errors.rb +8 -28
- data/lib/net/ssh/proxy/http.rb +75 -107
- data/lib/net/ssh/proxy/socks4.rb +35 -48
- data/lib/net/ssh/proxy/socks5.rb +76 -108
- data/lib/net/ssh/service/forward.rb +267 -0
- data/lib/net/ssh/test.rb +89 -0
- data/lib/net/ssh/test/channel.rb +129 -0
- data/lib/net/ssh/test/extensions.rb +152 -0
- data/lib/net/ssh/test/kex.rb +44 -0
- data/lib/net/ssh/test/local_packet.rb +51 -0
- data/lib/net/ssh/test/packet.rb +81 -0
- data/lib/net/ssh/test/remote_packet.rb +38 -0
- data/lib/net/ssh/test/script.rb +157 -0
- data/lib/net/ssh/test/socket.rb +59 -0
- data/lib/net/ssh/transport/algorithms.rb +384 -0
- data/lib/net/ssh/transport/cipher_factory.rb +72 -0
- data/lib/net/ssh/transport/constants.rb +22 -58
- data/lib/net/ssh/transport/hmac.rb +31 -0
- data/lib/net/ssh/transport/hmac/abstract.rb +48 -0
- data/lib/net/ssh/transport/hmac/md5.rb +12 -0
- data/lib/net/ssh/transport/hmac/md5_96.rb +11 -0
- data/lib/net/ssh/transport/hmac/none.rb +15 -0
- data/lib/net/ssh/transport/hmac/sha1.rb +13 -0
- data/lib/net/ssh/transport/hmac/sha1_96.rb +11 -0
- data/lib/net/ssh/transport/identity_cipher.rb +40 -0
- data/lib/net/ssh/transport/kex.rb +13 -0
- data/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +208 -0
- data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +77 -0
- data/lib/net/ssh/{util → transport}/openssl.rb +22 -40
- data/lib/net/ssh/transport/packet_stream.rb +230 -0
- data/lib/net/ssh/transport/server_version.rb +61 -0
- data/lib/net/ssh/transport/session.rb +225 -303
- data/lib/net/ssh/transport/state.rb +170 -0
- data/lib/net/ssh/verifiers/lenient.rb +30 -0
- data/lib/net/ssh/verifiers/null.rb +12 -0
- data/lib/net/ssh/verifiers/strict.rb +53 -0
- data/lib/net/ssh/version.rb +57 -26
- data/net-ssh.gemspec +54 -0
- data/setup.rb +1585 -0
- data/test/authentication/methods/common.rb +28 -0
- data/test/authentication/methods/test_abstract.rb +51 -0
- data/test/authentication/methods/test_hostbased.rb +108 -0
- data/test/authentication/methods/test_keyboard_interactive.rb +98 -0
- data/test/authentication/methods/test_password.rb +50 -0
- data/test/authentication/methods/test_publickey.rb +123 -0
- data/test/authentication/test_agent.rb +205 -0
- data/test/authentication/test_key_manager.rb +100 -0
- data/test/authentication/test_session.rb +93 -0
- data/test/common.rb +106 -0
- data/test/configs/exact_match +8 -0
- data/test/configs/wild_cards +14 -0
- data/test/connection/test_channel.rb +452 -0
- data/test/connection/test_session.rb +483 -0
- data/test/test_all.rb +6 -0
- data/test/test_buffer.rb +336 -0
- data/test/test_buffered_io.rb +63 -0
- data/test/test_config.rb +78 -0
- data/test/test_key_factory.rb +67 -0
- data/test/transport/hmac/test_md5.rb +34 -0
- data/test/transport/hmac/test_md5_96.rb +25 -0
- data/test/transport/hmac/test_none.rb +34 -0
- data/test/transport/hmac/test_sha1.rb +34 -0
- data/test/transport/hmac/test_sha1_96.rb +25 -0
- data/test/transport/kex/test_diffie_hellman_group1_sha1.rb +146 -0
- data/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +92 -0
- data/test/transport/test_algorithms.rb +302 -0
- data/test/transport/test_cipher_factory.rb +163 -0
- data/test/transport/test_hmac.rb +34 -0
- data/test/transport/test_identity_cipher.rb +40 -0
- data/test/transport/test_packet_stream.rb +433 -0
- data/test/transport/test_server_version.rb +55 -0
- data/test/transport/test_session.rb +312 -0
- data/test/transport/test_state.rb +173 -0
- metadata +102 -253
- data/ChangeLog +0 -560
- data/LICENSE +0 -7
- data/NEWS +0 -152
- data/README +0 -14
- data/bin/rb-keygen +0 -210
- data/doc/LICENSE-BSD +0 -27
- data/doc/LICENSE-GPL +0 -280
- data/doc/LICENSE-RUBY +0 -56
- data/doc/manual-html/chapter-1.html +0 -388
- data/doc/manual-html/chapter-2.html +0 -552
- data/doc/manual-html/chapter-3.html +0 -470
- data/doc/manual-html/chapter-4.html +0 -413
- data/doc/manual-html/chapter-5.html +0 -525
- data/doc/manual-html/chapter-6.html +0 -456
- data/doc/manual-html/chapter-7.html +0 -343
- data/doc/manual-html/index.html +0 -235
- data/doc/manual-html/stylesheets/manual.css +0 -270
- data/doc/manual-html/stylesheets/ruby.css +0 -17
- data/doc/manual/chapter.erb +0 -38
- data/doc/manual/example.erb +0 -18
- data/doc/manual/index.erb +0 -29
- data/doc/manual/manual.rb +0 -311
- data/doc/manual/manual.yml +0 -73
- data/doc/manual/page.erb +0 -87
- data/doc/manual/parts/0000.txt +0 -5
- data/doc/manual/parts/0001.txt +0 -3
- data/doc/manual/parts/0002.txt +0 -40
- data/doc/manual/parts/0003.txt +0 -6
- data/doc/manual/parts/0004.txt +0 -7
- data/doc/manual/parts/0005.txt +0 -1
- data/doc/manual/parts/0006.txt +0 -49
- data/doc/manual/parts/0007.txt +0 -67
- data/doc/manual/parts/0008.txt +0 -43
- data/doc/manual/parts/0009.txt +0 -14
- data/doc/manual/parts/0010.txt +0 -7
- data/doc/manual/parts/0011.txt +0 -14
- data/doc/manual/parts/0012.txt +0 -3
- data/doc/manual/parts/0013.txt +0 -20
- data/doc/manual/parts/0014.txt +0 -32
- data/doc/manual/parts/0015.txt +0 -14
- data/doc/manual/parts/0016.txt +0 -28
- data/doc/manual/parts/0017.txt +0 -50
- data/doc/manual/parts/0018.txt +0 -35
- data/doc/manual/parts/0019.txt +0 -7
- data/doc/manual/parts/0020.txt +0 -72
- data/doc/manual/parts/0021.txt +0 -50
- data/doc/manual/parts/0022.txt +0 -42
- data/doc/manual/parts/0023.txt +0 -51
- data/doc/manual/parts/0024.txt +0 -18
- data/doc/manual/parts/0025.txt +0 -18
- data/doc/manual/parts/0026.txt +0 -15
- data/doc/manual/parts/0027.txt +0 -37
- data/doc/manual/parts/0028.txt +0 -16
- data/doc/manual/parts/0029.txt +0 -1
- data/doc/manual/parts/0030.txt +0 -52
- data/doc/manual/parts/0031.txt +0 -25
- data/doc/manual/stylesheets/manual.css +0 -270
- data/doc/manual/stylesheets/ruby.css +0 -17
- data/doc/manual/tutorial.erb +0 -30
- data/examples/auth-forward.rb +0 -41
- data/examples/channel-demo.rb +0 -81
- data/examples/port-forward.rb +0 -51
- data/examples/process-demo.rb +0 -91
- data/examples/remote-net-port-forward.rb +0 -45
- data/examples/remote-port-forward.rb +0 -80
- data/examples/shell-demo.rb +0 -46
- data/examples/ssh-client.rb +0 -67
- data/examples/sync-shell-demo.rb +0 -69
- data/examples/tail-demo.rb +0 -49
- data/lib/net/ssh/connection/driver.rb +0 -446
- data/lib/net/ssh/connection/services.rb +0 -72
- data/lib/net/ssh/host-key-verifier.rb +0 -52
- data/lib/net/ssh/known-hosts.rb +0 -96
- data/lib/net/ssh/lenient-host-key-verifier.rb +0 -25
- data/lib/net/ssh/null-host-key-verifier.rb +0 -14
- data/lib/net/ssh/service/agentforward/driver.rb +0 -78
- data/lib/net/ssh/service/agentforward/services.rb +0 -41
- data/lib/net/ssh/service/forward/driver.rb +0 -319
- data/lib/net/ssh/service/forward/local-network-handler.rb +0 -71
- data/lib/net/ssh/service/forward/remote-network-handler.rb +0 -83
- data/lib/net/ssh/service/forward/services.rb +0 -76
- data/lib/net/ssh/service/process/driver.rb +0 -153
- data/lib/net/ssh/service/process/open.rb +0 -193
- data/lib/net/ssh/service/process/popen3.rb +0 -178
- data/lib/net/ssh/service/process/services.rb +0 -66
- data/lib/net/ssh/service/services.rb +0 -60
- data/lib/net/ssh/service/shell/driver.rb +0 -86
- data/lib/net/ssh/service/shell/services.rb +0 -54
- data/lib/net/ssh/service/shell/shell.rb +0 -222
- data/lib/net/ssh/service/shell/sync.rb +0 -114
- data/lib/net/ssh/session.rb +0 -305
- data/lib/net/ssh/transport/algorithm-negotiator.rb +0 -275
- data/lib/net/ssh/transport/compress/compressor.rb +0 -53
- data/lib/net/ssh/transport/compress/decompressor.rb +0 -53
- data/lib/net/ssh/transport/compress/none-compressor.rb +0 -39
- data/lib/net/ssh/transport/compress/none-decompressor.rb +0 -39
- data/lib/net/ssh/transport/compress/services.rb +0 -68
- data/lib/net/ssh/transport/compress/zlib-compressor.rb +0 -60
- data/lib/net/ssh/transport/compress/zlib-decompressor.rb +0 -52
- data/lib/net/ssh/transport/errors.rb +0 -47
- data/lib/net/ssh/transport/identity-cipher.rb +0 -61
- data/lib/net/ssh/transport/kex/dh-gex.rb +0 -106
- data/lib/net/ssh/transport/kex/dh.rb +0 -249
- data/lib/net/ssh/transport/kex/services.rb +0 -62
- data/lib/net/ssh/transport/ossl/buffer-factory.rb +0 -52
- data/lib/net/ssh/transport/ossl/buffer.rb +0 -87
- data/lib/net/ssh/transport/ossl/cipher-factory.rb +0 -98
- data/lib/net/ssh/transport/ossl/digest-factory.rb +0 -51
- data/lib/net/ssh/transport/ossl/hmac-factory.rb +0 -71
- data/lib/net/ssh/transport/ossl/hmac/hmac.rb +0 -62
- data/lib/net/ssh/transport/ossl/hmac/md5-96.rb +0 -44
- data/lib/net/ssh/transport/ossl/hmac/md5.rb +0 -46
- data/lib/net/ssh/transport/ossl/hmac/none.rb +0 -46
- data/lib/net/ssh/transport/ossl/hmac/services.rb +0 -68
- data/lib/net/ssh/transport/ossl/hmac/sha1-96.rb +0 -44
- data/lib/net/ssh/transport/ossl/hmac/sha1.rb +0 -45
- data/lib/net/ssh/transport/ossl/key-factory.rb +0 -116
- data/lib/net/ssh/transport/ossl/services.rb +0 -149
- data/lib/net/ssh/transport/packet-stream.rb +0 -236
- data/lib/net/ssh/transport/services.rb +0 -146
- data/lib/net/ssh/transport/version-negotiator.rb +0 -73
- data/lib/net/ssh/userauth/agent.rb +0 -222
- data/lib/net/ssh/userauth/constants.rb +0 -35
- data/lib/net/ssh/userauth/driver.rb +0 -183
- data/lib/net/ssh/userauth/methods/hostbased.rb +0 -119
- data/lib/net/ssh/userauth/methods/keyboard-interactive.rb +0 -104
- data/lib/net/ssh/userauth/methods/password.rb +0 -70
- data/lib/net/ssh/userauth/methods/publickey.rb +0 -137
- data/lib/net/ssh/userauth/methods/services.rb +0 -90
- data/lib/net/ssh/userauth/pageant.rb +0 -197
- data/lib/net/ssh/userauth/services.rb +0 -141
- data/lib/net/ssh/userauth/userkeys.rb +0 -258
- data/lib/net/ssh/util/buffer.rb +0 -274
- data/lib/net/ssh/util/prompter.rb +0 -73
- data/test/ALL-TESTS.rb +0 -18
- data/test/connection/tc_channel.rb +0 -136
- data/test/connection/tc_driver.rb +0 -287
- data/test/connection/tc_integration.rb +0 -87
- data/test/proxy/tc_http.rb +0 -209
- data/test/proxy/tc_socks4.rb +0 -148
- data/test/proxy/tc_socks5.rb +0 -214
- data/test/service/agentforward/tc_driver.rb +0 -138
- data/test/service/forward/tc_driver.rb +0 -289
- data/test/service/forward/tc_local_network_handler.rb +0 -123
- data/test/service/forward/tc_remote_network_handler.rb +0 -111
- data/test/service/process/tc_driver.rb +0 -79
- data/test/service/process/tc_integration.rb +0 -119
- data/test/service/process/tc_open.rb +0 -179
- data/test/service/process/tc_popen3.rb +0 -164
- data/test/tc_integration.rb +0 -80
- data/test/transport/compress/tc_none_compress.rb +0 -41
- data/test/transport/compress/tc_none_decompress.rb +0 -45
- data/test/transport/compress/tc_zlib_compress.rb +0 -61
- data/test/transport/compress/tc_zlib_decompress.rb +0 -48
- data/test/transport/kex/tc_dh.rb +0 -312
- data/test/transport/kex/tc_dh_gex.rb +0 -71
- data/test/transport/ossl/fixtures/dsa-encrypted +0 -15
- data/test/transport/ossl/fixtures/dsa-encrypted-bad +0 -15
- data/test/transport/ossl/fixtures/dsa-unencrypted +0 -12
- data/test/transport/ossl/fixtures/dsa-unencrypted-bad +0 -12
- data/test/transport/ossl/fixtures/dsa-unencrypted.pub +0 -1
- data/test/transport/ossl/fixtures/not-a-private-key +0 -4
- data/test/transport/ossl/fixtures/not-supported +0 -2
- data/test/transport/ossl/fixtures/rsa-encrypted +0 -18
- data/test/transport/ossl/fixtures/rsa-encrypted-bad +0 -18
- data/test/transport/ossl/fixtures/rsa-unencrypted +0 -15
- data/test/transport/ossl/fixtures/rsa-unencrypted-bad +0 -15
- data/test/transport/ossl/fixtures/rsa-unencrypted.pub +0 -1
- data/test/transport/ossl/hmac/tc_hmac.rb +0 -58
- data/test/transport/ossl/hmac/tc_md5.rb +0 -50
- data/test/transport/ossl/hmac/tc_md5_96.rb +0 -50
- data/test/transport/ossl/hmac/tc_none.rb +0 -50
- data/test/transport/ossl/hmac/tc_sha1.rb +0 -50
- data/test/transport/ossl/hmac/tc_sha1_96.rb +0 -50
- data/test/transport/ossl/tc_buffer.rb +0 -97
- data/test/transport/ossl/tc_buffer_factory.rb +0 -67
- data/test/transport/ossl/tc_cipher_factory.rb +0 -84
- data/test/transport/ossl/tc_digest_factory.rb +0 -39
- data/test/transport/ossl/tc_hmac_factory.rb +0 -72
- data/test/transport/ossl/tc_key_factory.rb +0 -199
- data/test/transport/tc_algorithm_negotiator.rb +0 -170
- data/test/transport/tc_identity_cipher.rb +0 -52
- data/test/transport/tc_integration.rb +0 -115
- data/test/transport/tc_packet_stream.rb +0 -184
- data/test/transport/tc_session.rb +0 -296
- data/test/transport/tc_version_negotiator.rb +0 -86
- data/test/userauth/methods/tc_hostbased.rb +0 -136
- data/test/userauth/methods/tc_password.rb +0 -89
- data/test/userauth/methods/tc_publickey.rb +0 -167
- data/test/userauth/tc_agent.rb +0 -223
- data/test/userauth/tc_driver.rb +0 -190
- data/test/userauth/tc_integration.rb +0 -97
- data/test/userauth/tc_userkeys.rb +0 -265
- data/test/util/tc_buffer.rb +0 -217
@@ -1,50 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/hmac/sha1-96'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_HMAC_SHA1_96 < Test::Unit::TestCase
|
23
|
-
|
24
|
-
def setup
|
25
|
-
@hmac = Net::SSH::Transport::OSSL::HMAC::SHA1_96.new.new( "1234567890123456789012345" )
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_key
|
29
|
-
assert_equal "12345678901234567890", @hmac.key
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_key_length
|
33
|
-
assert_equal 20, @hmac.key_length
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_mac_length
|
37
|
-
assert_equal 12, @hmac.mac_length
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_digest_class
|
41
|
-
assert_equal OpenSSL::Digest::SHA1, @hmac.digest_class
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_digest
|
45
|
-
expect = "\203\266\253\336\242\311zE\360~\325j"
|
46
|
-
assert_equal expect,
|
47
|
-
@hmac.digest( "To be, or not to be, that is the question" )
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/buffer'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_OSSLBuffer < Test::Unit::TestCase
|
23
|
-
|
24
|
-
def setup
|
25
|
-
@buffer = Net::SSH::Transport::OSSL::ReaderBuffer.new( "" )
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_read_bignum
|
29
|
-
@buffer.append "\x00\x00\x00\x01\x01" +
|
30
|
-
"\x00\x00\x00\x04\x12\x34\x56\x78" +
|
31
|
-
"\x00\x00\x00\x07\x00\xAB\xCD\xEF\x12\x34\x56"
|
32
|
-
a = @buffer.read_bignum
|
33
|
-
b = @buffer.read_bignum
|
34
|
-
c = @buffer.read_bignum
|
35
|
-
d = @buffer.read_bignum
|
36
|
-
assert_equal 0x01, a
|
37
|
-
assert_equal 0x12345678, b
|
38
|
-
assert_equal 0xABCDEF123456, c
|
39
|
-
assert_nil d
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_read_key
|
43
|
-
@buffer.append "\x00\x00\x00\x07ssh-dss" +
|
44
|
-
"\x00\x00\x00\x01\x01" +
|
45
|
-
"\x00\x00\x00\x01\x02" +
|
46
|
-
"\x00\x00\x00\x01\x03" +
|
47
|
-
"\x00\x00\x00\x01\x04" +
|
48
|
-
"\x00\x00\x00\x07ssh-rsa" +
|
49
|
-
"\x00\x00\x00\x01\x01" +
|
50
|
-
"\x00\x00\x00\x01\x02"
|
51
|
-
|
52
|
-
k1 = @buffer.read_key
|
53
|
-
k2 = @buffer.read_key
|
54
|
-
k3 = @buffer.read_key
|
55
|
-
|
56
|
-
assert_instance_of OpenSSL::PKey::DSA, k1
|
57
|
-
assert_instance_of OpenSSL::PKey::RSA, k2
|
58
|
-
assert_equal 0x01, k1.p
|
59
|
-
assert_equal 0x02, k1.q
|
60
|
-
assert_equal 0x03, k1.g
|
61
|
-
assert_equal 0x04, k1.pub_key
|
62
|
-
assert_equal 0x01, k2.e
|
63
|
-
assert_equal 0x02, k2.n
|
64
|
-
assert_nil k3
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_read_keyblob
|
68
|
-
blob1 = "\x00\x00\x00\x01\x01" +
|
69
|
-
"\x00\x00\x00\x01\x02" +
|
70
|
-
"\x00\x00\x00\x01\x03" +
|
71
|
-
"\x00\x00\x00\x01\x04" +
|
72
|
-
|
73
|
-
blob2 = "\x00\x00\x00\x01\x01" +
|
74
|
-
"\x00\x00\x00\x01\x02"
|
75
|
-
|
76
|
-
@buffer.append blob1
|
77
|
-
@buffer.append blob2
|
78
|
-
|
79
|
-
k1 = @buffer.read_keyblob( "ssh-dss" )
|
80
|
-
k2 = @buffer.read_keyblob( "ssh-rsa" )
|
81
|
-
|
82
|
-
assert_raises( NotImplementedError ) do
|
83
|
-
k3 = @buffer.read_keyblob( "bogus" )
|
84
|
-
end
|
85
|
-
|
86
|
-
assert_instance_of OpenSSL::PKey::DSA, k1
|
87
|
-
assert_instance_of OpenSSL::PKey::RSA, k2
|
88
|
-
assert_equal 0x01, k1.p
|
89
|
-
assert_equal 0x02, k1.q
|
90
|
-
assert_equal 0x03, k1.g
|
91
|
-
assert_equal 0x04, k1.pub_key
|
92
|
-
assert_equal 0x01, k2.e
|
93
|
-
assert_equal 0x02, k2.n
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/buffer-factory'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_OSSLBufferFactory < Test::Unit::TestCase
|
23
|
-
|
24
|
-
def setup
|
25
|
-
@factory = Net::SSH::Transport::OSSL::BufferFactory.new
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_reader
|
29
|
-
reader = @factory.reader( "test" )
|
30
|
-
assert_instance_of Net::SSH::Transport::OSSL::ReaderBuffer, reader
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_reader_interface
|
34
|
-
reader = @factory.reader( "test" )
|
35
|
-
assert_respond_to reader, :read_key
|
36
|
-
assert_respond_to reader, :read_keyblob
|
37
|
-
assert_respond_to reader, :read_bignum
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_reader_init
|
41
|
-
reader = @factory.reader( "test" )
|
42
|
-
assert_equal "test", reader.to_s
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_buffer
|
46
|
-
buffer = @factory.buffer
|
47
|
-
assert_instance_of Net::SSH::Transport::OSSL::Buffer, buffer
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_buffer_interface
|
51
|
-
buffer = @factory.buffer
|
52
|
-
assert_respond_to buffer, :read_key
|
53
|
-
assert_respond_to buffer, :read_keyblob
|
54
|
-
assert_respond_to buffer, :read_bignum
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_buffer_init
|
58
|
-
buffer = @factory.reader( "test" )
|
59
|
-
assert_equal "test", buffer.to_s
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_writer_buffer
|
63
|
-
buffer = @factory.writer
|
64
|
-
assert_instance_of Net::SSH::Util::WriterBuffer, buffer
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/cipher-factory'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_CipherFactory < Test::Unit::TestCase
|
23
|
-
|
24
|
-
MockCipher = Object.new
|
25
|
-
|
26
|
-
def setup
|
27
|
-
map = { "bf" => "bf", "none" => "none" }
|
28
|
-
@factory = Net::SSH::Transport::OSSL::CipherFactory.new( map )
|
29
|
-
@factory.identity_cipher = MockCipher
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_none
|
33
|
-
cipher = @factory.get( "none" )
|
34
|
-
assert_equal MockCipher, cipher
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_bad_cipher
|
38
|
-
assert_raise( Net::SSH::Transport::CipherNotFound ) do
|
39
|
-
@factory.get "bogus"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_cipher_short
|
44
|
-
cipher = @factory.get( "bf", "1234", "1234", "IJKL", "MNOP",
|
45
|
-
OpenSSL::Digest::MD5, true )
|
46
|
-
|
47
|
-
text = cipher.update( "12345678" )
|
48
|
-
text << cipher.final
|
49
|
-
|
50
|
-
assert_equal "\335\027\034\242?\243\0054", text
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_cipher_exact
|
54
|
-
cipher = @factory.get( "bf", "12345678", "1234567890123456", "IJKL",
|
55
|
-
"MNOP", OpenSSL::Digest::MD5, true )
|
56
|
-
|
57
|
-
text = cipher.update( "12345678" )
|
58
|
-
text << cipher.final
|
59
|
-
|
60
|
-
assert_equal "\030&\317\021\363\200|E", text
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_cipher_long
|
64
|
-
cipher = @factory.get( "bf", "1234567890", "123456789012345678", "IJKL",
|
65
|
-
"MNOP", OpenSSL::Digest::MD5, true )
|
66
|
-
|
67
|
-
text = cipher.update( "12345678" )
|
68
|
-
text << cipher.final
|
69
|
-
|
70
|
-
assert_equal "\030&\317\021\363\200|E", text
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_cipher_lengths
|
74
|
-
result = @factory.get_lengths( "bogus" )
|
75
|
-
assert [0, 0], result
|
76
|
-
|
77
|
-
result = @factory.get_lengths( "none" )
|
78
|
-
assert [0, 0], result
|
79
|
-
|
80
|
-
result = @factory.get_lengths( "bf" )
|
81
|
-
assert [16, 8], result
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/digest-factory'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_OSSLDigestFactory < Test::Unit::TestCase
|
23
|
-
|
24
|
-
def setup
|
25
|
-
map = { "test" => "hello" }
|
26
|
-
@factory = Net::SSH::Transport::OSSL::DigestFactory.new( map )
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_get_not_found
|
30
|
-
assert_raise( Net::SSH::Transport::DigestTypeNotFound ) do
|
31
|
-
@factory.get( "bogus" )
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_get_found
|
36
|
-
assert_equal "hello", @factory.get( "test" )
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/hmac-factory'
|
20
|
-
require 'test/unit'
|
21
|
-
|
22
|
-
class TC_HMACFactory < Test::Unit::TestCase
|
23
|
-
|
24
|
-
class MockHMAC
|
25
|
-
attr_reader :key_length
|
26
|
-
attr_reader :key
|
27
|
-
|
28
|
-
def initialize
|
29
|
-
@key_length = 8
|
30
|
-
end
|
31
|
-
|
32
|
-
def new( key )
|
33
|
-
@key = key
|
34
|
-
self
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def setup
|
39
|
-
map = [ { "test" => MockHMAC.new } ]
|
40
|
-
@factory = Net::SSH::Transport::OSSL::HMACFactory.new( map )
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_get_not_found
|
44
|
-
assert_raise( Net::SSH::Transport::HMACAlgorithmNotFound ) do
|
45
|
-
@factory.get( "bogus" )
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_get_found
|
50
|
-
hmac = nil
|
51
|
-
assert_nothing_raised do
|
52
|
-
hmac = @factory.get( "test", "12345678" )
|
53
|
-
end
|
54
|
-
assert_equal 8, hmac.key_length
|
55
|
-
assert_equal "12345678", hmac.key
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_get_key_length_not_found
|
59
|
-
assert_raise( Net::SSH::Transport::HMACAlgorithmNotFound ) do
|
60
|
-
@factory.get_key_length( "bogus" )
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_get_key_length_found
|
65
|
-
length = nil
|
66
|
-
assert_nothing_raised do
|
67
|
-
length = @factory.get_key_length( "test" )
|
68
|
-
end
|
69
|
-
assert_equal 8, length
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
@@ -1,199 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# =============================================================================
|
3
|
-
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
|
4
|
-
# All rights reserved.
|
5
|
-
#
|
6
|
-
# This source file is distributed as part of the Net::SSH Secure Shell Client
|
7
|
-
# library for Ruby. This file (and the library as a whole) may be used only as
|
8
|
-
# allowed by either the BSD license, or the Ruby license (or, by association
|
9
|
-
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
|
10
|
-
# distribution for the texts of these licenses.
|
11
|
-
# -----------------------------------------------------------------------------
|
12
|
-
# net-ssh website : http://net-ssh.rubyforge.org
|
13
|
-
# project website: http://rubyforge.org/projects/net-ssh
|
14
|
-
# =============================================================================
|
15
|
-
#++
|
16
|
-
|
17
|
-
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
|
18
|
-
|
19
|
-
require 'net/ssh/transport/ossl/buffer'
|
20
|
-
require 'net/ssh/transport/ossl/key-factory'
|
21
|
-
require 'test/unit'
|
22
|
-
|
23
|
-
class TC_OSSLKeyFactory < Test::Unit::TestCase
|
24
|
-
|
25
|
-
class Prompter
|
26
|
-
def initialize( passwd )
|
27
|
-
@passwd = passwd
|
28
|
-
end
|
29
|
-
|
30
|
-
def password( prompt )
|
31
|
-
if @passwd.is_a? Array
|
32
|
-
@passwd.shift
|
33
|
-
else
|
34
|
-
@passwd
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class Buffers
|
40
|
-
def reader( text )
|
41
|
-
Net::SSH::Transport::OSSL::ReaderBuffer.new( text )
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def fixture( name )
|
46
|
-
"#{File.dirname __FILE__}/fixtures/#{name}"
|
47
|
-
end
|
48
|
-
|
49
|
-
def setup
|
50
|
-
algos = { "test" => String }
|
51
|
-
@factory = Net::SSH::Transport::OSSL::KeyFactory.new( algos )
|
52
|
-
@factory.buffers = Buffers.new
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_get_found
|
56
|
-
key = nil
|
57
|
-
assert_nothing_raised { key = @factory.get( "test" ) }
|
58
|
-
assert_equal "", key
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_get_not_found
|
62
|
-
assert_raise( Net::SSH::Transport::KeyTypeNotFound ) do
|
63
|
-
@factory.get( "bogus" )
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_load_private_key_not_found
|
68
|
-
assert_raise( Errno::ENOENT ) do
|
69
|
-
@factory.load_private_key "bogus"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_load_private_key_not_supported
|
74
|
-
assert_raise( OpenSSL::PKey::PKeyError ) do
|
75
|
-
@factory.load_private_key fixture( "not-supported" )
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_load_private_key_not_private_key
|
80
|
-
assert_raise( OpenSSL::PKey::PKeyError ) do
|
81
|
-
@factory.load_private_key fixture( "not-a-private-key" )
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_load_private_key_dsa_unencrypted_fail
|
86
|
-
assert_raise( OpenSSL::PKey::DSAError ) do
|
87
|
-
@factory.load_private_key fixture( "dsa-unencrypted-bad" )
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_load_private_key_dsa_unencrypted_success
|
92
|
-
result = nil
|
93
|
-
assert_nothing_raised do
|
94
|
-
result = @factory.load_private_key fixture( "dsa-unencrypted" )
|
95
|
-
end
|
96
|
-
assert_instance_of OpenSSL::PKey::DSA, result
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_load_private_key_rsa_unencrypted_fail
|
100
|
-
assert_raise( OpenSSL::PKey::RSAError ) do
|
101
|
-
@factory.load_private_key fixture( "rsa-unencrypted-bad" )
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_load_private_key_rsa_unencrypted_success
|
106
|
-
result = nil
|
107
|
-
assert_nothing_raised do
|
108
|
-
result = @factory.load_private_key fixture( "rsa-unencrypted" )
|
109
|
-
end
|
110
|
-
assert_instance_of OpenSSL::PKey::RSA, result
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_load_private_key_dsa_encrypted_fail_bad
|
114
|
-
@factory.prompter = Prompter.new( "key-test" )
|
115
|
-
assert_raise( OpenSSL::PKey::DSAError ) do
|
116
|
-
@factory.load_private_key fixture( "dsa-encrypted-bad" )
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_load_private_key_dsa_encrypted_fail_wrong_password
|
121
|
-
@factory.prompter = Prompter.new( "key-test-bad" )
|
122
|
-
assert_raise( OpenSSL::PKey::DSAError ) do
|
123
|
-
@factory.load_private_key fixture( "dsa-encrypted" )
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_load_private_key_dsa_encrypted_success
|
128
|
-
@factory.prompter = Prompter.new( "key-test" )
|
129
|
-
result = nil
|
130
|
-
assert_nothing_raised do
|
131
|
-
result = @factory.load_private_key fixture( "dsa-encrypted" )
|
132
|
-
end
|
133
|
-
assert_instance_of OpenSSL::PKey::DSA, result
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_load_private_key_rsa_encrypted_fail_bad
|
137
|
-
@factory.prompter = Prompter.new( "key-test" )
|
138
|
-
assert_raise( OpenSSL::PKey::RSAError ) do
|
139
|
-
@factory.load_private_key fixture( "rsa-encrypted-bad" )
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_load_private_key_rsa_encrypted_fail_wrong_password
|
144
|
-
@factory.prompter = Prompter.new( "key-test-bad" )
|
145
|
-
assert_raise( OpenSSL::PKey::RSAError ) do
|
146
|
-
@factory.load_private_key fixture( "rsa-encrypted" )
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_load_private_key_rsa_encrypted_success
|
151
|
-
@factory.prompter = Prompter.new( "key-test" )
|
152
|
-
result = nil
|
153
|
-
assert_nothing_raised do
|
154
|
-
result = @factory.load_private_key fixture( "rsa-encrypted" )
|
155
|
-
end
|
156
|
-
assert_instance_of OpenSSL::PKey::RSA, result
|
157
|
-
end
|
158
|
-
|
159
|
-
def test_load_public_key_not_found
|
160
|
-
assert_raise( Errno::ENOENT ) do
|
161
|
-
@factory.load_public_key "bogus"
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_load_public_key_success_rsa
|
166
|
-
result = nil
|
167
|
-
assert_nothing_raised do
|
168
|
-
result = @factory.load_public_key fixture( "rsa-unencrypted.pub" )
|
169
|
-
end
|
170
|
-
assert_instance_of OpenSSL::PKey::RSA, result
|
171
|
-
end
|
172
|
-
|
173
|
-
def test_load_public_key_success_dsa
|
174
|
-
result = nil
|
175
|
-
assert_nothing_raised do
|
176
|
-
result = @factory.load_public_key fixture( "dsa-unencrypted.pub" )
|
177
|
-
end
|
178
|
-
assert_instance_of OpenSSL::PKey::DSA, result
|
179
|
-
end
|
180
|
-
|
181
|
-
def test_load_private_key_encrypted_bad_passwd_thrice
|
182
|
-
passwords = [ "one", "two", "three", "four" ]
|
183
|
-
@factory.prompter = Prompter.new( passwords )
|
184
|
-
assert_raise( OpenSSL::PKey::DSAError ) do
|
185
|
-
@factory.load_private_key fixture( "dsa-encrypted" )
|
186
|
-
end
|
187
|
-
assert_equal [ "four" ], passwords
|
188
|
-
end
|
189
|
-
|
190
|
-
def test_load_private_key_encrypted_good_passwd_eventually
|
191
|
-
passwords = [ "one", "two", "key-test" ]
|
192
|
-
@factory.prompter = Prompter.new( passwords )
|
193
|
-
assert_nothing_raised do
|
194
|
-
@factory.load_private_key fixture( "dsa-encrypted" )
|
195
|
-
end
|
196
|
-
assert passwords.empty?
|
197
|
-
end
|
198
|
-
|
199
|
-
end
|