hrr_rb_ssh 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +12 -2
  3. data/README.md +11 -9
  4. data/demo/echo_server.rb +50 -42
  5. data/demo/server.rb +81 -62
  6. data/demo/subsystem_echo_server.rb +54 -47
  7. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm/ecdsa_sha2_nistp521 → algorithm/publickey/ecdsa_sha2}/ecdsa_signature_blob.rb +3 -3
  8. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm/ecdsa_sha2_nistp256 → algorithm/publickey/ecdsa_sha2}/public_key_blob.rb +5 -6
  9. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm/ecdsa_sha2_nistp256 → algorithm/publickey/ecdsa_sha2}/signature.rb +5 -5
  10. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2.rb +85 -0
  11. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp256.rb +19 -0
  12. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp384.rb +19 -0
  13. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp521.rb +19 -0
  14. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm → algorithm/publickey}/ssh_dss/public_key_blob.rb +3 -3
  15. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm → algorithm/publickey}/ssh_dss/signature.rb +4 -4
  16. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_dss.rb +90 -0
  17. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm → algorithm/publickey}/ssh_rsa/public_key_blob.rb +3 -4
  18. data/lib/hrr_rb_ssh/{transport/server_host_key_algorithm → algorithm/publickey}/ssh_rsa/signature.rb +4 -4
  19. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa.rb +67 -0
  20. data/lib/hrr_rb_ssh/algorithm/publickey.rb +32 -0
  21. data/lib/hrr_rb_ssh/algorithm.rb +9 -0
  22. data/lib/hrr_rb_ssh/authentication/method/none/context.rb +1 -1
  23. data/lib/hrr_rb_ssh/authentication/method/none.rb +1 -1
  24. data/lib/hrr_rb_ssh/authentication/method/password/context.rb +1 -1
  25. data/lib/hrr_rb_ssh/authentication/method/password.rb +1 -1
  26. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256.rb +2 -65
  27. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384.rb +2 -65
  28. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521.rb +2 -65
  29. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb +54 -0
  30. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/signature_blob.rb +31 -0
  31. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss.rb +2 -73
  32. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa.rb +2 -55
  33. data/lib/hrr_rb_ssh/authentication/method/publickey.rb +3 -3
  34. data/lib/hrr_rb_ssh/authentication.rb +15 -15
  35. data/lib/hrr_rb_ssh/codable.rb +1 -1
  36. data/lib/hrr_rb_ssh/compat/openssh/public_key.rb +3 -40
  37. data/lib/hrr_rb_ssh/compat/ruby/array.rb +14 -0
  38. data/lib/hrr_rb_ssh/compat/ruby/openssl/bn.rb +20 -0
  39. data/lib/hrr_rb_ssh/compat/ruby/openssl.rb +4 -0
  40. data/lib/hrr_rb_ssh/compat/ruby/queue.rb +38 -0
  41. data/lib/hrr_rb_ssh/compat/ruby.rb +6 -0
  42. data/lib/hrr_rb_ssh/compat.rb +1 -63
  43. data/lib/hrr_rb_ssh/connection/channel/channel_type/direct_tcpip.rb +1 -1
  44. data/lib/hrr_rb_ssh/connection/channel/channel_type/forwarded_tcpip.rb +1 -1
  45. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain/chain_context.rb +1 -1
  46. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain.rb +1 -1
  47. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb +1 -1
  48. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb +1 -1
  49. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb +1 -1
  50. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb +1 -1
  51. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb +1 -1
  52. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb +1 -1
  53. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb +1 -1
  54. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb +1 -1
  55. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb +1 -1
  56. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb +1 -1
  57. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change/context.rb +1 -1
  58. data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change.rb +1 -1
  59. data/lib/hrr_rb_ssh/connection/channel/channel_type/session.rb +1 -1
  60. data/lib/hrr_rb_ssh/connection/channel.rb +22 -22
  61. data/lib/hrr_rb_ssh/connection/global_request_handler.rb +1 -1
  62. data/lib/hrr_rb_ssh/connection/request_handler/reference_env_request_handler.rb +1 -1
  63. data/lib/hrr_rb_ssh/connection/request_handler/reference_exec_request_handler.rb +3 -56
  64. data/lib/hrr_rb_ssh/connection/request_handler/reference_pty_req_request_handler.rb +50 -13
  65. data/lib/hrr_rb_ssh/connection/request_handler/reference_shell_request_handler.rb +3 -56
  66. data/lib/hrr_rb_ssh/connection/request_handler/reference_window_change_request_handler.rb +1 -1
  67. data/lib/hrr_rb_ssh/connection/request_handler.rb +1 -1
  68. data/lib/hrr_rb_ssh/connection.rb +40 -40
  69. data/lib/hrr_rb_ssh/data_type.rb +0 -3
  70. data/lib/hrr_rb_ssh/error/closed_authentication.rb +9 -0
  71. data/lib/hrr_rb_ssh/{closed_transport_error.rb → error/closed_connection.rb} +3 -1
  72. data/lib/hrr_rb_ssh/{closed_authentication_error.rb → error/closed_transport.rb} +3 -1
  73. data/lib/hrr_rb_ssh/error.rb +11 -0
  74. data/lib/hrr_rb_ssh/{closed_connection_error.rb → mode.rb} +3 -1
  75. data/lib/hrr_rb_ssh/server.rb +23 -0
  76. data/lib/hrr_rb_ssh/transport/compression_algorithm/functionable.rb +1 -1
  77. data/lib/hrr_rb_ssh/transport/compression_algorithm/unfunctionable.rb +1 -1
  78. data/lib/hrr_rb_ssh/transport/encryption_algorithm/functionable.rb +3 -3
  79. data/lib/hrr_rb_ssh/transport/encryption_algorithm/unfunctionable.rb +1 -1
  80. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb +8 -48
  81. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group_exchange.rb +11 -51
  82. data/lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman.rb +8 -48
  83. data/lib/hrr_rb_ssh/transport/kex_algorithm/iv_computable.rb +57 -0
  84. data/lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb +2 -2
  85. data/lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb +1 -1
  86. data/lib/hrr_rb_ssh/transport/receiver.rb +1 -1
  87. data/lib/hrr_rb_ssh/transport/sender.rb +1 -1
  88. data/lib/hrr_rb_ssh/transport/sequence_number.rb +1 -1
  89. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256.rb +2 -56
  90. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384.rb +2 -56
  91. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521.rb +2 -56
  92. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/functionable.rb +29 -0
  93. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss.rb +2 -50
  94. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb +2 -31
  95. data/lib/hrr_rb_ssh/transport.rb +83 -81
  96. data/lib/hrr_rb_ssh/version.rb +1 -1
  97. data/lib/hrr_rb_ssh.rb +4 -0
  98. metadata +32 -37
  99. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/ecdsa_signature_blob.rb +0 -27
  100. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/public_key_blob.rb +0 -28
  101. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/signature.rb +0 -27
  102. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/signature_blob.rb +0 -33
  103. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/ecdsa_signature_blob.rb +0 -27
  104. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/public_key_blob.rb +0 -28
  105. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/signature.rb +0 -27
  106. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/signature_blob.rb +0 -33
  107. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/ecdsa_signature_blob.rb +0 -27
  108. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/public_key_blob.rb +0 -28
  109. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/signature.rb +0 -27
  110. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/signature_blob.rb +0 -33
  111. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/public_key_blob.rb +0 -30
  112. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/signature.rb +0 -27
  113. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/signature_blob.rb +0 -33
  114. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/public_key_blob.rb +0 -28
  115. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/signature.rb +0 -27
  116. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/signature_blob.rb +0 -33
  117. data/lib/hrr_rb_ssh/transport/mode.rb +0 -11
  118. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256/ecdsa_signature_blob.rb +0 -23
  119. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/ecdsa_signature_blob.rb +0 -23
  120. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/public_key_blob.rb +0 -25
  121. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/signature.rb +0 -23
  122. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521/public_key_blob.rb +0 -25
  123. data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521/signature.rb +0 -23
