hrr_rb_ssh 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/demo/server.rb +13 -1
- data/lib/hrr_rb_ssh/authentication/method/none/context.rb +1 -1
- data/lib/hrr_rb_ssh/authentication/method/none.rb +4 -4
- data/lib/hrr_rb_ssh/authentication/method/password/context.rb +1 -1
- data/lib/hrr_rb_ssh/authentication/method/password.rb +4 -4
- data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/codable.rb +5 -5
- data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_dss.rb +29 -18
- data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/ssh_rsa.rb +27 -16
- data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm.rb +7 -13
- data/lib/hrr_rb_ssh/authentication/method/publickey/context.rb +1 -1
- data/lib/hrr_rb_ssh/authentication/method/publickey.rb +5 -5
- data/lib/hrr_rb_ssh/authentication/method.rb +6 -12
- data/lib/hrr_rb_ssh/authentication.rb +1 -1
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb +2 -2
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb +2 -3
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb +2 -2
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb +2 -3
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb +2 -2
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb +2 -3
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb +2 -2
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb +2 -3
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb +2 -2
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb +2 -3
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type.rb +16 -11
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session.rb +1 -15
- data/lib/hrr_rb_ssh/connection/channel/channel_type.rb +15 -10
- data/lib/hrr_rb_ssh/connection/channel.rb +1 -1
- data/lib/hrr_rb_ssh/data_type.rb +153 -0
- data/lib/hrr_rb_ssh/message/001_ssh_msg_disconnect.rb +6 -6
- data/lib/hrr_rb_ssh/message/002_ssh_msg_ignore.rb +4 -4
- data/lib/hrr_rb_ssh/message/003_ssh_msg_unimplemented.rb +4 -4
- data/lib/hrr_rb_ssh/message/004_ssh_msg_debug.rb +6 -6
- data/lib/hrr_rb_ssh/message/005_ssh_msg_service_request.rb +4 -4
- data/lib/hrr_rb_ssh/message/006_ssh_msg_service_accept.rb +4 -4
- data/lib/hrr_rb_ssh/message/020_ssh_msg_kexinit.rb +31 -31
- data/lib/hrr_rb_ssh/message/021_ssh_msg_newkeys.rb +3 -3
- data/lib/hrr_rb_ssh/message/030_ssh_msg_kexdh_init.rb +4 -4
- data/lib/hrr_rb_ssh/message/031_ssh_msg_kexdh_reply.rb +6 -6
- data/lib/hrr_rb_ssh/message/050_ssh_msg_userauth_request.rb +18 -18
- data/lib/hrr_rb_ssh/message/051_ssh_msg_userauth_failure.rb +5 -5
- data/lib/hrr_rb_ssh/message/052_ssh_msg_userauth_success.rb +3 -3
- data/lib/hrr_rb_ssh/message/060_ssh_msg_userauth_pk_ok.rb +5 -5
- data/lib/hrr_rb_ssh/message/080_ssh_msg_global_request.rb +13 -13
- data/lib/hrr_rb_ssh/message/081_ssh_msg_request_success.rb +6 -6
- data/lib/hrr_rb_ssh/message/082_ssh_msg_request_failure.rb +3 -3
- data/lib/hrr_rb_ssh/message/090_ssh_msg_channel_open.rb +25 -25
- data/lib/hrr_rb_ssh/message/091_ssh_msg_channel_open_confirmation.rb +25 -25
- data/lib/hrr_rb_ssh/message/092_ssh_msg_channel_open_failure.rb +7 -7
- data/lib/hrr_rb_ssh/message/093_ssh_msg_channel_window_adjust.rb +5 -5
- data/lib/hrr_rb_ssh/message/094_ssh_msg_channel_data.rb +5 -5
- data/lib/hrr_rb_ssh/message/095_ssh_msg_channel_extended_data.rb +6 -6
- data/lib/hrr_rb_ssh/message/096_ssh_msg_channel_eof.rb +4 -4
- data/lib/hrr_rb_ssh/message/097_ssh_msg_channel_close.rb +4 -4
- data/lib/hrr_rb_ssh/message/098_ssh_msg_channel_request.rb +53 -53
- data/lib/hrr_rb_ssh/message/099_ssh_msg_channel_success.rb +4 -4
- data/lib/hrr_rb_ssh/message/100_ssh_msg_channel_failure.rb +4 -4
- data/lib/hrr_rb_ssh/message/codable.rb +2 -3
- data/lib/hrr_rb_ssh/subclass_with_preference_listable.rb +29 -0
- data/lib/hrr_rb_ssh/transport/compression_algorithm/functionable.rb +4 -4
- data/lib/hrr_rb_ssh/transport/compression_algorithm/none.rb +1 -6
- data/lib/hrr_rb_ssh/transport/compression_algorithm/unfunctionable.rb +4 -0
- data/lib/hrr_rb_ssh/transport/compression_algorithm/zlib.rb +1 -6
- data/lib/hrr_rb_ssh/transport/compression_algorithm.rb +5 -11
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes128_ctr.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes192_ctr.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/aes256_ctr.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/arcfour.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/blowfish_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/cast128_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/functionable.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/none.rb +1 -6
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/three_des_cbc.rb +1 -2
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/unfunctionable.rb +6 -0
- data/lib/hrr_rb_ssh/transport/encryption_algorithm.rb +5 -11
- data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb +14 -14
- data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group14_sha1.rb +2 -5
- data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group1_sha1.rb +2 -5
- data/lib/hrr_rb_ssh/transport/kex_algorithm.rb +5 -10
- data/lib/hrr_rb_ssh/transport/mac_algorithm/functionable.rb +2 -3
- data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5.rb +3 -5
- data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_md5_96.rb +3 -5
- data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1.rb +3 -5
- data/lib/hrr_rb_ssh/transport/mac_algorithm/hmac_sha1_96.rb +3 -5
- data/lib/hrr_rb_ssh/transport/mac_algorithm/none.rb +2 -8
- data/lib/hrr_rb_ssh/transport/mac_algorithm/unfunctionable.rb +4 -0
- data/lib/hrr_rb_ssh/transport/mac_algorithm.rb +5 -11
- data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_dss.rb +14 -13
- data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb +12 -11
- data/lib/hrr_rb_ssh/transport/server_host_key_algorithm.rb +5 -10
- data/lib/hrr_rb_ssh/transport.rb +147 -108
- data/lib/hrr_rb_ssh/version.rb +1 -1
- metadata +4 -12
- data/lib/hrr_rb_ssh/authentication/method/method.rb +0 -34
- data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/algorithm.rb +0 -41
- data/lib/hrr_rb_ssh/connection/channel/channel_type/channel_type.rb +0 -30
- data/lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/request_type.rb +0 -34
- data/lib/hrr_rb_ssh/transport/compression_algorithm/compression_algorithm.rb +0 -34
- data/lib/hrr_rb_ssh/transport/data_type.rb +0 -163
- data/lib/hrr_rb_ssh/transport/encryption_algorithm/encryption_algorithm.rb +0 -34
- data/lib/hrr_rb_ssh/transport/kex_algorithm/kex_algorithm.rb +0 -34
- data/lib/hrr_rb_ssh/transport/mac_algorithm/mac_algorithm.rb +0 -34
- data/lib/hrr_rb_ssh/transport/server_host_key_algorithm/server_host_key_algorithm.rb +0 -34
@@ -4,22 +4,27 @@
|
|
4
4
|
module HrrRbSsh
|
5
5
|
class Connection
|
6
6
|
class Channel
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
class ChannelType
|
8
|
+
@subclass_list = Array.new
|
9
|
+
class << self
|
10
|
+
def inherited klass
|
11
|
+
@subclass_list.push klass if @subclass_list
|
12
|
+
end
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
def [] key
|
15
|
+
__subclass_list__(__method__).find{ |klass| klass::NAME == key }
|
16
|
+
end
|
17
|
+
|
18
|
+
def __subclass_list__ method_name
|
19
|
+
send(:method_missing, method_name) unless @subclass_list
|
20
|
+
@subclass_list
|
21
|
+
end
|
15
22
|
|
16
|
-
|
17
|
-
ChannelType[key]
|
23
|
+
private :__subclass_list__
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
23
29
|
|
24
|
-
require 'hrr_rb_ssh/connection/channel/channel_type/channel_type'
|
25
30
|
require 'hrr_rb_ssh/connection/channel/channel_type/session'
|
@@ -209,7 +209,7 @@ module HrrRbSsh
|
|
209
209
|
|
210
210
|
def request message, variables
|
211
211
|
request_type = message['request type']
|
212
|
-
ChannelType[@channel_type][request_type].run @proc_chain, @connection.username, @request_handler_io, variables, message, @connection.options
|
212
|
+
ChannelType[@channel_type]::RequestType[request_type].run @proc_chain, @connection.username, @request_handler_io, variables, message, @connection.options
|
213
213
|
end
|
214
214
|
|
215
215
|
def send_channel_success
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# vim: et ts=2 sw=2
|
3
|
+
|
4
|
+
require 'openssl'
|
5
|
+
|
6
|
+
module HrrRbSsh
|
7
|
+
module DataType
|
8
|
+
class Byte
|
9
|
+
def self.encode arg
|
10
|
+
case arg
|
11
|
+
when 0x00..0xff
|
12
|
+
[arg].pack("C")
|
13
|
+
else
|
14
|
+
raise ArgumentError, "must be in #{0x00}..#{0xff}, but got #{arg.inspect}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.decode io
|
19
|
+
io.read(1).unpack("C")[0]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Boolean
|
24
|
+
def self.encode arg
|
25
|
+
case arg
|
26
|
+
when false
|
27
|
+
[0].pack("C")
|
28
|
+
when true
|
29
|
+
[1].pack("C")
|
30
|
+
else
|
31
|
+
raise ArgumentError, "must be #{true} or #{false}, but got #{arg.inspect}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.decode io
|
36
|
+
if 0 == io.read(1).unpack("C")[0]
|
37
|
+
false
|
38
|
+
else
|
39
|
+
true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class Uint32
|
45
|
+
def self.encode arg
|
46
|
+
case arg
|
47
|
+
when 0x0000_0000..0xffff_ffff
|
48
|
+
[arg].pack("N")
|
49
|
+
else
|
50
|
+
raise ArgumentError, "must be in #{0x0000_0000}..#{0xffff_ffff}, but got #{arg.inspect}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.decode io
|
55
|
+
io.read(4).unpack("N")[0]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class Uint64
|
60
|
+
def self.encode arg
|
61
|
+
case arg
|
62
|
+
when 0x0000_0000_0000_0000..0xffff_ffff_ffff_ffff
|
63
|
+
[arg >> 32].pack("N") + [arg & 0x0000_0000_ffff_ffff].pack("N")
|
64
|
+
else
|
65
|
+
raise ArgumentError, "must be in #{0x0000_0000_0000_0000}..#{0xffff_ffff_ffff_ffff}, but got #{arg.inspect}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.decode io
|
70
|
+
(io.read(4).unpack("N")[0] << 32) + (io.read(4).unpack("N")[0])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class String
|
75
|
+
def self.encode arg
|
76
|
+
unless arg.kind_of? ::String
|
77
|
+
raise ArgumentError, "must be a kind of String, but got #{arg.inspect}"
|
78
|
+
end
|
79
|
+
if arg.length > 0xffff_ffff
|
80
|
+
raise ArgumentError, "must be shorter than or equal to #{0xffff_ffff}, but got length #{arg.length}"
|
81
|
+
end
|
82
|
+
[arg.length, arg].pack("Na*")
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.decode io
|
86
|
+
length = io.read(4).unpack("N")[0]
|
87
|
+
io.read(length).unpack("a*")[0]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class Mpint
|
92
|
+
def self.encode arg
|
93
|
+
unless arg.kind_of? ::Integer
|
94
|
+
raise ArgumentError, "must be a kind of Integer, but got #{arg.inspect}"
|
95
|
+
end
|
96
|
+
if arg.size > 0xffff_ffff
|
97
|
+
raise ArgumentError, "must be shorter than or equal to #{0xffff_ffff}, but got length #{arg.size}"
|
98
|
+
end
|
99
|
+
bn = ::OpenSSL::BN.new(arg)
|
100
|
+
if bn < 0
|
101
|
+
# get 2's complement
|
102
|
+
tc = bn.to_i & ((1 << (bn.num_bytes * 8)) - 1)
|
103
|
+
# get hex representation
|
104
|
+
hex_str = "%x" % tc
|
105
|
+
|
106
|
+
if tc[(bn.num_bytes * 8) - 1] == 1
|
107
|
+
[bn.num_bytes, hex_str].pack("NH*")
|
108
|
+
else
|
109
|
+
[bn.num_bytes + 1, "ff" + hex_str].pack("NH*")
|
110
|
+
end
|
111
|
+
else
|
112
|
+
bn.to_s(0)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def self.decode io
|
117
|
+
length = io.read(4).unpack("N")[0]
|
118
|
+
hex_str = io.read(length).unpack("H*")[0]
|
119
|
+
# get temporal integer value
|
120
|
+
value = hex_str.hex
|
121
|
+
if length == 0
|
122
|
+
0
|
123
|
+
elsif value[(length * 8) - 1] == 0
|
124
|
+
value
|
125
|
+
else
|
126
|
+
num_bytes = if hex_str.start_with?("ff") then length - 1 else length end
|
127
|
+
- (((~ value) & ((1 << (num_bytes * 8)) - 1)) + 1)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
class NameList
|
133
|
+
def self.encode arg
|
134
|
+
unless arg.kind_of? Array
|
135
|
+
raise ArgumentError, "must be a kind of Array, but got #{arg.inspect}"
|
136
|
+
end
|
137
|
+
unless (arg.map(&:class) - [::String]).empty?
|
138
|
+
raise ArgumentError, "must be with all elements of String, but got #{arg.inspect}"
|
139
|
+
end
|
140
|
+
joined_arg = arg.join(',')
|
141
|
+
if joined_arg.length > 0xffff_ffff
|
142
|
+
raise ArgumentError, "must be shorter than or equal to #{0xffff_ffff}, but got length #{joined_arg.length}"
|
143
|
+
end
|
144
|
+
[joined_arg.length, joined_arg].pack("Na*")
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.decode io
|
148
|
+
length = io.read(4).unpack("N")[0]
|
149
|
+
io.read(length).unpack("a*")[0].split(',')
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -33,11 +33,11 @@ module HrrRbSsh
|
|
33
33
|
VALUE = 1
|
34
34
|
|
35
35
|
DEFINITION = [
|
36
|
-
#
|
37
|
-
[
|
38
|
-
[
|
39
|
-
[
|
40
|
-
[
|
36
|
+
#[DataType, Field Name]
|
37
|
+
[DataType::Byte, 'message number'],
|
38
|
+
[DataType::Uint32, 'reason code'],
|
39
|
+
[DataType::String, 'description'],
|
40
|
+
[DataType::String, 'language tag'],
|
41
41
|
]
|
42
42
|
end
|
43
43
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,9 +15,9 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 2
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'data'],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,9 +15,9 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 3
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::Uint32, 'packet sequence number of rejected message'],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,11 +15,11 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 4
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::Boolean, 'always_display'],
|
21
|
+
[DataType::String, 'message'],
|
22
|
+
[DataType::String, 'language tag'],
|
23
23
|
]
|
24
24
|
end
|
25
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,9 +15,9 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 5
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'service name'],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,9 +15,9 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 6
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'service name'],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,36 +15,36 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 20
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
23
|
-
[
|
24
|
-
[
|
25
|
-
[
|
26
|
-
[
|
27
|
-
[
|
28
|
-
[
|
29
|
-
[
|
30
|
-
[
|
31
|
-
[
|
32
|
-
[
|
33
|
-
[
|
34
|
-
[
|
35
|
-
[
|
36
|
-
[
|
37
|
-
[
|
38
|
-
[
|
39
|
-
[
|
40
|
-
[
|
41
|
-
[
|
42
|
-
[
|
43
|
-
[
|
44
|
-
[
|
45
|
-
[
|
46
|
-
[
|
47
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::Byte, 'cookie (random byte)'],
|
21
|
+
[DataType::Byte, 'cookie (random byte)'],
|
22
|
+
[DataType::Byte, 'cookie (random byte)'],
|
23
|
+
[DataType::Byte, 'cookie (random byte)'],
|
24
|
+
[DataType::Byte, 'cookie (random byte)'],
|
25
|
+
[DataType::Byte, 'cookie (random byte)'],
|
26
|
+
[DataType::Byte, 'cookie (random byte)'],
|
27
|
+
[DataType::Byte, 'cookie (random byte)'],
|
28
|
+
[DataType::Byte, 'cookie (random byte)'],
|
29
|
+
[DataType::Byte, 'cookie (random byte)'],
|
30
|
+
[DataType::Byte, 'cookie (random byte)'],
|
31
|
+
[DataType::Byte, 'cookie (random byte)'],
|
32
|
+
[DataType::Byte, 'cookie (random byte)'],
|
33
|
+
[DataType::Byte, 'cookie (random byte)'],
|
34
|
+
[DataType::Byte, 'cookie (random byte)'],
|
35
|
+
[DataType::Byte, 'cookie (random byte)'],
|
36
|
+
[DataType::NameList, 'kex_algorithms'],
|
37
|
+
[DataType::NameList, 'server_host_key_algorithms'],
|
38
|
+
[DataType::NameList, 'encryption_algorithms_client_to_server'],
|
39
|
+
[DataType::NameList, 'encryption_algorithms_server_to_client'],
|
40
|
+
[DataType::NameList, 'mac_algorithms_client_to_server'],
|
41
|
+
[DataType::NameList, 'mac_algorithms_server_to_client'],
|
42
|
+
[DataType::NameList, 'compression_algorithms_client_to_server'],
|
43
|
+
[DataType::NameList, 'compression_algorithms_server_to_client'],
|
44
|
+
[DataType::NameList, 'languages_client_to_server'],
|
45
|
+
[DataType::NameList, 'languages_server_to_client'],
|
46
|
+
[DataType::Boolean, 'first_kex_packet_follows'],
|
47
|
+
[DataType::Uint32, '0 (reserved for future extension)'],
|
48
48
|
]
|
49
49
|
end
|
50
50
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,8 +15,8 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 21
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
20
|
]
|
21
21
|
end
|
22
22
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,9 +15,9 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 30
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::Mpint, 'e'],
|
21
21
|
]
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,11 +15,11 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 31
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'server public host key and certificates (K_S)'],
|
21
|
+
[DataType::Mpint, 'f'],
|
22
|
+
[DataType::String, 'signature of H'],
|
23
23
|
]
|
24
24
|
end
|
25
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,32 +15,32 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 50
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
22
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'user name'],
|
21
|
+
[DataType::String, 'service name'],
|
22
|
+
[DataType::String, 'method name'],
|
23
23
|
]
|
24
24
|
|
25
25
|
PUBLICKEY_DEFINITION = [
|
26
|
-
#
|
27
|
-
#
|
28
|
-
[
|
29
|
-
[
|
30
|
-
[
|
26
|
+
#[DataType, Field Name]
|
27
|
+
#[DataType::String, 'method name' : "publickey"],
|
28
|
+
[DataType::Boolean, 'with signature'],
|
29
|
+
[DataType::String, 'public key algorithm name'],
|
30
|
+
[DataType::String, 'public key blob'],
|
31
31
|
]
|
32
32
|
|
33
33
|
PUBLICKEY_SIGNATURE_DEFINITION = [
|
34
|
-
#
|
35
|
-
#
|
36
|
-
[
|
34
|
+
#[DataType, Field Name]
|
35
|
+
#[DataType::String, 'with signature' : "TRUE"],
|
36
|
+
[DataType::String, 'signature'],
|
37
37
|
]
|
38
38
|
|
39
39
|
PASSWORD_DEFINITION = [
|
40
|
-
#
|
41
|
-
#
|
42
|
-
[
|
43
|
-
[
|
40
|
+
#[DataType, Field Name]
|
41
|
+
#[DataType::String, 'method name' : "password"],
|
42
|
+
[DataType::Boolean, 'FALSE'],
|
43
|
+
[DataType::String, 'plaintext password'],
|
44
44
|
]
|
45
45
|
|
46
46
|
CONDITIONAL_DEFINITION = {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,10 +15,10 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 51
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::NameList, 'authentications that can continue'],
|
21
|
+
[DataType::Boolean, 'partial success'],
|
22
22
|
]
|
23
23
|
end
|
24
24
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,8 +15,8 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 52
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
20
|
]
|
21
21
|
end
|
22
22
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,10 +15,10 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 60
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'public key algorithm name from the request'],
|
21
|
+
[DataType::String, 'public key blob from the request'],
|
22
22
|
]
|
23
23
|
end
|
24
24
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# vim: et ts=2 sw=2
|
3
3
|
|
4
|
-
require 'hrr_rb_ssh/
|
4
|
+
require 'hrr_rb_ssh/data_type'
|
5
5
|
require 'hrr_rb_ssh/message/codable'
|
6
6
|
|
7
7
|
module HrrRbSsh
|
@@ -15,24 +15,24 @@ module HrrRbSsh
|
|
15
15
|
VALUE = 80
|
16
16
|
|
17
17
|
DEFINITION = [
|
18
|
-
#
|
19
|
-
[
|
20
|
-
[
|
21
|
-
[
|
18
|
+
#[DataType, Field Name]
|
19
|
+
[DataType::Byte, 'message number'],
|
20
|
+
[DataType::String, 'request name'],
|
21
|
+
[DataType::Boolean, 'want reply'],
|
22
22
|
]
|
23
23
|
|
24
24
|
TCPIP_FORWARD_DEFINITION = [
|
25
|
-
#
|
26
|
-
#
|
27
|
-
[
|
28
|
-
[
|
25
|
+
#[DataType, Field Name]
|
26
|
+
#[DataType::String, 'request name' : "tcpip-forward"],
|
27
|
+
[DataType::String, 'address to bind'],
|
28
|
+
[DataType::Uint32, 'port number to bind'],
|
29
29
|
]
|
30
30
|
|
31
31
|
CANCEL_TCPIP_FORWARD_DEFINITION = [
|
32
|
-
#
|
33
|
-
#
|
34
|
-
[
|
35
|
-
[
|
32
|
+
#[DataType, Field Name]
|
33
|
+
#[DataType::String, 'request name' : "cancel-tcpip-forward"],
|
34
|
+
[DataType::String, 'address to bind'],
|
35
|
+
[DataType::Uint32, 'port number to bind'],
|
36
36
|
]
|
37
37
|
|
38
38
|
CONDITIONAL_DEFINITION = {
|