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.
Files changed (297) hide show
  1. data/CHANGELOG.rdoc +37 -0
  2. data/Manifest +101 -0
  3. data/README.rdoc +110 -0
  4. data/Rakefile +26 -0
  5. data/{THANKS → THANKS.rdoc} +2 -5
  6. data/lib/net/ssh.rb +189 -57
  7. data/lib/net/ssh/authentication/agent.rb +175 -0
  8. data/lib/net/ssh/authentication/constants.rb +18 -0
  9. data/lib/net/ssh/authentication/key_manager.rb +166 -0
  10. data/lib/net/ssh/authentication/methods/abstract.rb +60 -0
  11. data/lib/net/ssh/authentication/methods/hostbased.rb +71 -0
  12. data/lib/net/ssh/authentication/methods/keyboard_interactive.rb +66 -0
  13. data/lib/net/ssh/authentication/methods/password.rb +39 -0
  14. data/lib/net/ssh/authentication/methods/publickey.rb +92 -0
  15. data/lib/net/ssh/authentication/pageant.rb +176 -0
  16. data/lib/net/ssh/authentication/session.rb +116 -0
  17. data/lib/net/ssh/buffer.rb +339 -0
  18. data/lib/net/ssh/buffered_io.rb +149 -0
  19. data/lib/net/ssh/config.rb +173 -0
  20. data/lib/net/ssh/connection/channel.rb +575 -454
  21. data/lib/net/ssh/connection/constants.rb +31 -45
  22. data/lib/net/ssh/connection/session.rb +569 -0
  23. data/lib/net/ssh/connection/term.rb +176 -88
  24. data/lib/net/ssh/errors.rb +83 -61
  25. data/lib/net/ssh/key_factory.rb +85 -0
  26. data/lib/net/ssh/known_hosts.rb +129 -0
  27. data/lib/net/ssh/loggable.rb +61 -0
  28. data/lib/net/ssh/packet.rb +102 -0
  29. data/lib/net/ssh/prompt.rb +93 -0
  30. data/lib/net/ssh/proxy/errors.rb +8 -28
  31. data/lib/net/ssh/proxy/http.rb +75 -107
  32. data/lib/net/ssh/proxy/socks4.rb +35 -48
  33. data/lib/net/ssh/proxy/socks5.rb +76 -108
  34. data/lib/net/ssh/service/forward.rb +267 -0
  35. data/lib/net/ssh/test.rb +89 -0
  36. data/lib/net/ssh/test/channel.rb +129 -0
  37. data/lib/net/ssh/test/extensions.rb +152 -0
  38. data/lib/net/ssh/test/kex.rb +44 -0
  39. data/lib/net/ssh/test/local_packet.rb +51 -0
  40. data/lib/net/ssh/test/packet.rb +81 -0
  41. data/lib/net/ssh/test/remote_packet.rb +38 -0
  42. data/lib/net/ssh/test/script.rb +157 -0
  43. data/lib/net/ssh/test/socket.rb +59 -0
  44. data/lib/net/ssh/transport/algorithms.rb +384 -0
  45. data/lib/net/ssh/transport/cipher_factory.rb +72 -0
  46. data/lib/net/ssh/transport/constants.rb +22 -58
  47. data/lib/net/ssh/transport/hmac.rb +31 -0
  48. data/lib/net/ssh/transport/hmac/abstract.rb +48 -0
  49. data/lib/net/ssh/transport/hmac/md5.rb +12 -0
  50. data/lib/net/ssh/transport/hmac/md5_96.rb +11 -0
  51. data/lib/net/ssh/transport/hmac/none.rb +15 -0
  52. data/lib/net/ssh/transport/hmac/sha1.rb +13 -0
  53. data/lib/net/ssh/transport/hmac/sha1_96.rb +11 -0
  54. data/lib/net/ssh/transport/identity_cipher.rb +40 -0
  55. data/lib/net/ssh/transport/kex.rb +13 -0
  56. data/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +208 -0
  57. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +77 -0
  58. data/lib/net/ssh/{util → transport}/openssl.rb +22 -40
  59. data/lib/net/ssh/transport/packet_stream.rb +230 -0
  60. data/lib/net/ssh/transport/server_version.rb +61 -0
  61. data/lib/net/ssh/transport/session.rb +225 -303
  62. data/lib/net/ssh/transport/state.rb +170 -0
  63. data/lib/net/ssh/verifiers/lenient.rb +30 -0
  64. data/lib/net/ssh/verifiers/null.rb +12 -0
  65. data/lib/net/ssh/verifiers/strict.rb +53 -0
  66. data/lib/net/ssh/version.rb +57 -26
  67. data/net-ssh.gemspec +54 -0
  68. data/setup.rb +1585 -0
  69. data/test/authentication/methods/common.rb +28 -0
  70. data/test/authentication/methods/test_abstract.rb +51 -0
  71. data/test/authentication/methods/test_hostbased.rb +108 -0
  72. data/test/authentication/methods/test_keyboard_interactive.rb +98 -0
  73. data/test/authentication/methods/test_password.rb +50 -0
  74. data/test/authentication/methods/test_publickey.rb +123 -0
  75. data/test/authentication/test_agent.rb +205 -0
  76. data/test/authentication/test_key_manager.rb +100 -0
  77. data/test/authentication/test_session.rb +93 -0
  78. data/test/common.rb +106 -0
  79. data/test/configs/exact_match +8 -0
  80. data/test/configs/wild_cards +14 -0
  81. data/test/connection/test_channel.rb +452 -0
  82. data/test/connection/test_session.rb +483 -0
  83. data/test/test_all.rb +6 -0
  84. data/test/test_buffer.rb +336 -0
  85. data/test/test_buffered_io.rb +63 -0
  86. data/test/test_config.rb +78 -0
  87. data/test/test_key_factory.rb +67 -0
  88. data/test/transport/hmac/test_md5.rb +34 -0
  89. data/test/transport/hmac/test_md5_96.rb +25 -0
  90. data/test/transport/hmac/test_none.rb +34 -0
  91. data/test/transport/hmac/test_sha1.rb +34 -0
  92. data/test/transport/hmac/test_sha1_96.rb +25 -0
  93. data/test/transport/kex/test_diffie_hellman_group1_sha1.rb +146 -0
  94. data/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +92 -0
  95. data/test/transport/test_algorithms.rb +302 -0
  96. data/test/transport/test_cipher_factory.rb +163 -0
  97. data/test/transport/test_hmac.rb +34 -0
  98. data/test/transport/test_identity_cipher.rb +40 -0
  99. data/test/transport/test_packet_stream.rb +433 -0
  100. data/test/transport/test_server_version.rb +55 -0
  101. data/test/transport/test_session.rb +312 -0
  102. data/test/transport/test_state.rb +173 -0
  103. metadata +102 -253
  104. data/ChangeLog +0 -560
  105. data/LICENSE +0 -7
  106. data/NEWS +0 -152
  107. data/README +0 -14
  108. data/bin/rb-keygen +0 -210
  109. data/doc/LICENSE-BSD +0 -27
  110. data/doc/LICENSE-GPL +0 -280
  111. data/doc/LICENSE-RUBY +0 -56
  112. data/doc/manual-html/chapter-1.html +0 -388
  113. data/doc/manual-html/chapter-2.html +0 -552
  114. data/doc/manual-html/chapter-3.html +0 -470
  115. data/doc/manual-html/chapter-4.html +0 -413
  116. data/doc/manual-html/chapter-5.html +0 -525
  117. data/doc/manual-html/chapter-6.html +0 -456
  118. data/doc/manual-html/chapter-7.html +0 -343
  119. data/doc/manual-html/index.html +0 -235
  120. data/doc/manual-html/stylesheets/manual.css +0 -270
  121. data/doc/manual-html/stylesheets/ruby.css +0 -17
  122. data/doc/manual/chapter.erb +0 -38
  123. data/doc/manual/example.erb +0 -18
  124. data/doc/manual/index.erb +0 -29
  125. data/doc/manual/manual.rb +0 -311
  126. data/doc/manual/manual.yml +0 -73
  127. data/doc/manual/page.erb +0 -87
  128. data/doc/manual/parts/0000.txt +0 -5
  129. data/doc/manual/parts/0001.txt +0 -3
  130. data/doc/manual/parts/0002.txt +0 -40
  131. data/doc/manual/parts/0003.txt +0 -6
  132. data/doc/manual/parts/0004.txt +0 -7
  133. data/doc/manual/parts/0005.txt +0 -1
  134. data/doc/manual/parts/0006.txt +0 -49
  135. data/doc/manual/parts/0007.txt +0 -67
  136. data/doc/manual/parts/0008.txt +0 -43
  137. data/doc/manual/parts/0009.txt +0 -14
  138. data/doc/manual/parts/0010.txt +0 -7
  139. data/doc/manual/parts/0011.txt +0 -14
  140. data/doc/manual/parts/0012.txt +0 -3
  141. data/doc/manual/parts/0013.txt +0 -20
  142. data/doc/manual/parts/0014.txt +0 -32
  143. data/doc/manual/parts/0015.txt +0 -14
  144. data/doc/manual/parts/0016.txt +0 -28
  145. data/doc/manual/parts/0017.txt +0 -50
  146. data/doc/manual/parts/0018.txt +0 -35
  147. data/doc/manual/parts/0019.txt +0 -7
  148. data/doc/manual/parts/0020.txt +0 -72
  149. data/doc/manual/parts/0021.txt +0 -50
  150. data/doc/manual/parts/0022.txt +0 -42
  151. data/doc/manual/parts/0023.txt +0 -51
  152. data/doc/manual/parts/0024.txt +0 -18
  153. data/doc/manual/parts/0025.txt +0 -18
  154. data/doc/manual/parts/0026.txt +0 -15
  155. data/doc/manual/parts/0027.txt +0 -37
  156. data/doc/manual/parts/0028.txt +0 -16
  157. data/doc/manual/parts/0029.txt +0 -1
  158. data/doc/manual/parts/0030.txt +0 -52
  159. data/doc/manual/parts/0031.txt +0 -25
  160. data/doc/manual/stylesheets/manual.css +0 -270
  161. data/doc/manual/stylesheets/ruby.css +0 -17
  162. data/doc/manual/tutorial.erb +0 -30
  163. data/examples/auth-forward.rb +0 -41
  164. data/examples/channel-demo.rb +0 -81
  165. data/examples/port-forward.rb +0 -51
  166. data/examples/process-demo.rb +0 -91
  167. data/examples/remote-net-port-forward.rb +0 -45
  168. data/examples/remote-port-forward.rb +0 -80
  169. data/examples/shell-demo.rb +0 -46
  170. data/examples/ssh-client.rb +0 -67
  171. data/examples/sync-shell-demo.rb +0 -69
  172. data/examples/tail-demo.rb +0 -49
  173. data/lib/net/ssh/connection/driver.rb +0 -446
  174. data/lib/net/ssh/connection/services.rb +0 -72
  175. data/lib/net/ssh/host-key-verifier.rb +0 -52
  176. data/lib/net/ssh/known-hosts.rb +0 -96
  177. data/lib/net/ssh/lenient-host-key-verifier.rb +0 -25
  178. data/lib/net/ssh/null-host-key-verifier.rb +0 -14
  179. data/lib/net/ssh/service/agentforward/driver.rb +0 -78
  180. data/lib/net/ssh/service/agentforward/services.rb +0 -41
  181. data/lib/net/ssh/service/forward/driver.rb +0 -319
  182. data/lib/net/ssh/service/forward/local-network-handler.rb +0 -71
  183. data/lib/net/ssh/service/forward/remote-network-handler.rb +0 -83
  184. data/lib/net/ssh/service/forward/services.rb +0 -76
  185. data/lib/net/ssh/service/process/driver.rb +0 -153
  186. data/lib/net/ssh/service/process/open.rb +0 -193
  187. data/lib/net/ssh/service/process/popen3.rb +0 -178
  188. data/lib/net/ssh/service/process/services.rb +0 -66
  189. data/lib/net/ssh/service/services.rb +0 -60
  190. data/lib/net/ssh/service/shell/driver.rb +0 -86
  191. data/lib/net/ssh/service/shell/services.rb +0 -54
  192. data/lib/net/ssh/service/shell/shell.rb +0 -222
  193. data/lib/net/ssh/service/shell/sync.rb +0 -114
  194. data/lib/net/ssh/session.rb +0 -305
  195. data/lib/net/ssh/transport/algorithm-negotiator.rb +0 -275
  196. data/lib/net/ssh/transport/compress/compressor.rb +0 -53
  197. data/lib/net/ssh/transport/compress/decompressor.rb +0 -53
  198. data/lib/net/ssh/transport/compress/none-compressor.rb +0 -39
  199. data/lib/net/ssh/transport/compress/none-decompressor.rb +0 -39
  200. data/lib/net/ssh/transport/compress/services.rb +0 -68
  201. data/lib/net/ssh/transport/compress/zlib-compressor.rb +0 -60
  202. data/lib/net/ssh/transport/compress/zlib-decompressor.rb +0 -52
  203. data/lib/net/ssh/transport/errors.rb +0 -47
  204. data/lib/net/ssh/transport/identity-cipher.rb +0 -61
  205. data/lib/net/ssh/transport/kex/dh-gex.rb +0 -106
  206. data/lib/net/ssh/transport/kex/dh.rb +0 -249
  207. data/lib/net/ssh/transport/kex/services.rb +0 -62
  208. data/lib/net/ssh/transport/ossl/buffer-factory.rb +0 -52
  209. data/lib/net/ssh/transport/ossl/buffer.rb +0 -87
  210. data/lib/net/ssh/transport/ossl/cipher-factory.rb +0 -98
  211. data/lib/net/ssh/transport/ossl/digest-factory.rb +0 -51
  212. data/lib/net/ssh/transport/ossl/hmac-factory.rb +0 -71
  213. data/lib/net/ssh/transport/ossl/hmac/hmac.rb +0 -62
  214. data/lib/net/ssh/transport/ossl/hmac/md5-96.rb +0 -44
  215. data/lib/net/ssh/transport/ossl/hmac/md5.rb +0 -46
  216. data/lib/net/ssh/transport/ossl/hmac/none.rb +0 -46
  217. data/lib/net/ssh/transport/ossl/hmac/services.rb +0 -68
  218. data/lib/net/ssh/transport/ossl/hmac/sha1-96.rb +0 -44
  219. data/lib/net/ssh/transport/ossl/hmac/sha1.rb +0 -45
  220. data/lib/net/ssh/transport/ossl/key-factory.rb +0 -116
  221. data/lib/net/ssh/transport/ossl/services.rb +0 -149
  222. data/lib/net/ssh/transport/packet-stream.rb +0 -236
  223. data/lib/net/ssh/transport/services.rb +0 -146
  224. data/lib/net/ssh/transport/version-negotiator.rb +0 -73
  225. data/lib/net/ssh/userauth/agent.rb +0 -222
  226. data/lib/net/ssh/userauth/constants.rb +0 -35
  227. data/lib/net/ssh/userauth/driver.rb +0 -183
  228. data/lib/net/ssh/userauth/methods/hostbased.rb +0 -119
  229. data/lib/net/ssh/userauth/methods/keyboard-interactive.rb +0 -104
  230. data/lib/net/ssh/userauth/methods/password.rb +0 -70
  231. data/lib/net/ssh/userauth/methods/publickey.rb +0 -137
  232. data/lib/net/ssh/userauth/methods/services.rb +0 -90
  233. data/lib/net/ssh/userauth/pageant.rb +0 -197
  234. data/lib/net/ssh/userauth/services.rb +0 -141
  235. data/lib/net/ssh/userauth/userkeys.rb +0 -258
  236. data/lib/net/ssh/util/buffer.rb +0 -274
  237. data/lib/net/ssh/util/prompter.rb +0 -73
  238. data/test/ALL-TESTS.rb +0 -18
  239. data/test/connection/tc_channel.rb +0 -136
  240. data/test/connection/tc_driver.rb +0 -287
  241. data/test/connection/tc_integration.rb +0 -87
  242. data/test/proxy/tc_http.rb +0 -209
  243. data/test/proxy/tc_socks4.rb +0 -148
  244. data/test/proxy/tc_socks5.rb +0 -214
  245. data/test/service/agentforward/tc_driver.rb +0 -138
  246. data/test/service/forward/tc_driver.rb +0 -289
  247. data/test/service/forward/tc_local_network_handler.rb +0 -123
  248. data/test/service/forward/tc_remote_network_handler.rb +0 -111
  249. data/test/service/process/tc_driver.rb +0 -79
  250. data/test/service/process/tc_integration.rb +0 -119
  251. data/test/service/process/tc_open.rb +0 -179
  252. data/test/service/process/tc_popen3.rb +0 -164
  253. data/test/tc_integration.rb +0 -80
  254. data/test/transport/compress/tc_none_compress.rb +0 -41
  255. data/test/transport/compress/tc_none_decompress.rb +0 -45
  256. data/test/transport/compress/tc_zlib_compress.rb +0 -61
  257. data/test/transport/compress/tc_zlib_decompress.rb +0 -48
  258. data/test/transport/kex/tc_dh.rb +0 -312
  259. data/test/transport/kex/tc_dh_gex.rb +0 -71
  260. data/test/transport/ossl/fixtures/dsa-encrypted +0 -15
  261. data/test/transport/ossl/fixtures/dsa-encrypted-bad +0 -15
  262. data/test/transport/ossl/fixtures/dsa-unencrypted +0 -12
  263. data/test/transport/ossl/fixtures/dsa-unencrypted-bad +0 -12
  264. data/test/transport/ossl/fixtures/dsa-unencrypted.pub +0 -1
  265. data/test/transport/ossl/fixtures/not-a-private-key +0 -4
  266. data/test/transport/ossl/fixtures/not-supported +0 -2
  267. data/test/transport/ossl/fixtures/rsa-encrypted +0 -18
  268. data/test/transport/ossl/fixtures/rsa-encrypted-bad +0 -18
  269. data/test/transport/ossl/fixtures/rsa-unencrypted +0 -15
  270. data/test/transport/ossl/fixtures/rsa-unencrypted-bad +0 -15
  271. data/test/transport/ossl/fixtures/rsa-unencrypted.pub +0 -1
  272. data/test/transport/ossl/hmac/tc_hmac.rb +0 -58
  273. data/test/transport/ossl/hmac/tc_md5.rb +0 -50
  274. data/test/transport/ossl/hmac/tc_md5_96.rb +0 -50
  275. data/test/transport/ossl/hmac/tc_none.rb +0 -50
  276. data/test/transport/ossl/hmac/tc_sha1.rb +0 -50
  277. data/test/transport/ossl/hmac/tc_sha1_96.rb +0 -50
  278. data/test/transport/ossl/tc_buffer.rb +0 -97
  279. data/test/transport/ossl/tc_buffer_factory.rb +0 -67
  280. data/test/transport/ossl/tc_cipher_factory.rb +0 -84
  281. data/test/transport/ossl/tc_digest_factory.rb +0 -39
  282. data/test/transport/ossl/tc_hmac_factory.rb +0 -72
  283. data/test/transport/ossl/tc_key_factory.rb +0 -199
  284. data/test/transport/tc_algorithm_negotiator.rb +0 -170
  285. data/test/transport/tc_identity_cipher.rb +0 -52
  286. data/test/transport/tc_integration.rb +0 -115
  287. data/test/transport/tc_packet_stream.rb +0 -184
  288. data/test/transport/tc_session.rb +0 -296
  289. data/test/transport/tc_version_negotiator.rb +0 -86
  290. data/test/userauth/methods/tc_hostbased.rb +0 -136
  291. data/test/userauth/methods/tc_password.rb +0 -89
  292. data/test/userauth/methods/tc_publickey.rb +0 -167
  293. data/test/userauth/tc_agent.rb +0 -223
  294. data/test/userauth/tc_driver.rb +0 -190
  295. data/test/userauth/tc_integration.rb +0 -97
  296. data/test/userauth/tc_userkeys.rb +0 -265
  297. 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