@@ -6,9 +6,8 @@ require 'hrr_rb_ssh/version'
6
6
  require 'hrr_rb_ssh/logger'
7
7
  require 'hrr_rb_ssh/data_type'
8
8
  require 'hrr_rb_ssh/message'
9
- require 'hrr_rb_ssh/closed_transport_error'
9
+ require 'hrr_rb_ssh/error/closed_transport'
10
10
  require 'hrr_rb_ssh/transport/constant'
11
- require 'hrr_rb_ssh/transport/mode'
12
11
  require 'hrr_rb_ssh/transport/direction'
13
12
  require 'hrr_rb_ssh/transport/sequence_number'
14
13
  require 'hrr_rb_ssh/transport/sender'
@@ -55,24 +54,24 @@ module HrrRbSsh
55
54
  @mode = mode
56
55
  @options = options
57
56
 
58
- @logger = HrrRbSsh::Logger.new self.class.name
57
+ @logger = Logger.new self.class.name
59
58
 
60
59
  @closed = nil
61
60
  @disconnected = nil
62
61
 
63
62
  @in_kex = false
64
63
 
65
- @sender = HrrRbSsh::Transport::Sender.new
66
- @receiver = HrrRbSsh::Transport::Receiver.new
64
+ @sender = Sender.new
65
+ @receiver = Receiver.new
67
66
 
68
67
  @sender_monitor = Monitor.new
69
68
  @receiver_monitor = Monitor.new
70
69
 
71
- @local_version = "SSH-2.0-HrrRbSsh-#{HrrRbSsh::VERSION}".force_encoding(Encoding::ASCII_8BIT)
70
+ @local_version = "SSH-2.0-HrrRbSsh-#{VERSION}".force_encoding(Encoding::ASCII_8BIT)
72
71
  @remote_version = "".force_encoding(Encoding::ASCII_8BIT)
73
72
 
74
- @incoming_sequence_number = HrrRbSsh::Transport::SequenceNumber.new
75
- @outgoing_sequence_number = HrrRbSsh::Transport::SequenceNumber.new
73
+ @incoming_sequence_number = SequenceNumber.new
74
+ @outgoing_sequence_number = SequenceNumber.new
76
75
 
77
76
  @acceptable_services = Array.new
78
77
 
@@ -93,40 +92,40 @@ module HrrRbSsh
93
92
  rescue Errno::EPIPE => e
94
93
  @logger.warn { "IO is Broken PIPE" }
95
94
  close
96
- raise HrrRbSsh::ClosedTransportError
95
+ raise Error::ClosedTransport
97
96
  rescue => e
98
97
  @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
99
98
  close
100
- raise HrrRbSsh::ClosedTransportError
99
+ raise Error::ClosedTransport
101
100
  end
102
101
  end
103
102
  end
104
103
 
105
104
  def receive
106
- raise ClosedTransportError if @closed
105
+ raise Error::ClosedTransport if @closed
107
106
  @receiver_monitor.synchronize do
108
107
  begin
109
108
  payload = @receiver.receive self
110
109
  case payload[0,1].unpack("C")[0]
111
- when HrrRbSsh::Message::SSH_MSG_DISCONNECT::VALUE
112
- message = HrrRbSsh::Message::SSH_MSG_DISCONNECT.decode payload
110
+ when Message::SSH_MSG_DISCONNECT::VALUE
111
+ message = Message::SSH_MSG_DISCONNECT.decode payload
113
112
  @logger.debug { "received disconnect message: #{message.inspect}" }
114
113
  @disconnected = true
115
114
  close
116
- raise ClosedTransportError
117
- when HrrRbSsh::Message::SSH_MSG_IGNORE::VALUE
118
- message = HrrRbSsh::Message::SSH_MSG_IGNORE.decode payload
115
+ raise Error::ClosedTransport
116
+ when Message::SSH_MSG_IGNORE::VALUE
117
+ message = Message::SSH_MSG_IGNORE.decode payload
119
118
  @logger.debug { "received ignore message: #{message.inspect}" }
120
119
  receive
121
- when HrrRbSsh::Message::SSH_MSG_UNIMPLEMENTED::VALUE
122
- message = HrrRbSsh::Message::SSH_MSG_UNIMPLEMENTED.decode payload
120
+ when Message::SSH_MSG_UNIMPLEMENTED::VALUE
121
+ message = Message::SSH_MSG_UNIMPLEMENTED.decode payload
123
122
  @logger.debug { "received unimplemented message: #{message.inspect}" }
124
123
  receive
125
- when HrrRbSsh::Message::SSH_MSG_DEBUG::VALUE
126
- message = HrrRbSsh::Message::SSH_MSG_DEBUG.decode payload
124
+ when Message::SSH_MSG_DEBUG::VALUE
125
+ message = Message::SSH_MSG_DEBUG.decode payload
127
126
  @logger.debug { "received debug message: #{message.inspect}" }
128
127
  receive
129
- when HrrRbSsh::Message::SSH_MSG_KEXINIT::VALUE
128
+ when Message::SSH_MSG_KEXINIT::VALUE
130
129
  @logger.debug { "received kexinit message" }
131
130
  if @in_kex
132
131
  payload
@@ -137,23 +136,23 @@ module HrrRbSsh
137
136
  else
138
137
  payload
139
138
  end
140
- rescue ClosedTransportError
141
- raise ClosedTransportError
139
+ rescue Error::ClosedTransport
140
+ raise Error::ClosedTransport
142
141
  rescue EOFError => e
143
142
  close
144
- raise ClosedTransportError
143
+ raise Error::ClosedTransport
145
144
  rescue IOError => e
146
145
  @logger.warn { "IO is closed" }
147
146
  close
148
- raise ClosedTransportError
147
+ raise Error::ClosedTransport
149
148
  rescue Errno::ECONNRESET => e
150
149
  @logger.warn { "IO is RESET" }
151
150
  close
152
- raise ClosedTransportError
151
+ raise Error::ClosedTransport
153
152
  rescue => e
154
153
  @logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
155
154
  close
156
- raise ClosedTransportError
155
+ raise Error::ClosedTransport
157
156
  end
158
157
  end
159
158
  end
@@ -166,7 +165,7 @@ module HrrRbSsh
166
165
  exchange_key
167
166
 
168
167
  case @mode
169
- when HrrRbSsh::Transport::Mode::SERVER
168
+ when Mode::SERVER
170
169
  verify_service_request
171
170
  end
172
171
 
@@ -250,19 +249,19 @@ module HrrRbSsh
250
249
  end
251
250
 
252
251
  def update_supported_algorithms
253
- @supported_kex_algorithms = HrrRbSsh::Transport::KexAlgorithm.list_supported
254
- @supported_server_host_key_algorithms = HrrRbSsh::Transport::ServerHostKeyAlgorithm.list_supported
255
- @supported_encryption_algorithms = HrrRbSsh::Transport::EncryptionAlgorithm.list_supported
256
- @supported_mac_algorithms = HrrRbSsh::Transport::MacAlgorithm.list_supported
257
- @supported_compression_algorithms = HrrRbSsh::Transport::CompressionAlgorithm.list_supported
252
+ @supported_kex_algorithms = KexAlgorithm.list_supported
253
+ @supported_server_host_key_algorithms = ServerHostKeyAlgorithm.list_supported
254
+ @supported_encryption_algorithms = EncryptionAlgorithm.list_supported
255
+ @supported_mac_algorithms = MacAlgorithm.list_supported
256
+ @supported_compression_algorithms = CompressionAlgorithm.list_supported
258
257
  end
259
258
 
260
259
  def update_preferred_algorithms
261
- @preferred_kex_algorithms = @options['transport_preferred_kex_algorithms'] || HrrRbSsh::Transport::KexAlgorithm.list_preferred
262
- @preferred_server_host_key_algorithms = @options['transport_preferred_server_host_key_algorithms'] || HrrRbSsh::Transport::ServerHostKeyAlgorithm.list_preferred
263
- @preferred_encryption_algorithms = @options['transport_preferred_encryption_algorithms'] || HrrRbSsh::Transport::EncryptionAlgorithm.list_preferred
264
- @preferred_mac_algorithms = @options['transport_preferred_mac_algorithms'] || HrrRbSsh::Transport::MacAlgorithm.list_preferred
265
- @preferred_compression_algorithms = @options['transport_preferred_compression_algorithms'] || HrrRbSsh::Transport::CompressionAlgorithm.list_preferred
260
+ @preferred_kex_algorithms = @options['transport_preferred_kex_algorithms'] || KexAlgorithm.list_preferred
261
+ @preferred_server_host_key_algorithms = @options['transport_preferred_server_host_key_algorithms'] || ServerHostKeyAlgorithm.list_preferred
262
+ @preferred_encryption_algorithms = @options['transport_preferred_encryption_algorithms'] || EncryptionAlgorithm.list_preferred
263
+ @preferred_mac_algorithms = @options['transport_preferred_mac_algorithms'] || MacAlgorithm.list_preferred
264
+ @preferred_compression_algorithms = @options['transport_preferred_compression_algorithms'] || CompressionAlgorithm.list_preferred
266
265
 
267
266
  check_if_preferred_algorithms_are_supported
268
267
  end
@@ -295,13 +294,13 @@ module HrrRbSsh
295
294
  end
296
295
 
297
296
  def initialize_algorithms
298
- @incoming_encryption_algorithm = HrrRbSsh::Transport::EncryptionAlgorithm['none'].new
299
- @incoming_mac_algorithm = HrrRbSsh::Transport::MacAlgorithm['none'].new
300
- @incoming_compression_algorithm = HrrRbSsh::Transport::CompressionAlgorithm['none'].new
297
+ @incoming_encryption_algorithm = EncryptionAlgorithm['none'].new
298
+ @incoming_mac_algorithm = MacAlgorithm['none'].new
299
+ @incoming_compression_algorithm = CompressionAlgorithm['none'].new
301
300
 
302
- @outgoing_encryption_algorithm = HrrRbSsh::Transport::EncryptionAlgorithm['none'].new
303
- @outgoing_mac_algorithm = HrrRbSsh::Transport::MacAlgorithm['none'].new
304
- @outgoing_compression_algorithm = HrrRbSsh::Transport::CompressionAlgorithm['none'].new
301
+ @outgoing_encryption_algorithm = EncryptionAlgorithm['none'].new
302
+ @outgoing_mac_algorithm = MacAlgorithm['none'].new
303
+ @outgoing_compression_algorithm = CompressionAlgorithm['none'].new
305
304
  end
306
305
 
307
306
  def send_version
@@ -309,15 +308,18 @@ module HrrRbSsh
309
308
  end
310
309
 
311
310
  def receive_version
312
- tmp_str = String.new
311
+ str_io = StringIO.new
313
312
  loop do
314
- tmp_str << @io.read(1)
315
- if tmp_str =~ /#{CR}#{LF}/
316
- if tmp_str =~ /^SSH-/
317
- @remote_version = tmp_str.match( /(:?SSH-.+)#{CR}#{LF}/ )[1]
313
+ str_io.write @io.read(1)
314
+ if str_io.string[-2..-1] == "#{CR}#{LF}"
315
+ if str_io.string[0..3] == "SSH-"
316
+ @remote_version = str_io.string[0..-3]
317
+ @logger.info { "received remote version string: #{@remote_version}" }
318
318
  break
319
319
  else
320
- tmp_str.clear
320
+ @logger.info { "received message before remote version string: #{str_io.string}" }
321
+ str_io.rewind
322
+ str_io.truncate(0)
321
323
  end
322
324
  end
323
325
  end
@@ -325,10 +327,10 @@ module HrrRbSsh
325
327
 
326
328
  def update_version_strings
327
329
  case @mode
328
- when HrrRbSsh::Transport::Mode::SERVER
330
+ when Mode::SERVER
329
331
  @v_c = @remote_version
330
332
  @v_s = @local_version
331
- when HrrRbSsh::Transport::Mode::CLIENT
333
+ when Mode::CLIENT
332
334
  @v_c = @local_version
333
335
  @v_s = @remote_version
334
336
  end
@@ -336,18 +338,18 @@ module HrrRbSsh
336
338
 
337
339
  def send_disconnect
338
340
  message = {
339
- :'message number' => HrrRbSsh::Message::SSH_MSG_DISCONNECT::VALUE,
340
- :'reason code' => HrrRbSsh::Message::SSH_MSG_DISCONNECT::ReasonCode::SSH_DISCONNECT_BY_APPLICATION,
341
+ :'message number' => Message::SSH_MSG_DISCONNECT::VALUE,
342
+ :'reason code' => Message::SSH_MSG_DISCONNECT::ReasonCode::SSH_DISCONNECT_BY_APPLICATION,
341
343
  :'description' => "disconnected by user",
342
344
  :'language tag' => ""
343
345
  }
344
- payload = HrrRbSsh::Message::SSH_MSG_DISCONNECT.encode message
346
+ payload = Message::SSH_MSG_DISCONNECT.encode message
345
347
  send payload
346
348
  end
347
349
 
348
350
  def send_kexinit
349
351
  message = {
350
- :'message number' => HrrRbSsh::Message::SSH_MSG_KEXINIT::VALUE,
352
+ :'message number' => Message::SSH_MSG_KEXINIT::VALUE,
351
353
  :'cookie (random byte)' => lambda { rand(0x01_00) },
352
354
  :'kex_algorithms' => @local_kex_algorithms,
353
355
  :'server_host_key_algorithms' => @local_server_host_key_algorithms,
@@ -362,53 +364,53 @@ module HrrRbSsh
362
364
  :'first_kex_packet_follows' => false,
363
365
  :'0 (reserved for future extension)' => 0,
364
366
  }
365
- payload = HrrRbSsh::Message::SSH_MSG_KEXINIT.encode message
367
+ payload = Message::SSH_MSG_KEXINIT.encode message
366
368
  send payload
367
369
 
368
370
  case @mode
369
- when HrrRbSsh::Transport::Mode::SERVER
371
+ when Mode::SERVER
370
372
  @i_s = payload
371
- when HrrRbSsh::Transport::Mode::CLIENT
373
+ when Mode::CLIENT
372
374
  @i_c = payload
373
375
  end
374
376
  end
375
377
 
376
378
  def receive_kexinit payload
377
379
  case @mode
378
- when HrrRbSsh::Transport::Mode::SERVER
380
+ when Mode::SERVER
379
381
  @i_c = payload
380
- when HrrRbSsh::Transport::Mode::CLIENT
382
+ when Mode::CLIENT
381
383
  @i_s = payload
382
384
  end
383
- message = HrrRbSsh::Message::SSH_MSG_KEXINIT.decode payload
385
+ message = Message::SSH_MSG_KEXINIT.decode payload
384
386
  update_remote_algorithms message
385
387
  end
386
388
 
387
389
  def send_newkeys
388
390
  message = {
389
- :'message number' => HrrRbSsh::Message::SSH_MSG_NEWKEYS::VALUE,
391
+ :'message number' => Message::SSH_MSG_NEWKEYS::VALUE,
390
392
  }
391
- payload = HrrRbSsh::Message::SSH_MSG_NEWKEYS.encode message
393
+ payload = Message::SSH_MSG_NEWKEYS.encode message
392
394
  send payload
393
395
  end
394
396
 
395
397
  def receive_newkeys payload
396
- message = HrrRbSsh::Message::SSH_MSG_NEWKEYS.decode payload
398
+ message = Message::SSH_MSG_NEWKEYS.decode payload
397
399
  end
398
400
 
399
401
  def receive_service_request
400
402
  payload = @receiver.receive self
401
- message = HrrRbSsh::Message::SSH_MSG_SERVICE_REQUEST.decode payload
403
+ message = Message::SSH_MSG_SERVICE_REQUEST.decode payload
402
404
 
403
405
  message
404
406
  end
405
407
 
406
408
  def send_service_accept service_name
407
409
  message = {
408
- :'message number' => HrrRbSsh::Message::SSH_MSG_SERVICE_ACCEPT::VALUE,
410
+ :'message number' => Message::SSH_MSG_SERVICE_ACCEPT::VALUE,
409
411
  :'service name' => service_name,
410
412
  }
411
- payload = HrrRbSsh::Message::SSH_MSG_SERVICE_ACCEPT.encode message
413
+ payload = Message::SSH_MSG_SERVICE_ACCEPT.encode message
412
414
  send payload
413
415
  end
414
416
 
@@ -425,17 +427,17 @@ module HrrRbSsh
425
427
 
426
428
  def update_kex_and_server_host_key_algorithms
427
429
  case @mode
428
- when HrrRbSsh::Transport::Mode::SERVER
430
+ when Mode::SERVER
429
431
  kex_algorithm_name = @remote_kex_algorithms.find{ |a| @local_kex_algorithms.include? a } or raise
430
432
  server_host_key_algorithm_name = @remote_server_host_key_algorithms.find{ |a| @local_server_host_key_algorithms.include? a } or raise
431
- when HrrRbSsh::Transport::Mode::CLIENT
433
+ when Mode::CLIENT
432
434
  kex_algorithm_name = @local_kex_algorithms.find{ |a| @remote_kex_algorithms.include? a } or raise
433
435
  server_host_key_algorithm_name = @local_server_host_key_algorithms.find{ |a| @remote_server_host_key_algorithms.include? a } or raise
434
436
  end
435
437
 
436
438
  server_secret_host_key = @options.fetch('transport_server_secret_host_keys', {}).fetch(server_host_key_algorithm_name, nil)
437
- @kex_algorithm = HrrRbSsh::Transport::KexAlgorithm[kex_algorithm_name].new
438
- @server_host_key_algorithm = HrrRbSsh::Transport::ServerHostKeyAlgorithm[server_host_key_algorithm_name].new server_secret_host_key
439
+ @kex_algorithm = KexAlgorithm[kex_algorithm_name].new
440
+ @server_host_key_algorithm = ServerHostKeyAlgorithm[server_host_key_algorithm_name].new server_secret_host_key
439
441
  end
440
442
 
441
443
  def update_encryption_mac_compression_algorithms
@@ -447,7 +449,7 @@ module HrrRbSsh
447
449
 
448
450
  def update_encryption_algorithm
449
451
  case @mode
450
- when HrrRbSsh::Transport::Mode::SERVER
452
+ when Mode::SERVER
451
453
  encryption_algorithm_c_to_s_name = @remote_encryption_algorithms_client_to_server.find{ |a| @local_encryption_algorithms_client_to_server.include? a } or raise
452
454
  encryption_algorithm_s_to_c_name = @remote_encryption_algorithms_server_to_client.find{ |a| @local_encryption_algorithms_server_to_client.include? a } or raise
453
455
  incoming_encryption_algorithm_name = encryption_algorithm_c_to_s_name
@@ -457,13 +459,13 @@ module HrrRbSsh
457
459
  incoming_crpt_key = @kex_algorithm.key_c_to_s self, incoming_encryption_algorithm_name
458
460
  outgoing_crpt_key = @kex_algorithm.key_s_to_c self, outgoing_encryption_algorithm_name
459
461
  end
460
- @incoming_encryption_algorithm = HrrRbSsh::Transport::EncryptionAlgorithm[incoming_encryption_algorithm_name].new Direction::INCOMING, incoming_crpt_iv, incoming_crpt_key
461
- @outgoing_encryption_algorithm = HrrRbSsh::Transport::EncryptionAlgorithm[outgoing_encryption_algorithm_name].new Direction::OUTGOING, outgoing_crpt_iv, outgoing_crpt_key
462
+ @incoming_encryption_algorithm = EncryptionAlgorithm[incoming_encryption_algorithm_name].new Direction::INCOMING, incoming_crpt_iv, incoming_crpt_key
463
+ @outgoing_encryption_algorithm = EncryptionAlgorithm[outgoing_encryption_algorithm_name].new Direction::OUTGOING, outgoing_crpt_iv, outgoing_crpt_key
462
464
  end
463
465
 
464
466
  def update_mac_algorithm
465
467
  case @mode
466
- when HrrRbSsh::Transport::Mode::SERVER
468
+ when Mode::SERVER
467
469
  mac_algorithm_c_to_s_name = @remote_mac_algorithms_client_to_server.find{ |a| @local_mac_algorithms_client_to_server.include? a } or raise
468
470
  mac_algorithm_s_to_c_name = @remote_mac_algorithms_server_to_client.find{ |a| @local_mac_algorithms_server_to_client.include? a } or raise
469
471
  incoming_mac_algorithm_name = mac_algorithm_c_to_s_name
@@ -471,13 +473,13 @@ module HrrRbSsh
471
473
  incoming_mac_key = @kex_algorithm.mac_c_to_s self, incoming_mac_algorithm_name
472
474
  outgoing_mac_key = @kex_algorithm.mac_s_to_c self, outgoing_mac_algorithm_name
473
475
  end
474
- @incoming_mac_algorithm = HrrRbSsh::Transport::MacAlgorithm[incoming_mac_algorithm_name].new incoming_mac_key
475
- @outgoing_mac_algorithm = HrrRbSsh::Transport::MacAlgorithm[outgoing_mac_algorithm_name].new outgoing_mac_key
476
+ @incoming_mac_algorithm = MacAlgorithm[incoming_mac_algorithm_name].new incoming_mac_key
477
+ @outgoing_mac_algorithm = MacAlgorithm[outgoing_mac_algorithm_name].new outgoing_mac_key
476
478
  end
477
479
 
478
480
  def update_compression_algorithm
479
481
  case @mode
480
- when HrrRbSsh::Transport::Mode::SERVER
482
+ when Mode::SERVER
481
483
  compression_algorithm_c_to_s_name = @remote_compression_algorithms_client_to_server.find{ |a| @local_compression_algorithms_client_to_server.include? a } or raise
482
484
  compression_algorithm_s_to_c_name = @remote_compression_algorithms_server_to_client.find{ |a| @local_compression_algorithms_server_to_client.include? a } or raise
483
485
  incoming_compression_algorithm_name = compression_algorithm_c_to_s_name
@@ -485,8 +487,8 @@ module HrrRbSsh
485
487
  end
486
488
  @incoming_compression_algorithm.close
487
489
  @outgoing_compression_algorithm.close
488
- @incoming_compression_algorithm = HrrRbSsh::Transport::CompressionAlgorithm[incoming_compression_algorithm_name].new Direction::INCOMING
489
- @outgoing_compression_algorithm = HrrRbSsh::Transport::CompressionAlgorithm[outgoing_compression_algorithm_name].new Direction::OUTGOING
490
+ @incoming_compression_algorithm = CompressionAlgorithm[incoming_compression_algorithm_name].new Direction::INCOMING
491
+ @outgoing_compression_algorithm = CompressionAlgorithm[outgoing_compression_algorithm_name].new Direction::OUTGOING
490
492
  end
491
493
  end
492
494
  end
@@ -2,5 +2,5 @@
2
2
  # vim: et ts=2 sw=2
3
3
 
4
4
  module HrrRbSsh
5
- VERSION = "0.1.9"
5
+ VERSION = "0.2.0"
6
6
  end
data/lib/hrr_rb_ssh.rb CHANGED
@@ -4,9 +4,13 @@
4
4
  require "hrr_rb_ssh/version"
5
5
  require "hrr_rb_ssh/compat"
6
6
  require "hrr_rb_ssh/logger"
7
+ require "hrr_rb_ssh/mode"
8
+ require "hrr_rb_ssh/algorithm"
9
+ require "hrr_rb_ssh/error"
7
10
  require "hrr_rb_ssh/transport"
8
11
  require "hrr_rb_ssh/authentication"
9
12
  require "hrr_rb_ssh/connection"
13
+ require "hrr_rb_ssh/server"
10
14
 
11
15
  module HrrRbSsh
12
16
  # Your code goes here...
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hrr_rb_ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-12 00:00:00.000000000 Z
11
+ date: 2018-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,6 +86,21 @@ files:
86
86
  - demo/subsystem_echo_server.rb
87
87
  - hrr_rb_ssh.gemspec
88
88
  - lib/hrr_rb_ssh.rb
89
+ - lib/hrr_rb_ssh/algorithm.rb
90
+ - lib/hrr_rb_ssh/algorithm/publickey.rb
91
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2.rb
92
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/ecdsa_signature_blob.rb
93
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/public_key_blob.rb
94
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/signature.rb
95
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp256.rb
96
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp384.rb
97
+ - lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2_nistp521.rb
98
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_dss.rb
99
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_dss/public_key_blob.rb
100
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_dss/signature.rb
101
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa.rb
102
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa/public_key_blob.rb
103
+ - lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa/signature.rb
89
104
  - lib/hrr_rb_ssh/authentication.rb
90
105
  - lib/hrr_rb_ssh/authentication/authenticator.rb
91
106
  - lib/hrr_rb_ssh/authentication/method.rb
@@ -96,37 +111,23 @@ files:
96
111
  - lib/hrr_rb_ssh/authentication/method/publickey.rb
97
112
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm.rb
98
113
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256.rb
99
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/ecdsa_signature_blob.rb
100
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/public_key_blob.rb
101
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/signature.rb
102
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp256/signature_blob.rb
103
114
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384.rb
104
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/ecdsa_signature_blob.rb
105
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/public_key_blob.rb
106
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/signature.rb
107
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp384/signature_blob.rb
108
115
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521.rb
109
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/ecdsa_signature_blob.rb
110
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/public_key_blob.rb
111
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/signature.rb
112
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ecdsa_sha2_nistp521/signature_blob.rb
116
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb
117
+ - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/signature_blob.rb
113
118
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss.rb
114
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/public_key_blob.rb
115
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/signature.rb
116
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss/signature_blob.rb
117
119
  - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa.rb
118
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/public_key_blob.rb
119
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/signature.rb
120
- - lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa/signature_blob.rb
121
120
  - lib/hrr_rb_ssh/authentication/method/publickey/context.rb
122
- - lib/hrr_rb_ssh/closed_authentication_error.rb
123
- - lib/hrr_rb_ssh/closed_connection_error.rb
124
- - lib/hrr_rb_ssh/closed_transport_error.rb
125
121
  - lib/hrr_rb_ssh/codable.rb
126
122
  - lib/hrr_rb_ssh/compat.rb
127
123
  - lib/hrr_rb_ssh/compat/openssh.rb
128
124
  - lib/hrr_rb_ssh/compat/openssh/authorized_keys.rb
129
125
  - lib/hrr_rb_ssh/compat/openssh/public_key.rb
126
+ - lib/hrr_rb_ssh/compat/ruby.rb
127
+ - lib/hrr_rb_ssh/compat/ruby/array.rb
128
+ - lib/hrr_rb_ssh/compat/ruby/openssl.rb
129
+ - lib/hrr_rb_ssh/compat/ruby/openssl/bn.rb
130
+ - lib/hrr_rb_ssh/compat/ruby/queue.rb
130
131
  - lib/hrr_rb_ssh/connection.rb
131
132
  - lib/hrr_rb_ssh/connection/channel.rb
132
133
  - lib/hrr_rb_ssh/connection/channel/channel_type.rb
@@ -156,6 +157,10 @@ files:
156
157
  - lib/hrr_rb_ssh/connection/request_handler/reference_shell_request_handler.rb
157
158
  - lib/hrr_rb_ssh/connection/request_handler/reference_window_change_request_handler.rb
158
159
  - lib/hrr_rb_ssh/data_type.rb
160
+ - lib/hrr_rb_ssh/error.rb
161
+ - lib/hrr_rb_ssh/error/closed_authentication.rb
162
+ - lib/hrr_rb_ssh/error/closed_connection.rb
163
+ - lib/hrr_rb_ssh/error/closed_transport.rb
159
164
  - lib/hrr_rb_ssh/logger.rb
160
165
  - lib/hrr_rb_ssh/message.rb
161
166
  - lib/hrr_rb_ssh/message/001_ssh_msg_disconnect.rb
@@ -193,7 +198,9 @@ files:
193
198
  - lib/hrr_rb_ssh/message/098_ssh_msg_channel_request.rb
194
199
  - lib/hrr_rb_ssh/message/099_ssh_msg_channel_success.rb
195
200
  - lib/hrr_rb_ssh/message/100_ssh_msg_channel_failure.rb
201
+ - lib/hrr_rb_ssh/mode.rb
196
202
  - lib/hrr_rb_ssh/openssl_secure_random.rb
203
+ - lib/hrr_rb_ssh/server.rb
197
204
  - lib/hrr_rb_ssh/subclass_with_preference_listable.rb
198
205
  - lib/hrr_rb_ssh/transport.rb
199
206
  - lib/hrr_rb_ssh/transport/compression_algorithm.rb
@@ -236,6 +243,7 @@ files:
236
243
  - lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman_sha2_nistp256.rb
237
244
  - lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman_sha2_nistp384.rb
238
245
  - lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman_sha2_nistp521.rb
246
+ - lib/hrr_rb_ssh/transport/kex_algorithm/iv_computable.rb
239
247
  - lib/hrr_rb_ssh/transport/mac_algorithm.rb
240
248
  - lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb
241
249
  - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5.rb
@@ -246,29 +254,16 @@ files:
246
254
  - lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha2_512.rb
247
255
  - lib/hrr_rb_ssh/transport/mac_algorithm/none.rb
248
256
  - lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb
249
- - lib/hrr_rb_ssh/transport/mode.rb
250
257
  - lib/hrr_rb_ssh/transport/receiver.rb
251
258
  - lib/hrr_rb_ssh/transport/sender.rb
252
259
  - lib/hrr_rb_ssh/transport/sequence_number.rb
253
260
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm.rb
254
261
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256.rb
255
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256/ecdsa_signature_blob.rb
256
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256/public_key_blob.rb
257
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp256/signature.rb
258
262
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384.rb
259
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/ecdsa_signature_blob.rb
260
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/public_key_blob.rb
261
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp384/signature.rb
262
263
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521.rb
263
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521/ecdsa_signature_blob.rb
264
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521/public_key_blob.rb
265
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ecdsa_sha2_nistp521/signature.rb
264
+ - lib/hrr_rb_ssh/transport/server_host_key_algorithm/functionable.rb
266
265
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss.rb
267
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss/public_key_blob.rb
268
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss/signature.rb
269
266
  - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb
270
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa/public_key_blob.rb
271
- - lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa/signature.rb
272
267
  - lib/hrr_rb_ssh/version.rb
273
268
  homepage: https://github.com/hirura/hrr_rb_ssh
274
269
  licenses:
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/data_type'
5
- require 'hrr_rb_ssh/codable'
6
-
7
- module HrrRbSsh
8
- class Authentication
9
- class Method
10
- class Publickey
11
- class Algorithm
12
- class EcdsaSha2Nistp256
13
- module EcdsaSignatureBlob
14
- class << self
15
- include Codable
16
- end
17
- DEFINITION = [
18
- [DataType::Mpint, :'r'],
19
- [DataType::Mpint, :'s'],
20
- ]
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,28 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/data_type'
5
- require 'hrr_rb_ssh/codable'
6
-
7
- module HrrRbSsh
8
- class Authentication
9
- class Method
10
- class Publickey
11
- class Algorithm
12
- class EcdsaSha2Nistp256
13
- module PublicKeyBlob
14
- class << self
15
- include Codable
16
- end
17
- DEFINITION = [
18
- [DataType::String, :'public key algorithm name'],
19
- [DataType::String, :'[identifier]'],
20
- [DataType::String, :'Q'],
21
- ]
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- # vim: et ts=2 sw=2
3
-
4
- require 'hrr_rb_ssh/data_type'
5
- require 'hrr_rb_ssh/codable'
6
-
7
- module HrrRbSsh
8
- class Authentication
9
- class Method
10
- class Publickey
11
- class Algorithm
12
- class EcdsaSha2Nistp256
13
- module Signature
14
- class << self
15
- include Codable
16
- end
17
- DEFINITION = [
18
- [DataType::String, :'public key algorithm name'],
19
- [DataType::String, :'signature blob'],
20
- ]
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end