hrr_rb_ssh 0.4.0.pre2 → 0.4.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/ecdsa_signature_blob.rb +2 -4
  3. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/public_key_blob.rb +2 -4
  4. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2/signature.rb +2 -4
  5. data/lib/hrr_rb_ssh/algorithm/publickey/ecdsa_sha2.rb +6 -6
  6. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_dss/public_key_blob.rb +2 -4
  7. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_dss/signature.rb +2 -4
  8. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_dss.rb +4 -4
  9. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa/public_key_blob.rb +2 -4
  10. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa/signature.rb +2 -4
  11. data/lib/hrr_rb_ssh/algorithm/publickey/ssh_rsa.rb +4 -4
  12. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive/info_request.rb +1 -1
  13. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive/info_response.rb +1 -1
  14. data/lib/hrr_rb_ssh/authentication/method/keyboard_interactive.rb +3 -3
  15. data/lib/hrr_rb_ssh/authentication/method/none.rb +1 -1
  16. data/lib/hrr_rb_ssh/authentication/method/password.rb +1 -1
  17. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb +2 -2
  18. data/lib/hrr_rb_ssh/authentication/method/publickey/algorithm/signature_blob.rb +2 -4
  19. data/lib/hrr_rb_ssh/authentication/method/publickey.rb +3 -3
  20. data/lib/hrr_rb_ssh/authentication.rb +4 -4
  21. data/lib/hrr_rb_ssh/codable.rb +11 -19
  22. data/lib/hrr_rb_ssh/connection/channel.rb +15 -15
  23. data/lib/hrr_rb_ssh/connection.rb +14 -14
  24. data/lib/hrr_rb_ssh/message/001_ssh_msg_disconnect.rb +2 -4
  25. data/lib/hrr_rb_ssh/message/002_ssh_msg_ignore.rb +2 -4
  26. data/lib/hrr_rb_ssh/message/003_ssh_msg_unimplemented.rb +2 -4
  27. data/lib/hrr_rb_ssh/message/004_ssh_msg_debug.rb +2 -4
  28. data/lib/hrr_rb_ssh/message/005_ssh_msg_service_request.rb +2 -4
  29. data/lib/hrr_rb_ssh/message/006_ssh_msg_service_accept.rb +2 -4
  30. data/lib/hrr_rb_ssh/message/020_ssh_msg_kexinit.rb +2 -4
  31. data/lib/hrr_rb_ssh/message/021_ssh_msg_newkeys.rb +2 -4
  32. data/lib/hrr_rb_ssh/message/030_ssh_msg_kex_dh_gex_request_old.rb +2 -4
  33. data/lib/hrr_rb_ssh/message/030_ssh_msg_kexdh_init.rb +2 -4
  34. data/lib/hrr_rb_ssh/message/030_ssh_msg_kexecdh_init.rb +2 -4
  35. data/lib/hrr_rb_ssh/message/031_ssh_msg_kex_dh_gex_group.rb +2 -4
  36. data/lib/hrr_rb_ssh/message/031_ssh_msg_kexdh_reply.rb +2 -4
  37. data/lib/hrr_rb_ssh/message/031_ssh_msg_kexecdh_reply.rb +2 -4
  38. data/lib/hrr_rb_ssh/message/032_ssh_msg_kex_dh_gex_init.rb +2 -4
  39. data/lib/hrr_rb_ssh/message/033_ssh_msg_kex_dh_gex_reply.rb +2 -4
  40. data/lib/hrr_rb_ssh/message/034_ssh_msg_kex_dh_gex_request.rb +2 -4
  41. data/lib/hrr_rb_ssh/message/050_ssh_msg_userauth_request.rb +2 -4
  42. data/lib/hrr_rb_ssh/message/051_ssh_msg_userauth_failure.rb +2 -4
  43. data/lib/hrr_rb_ssh/message/052_ssh_msg_userauth_success.rb +2 -4
  44. data/lib/hrr_rb_ssh/message/060_ssh_msg_userauth_info_request.rb +2 -4
  45. data/lib/hrr_rb_ssh/message/060_ssh_msg_userauth_pk_ok.rb +2 -4
  46. data/lib/hrr_rb_ssh/message/061_ssh_msg_userauth_info_response.rb +2 -4
  47. data/lib/hrr_rb_ssh/message/080_ssh_msg_global_request.rb +2 -4
  48. data/lib/hrr_rb_ssh/message/081_ssh_msg_request_success.rb +2 -4
  49. data/lib/hrr_rb_ssh/message/082_ssh_msg_request_failure.rb +2 -4
  50. data/lib/hrr_rb_ssh/message/090_ssh_msg_channel_open.rb +2 -4
  51. data/lib/hrr_rb_ssh/message/091_ssh_msg_channel_open_confirmation.rb +2 -4
  52. data/lib/hrr_rb_ssh/message/092_ssh_msg_channel_open_failure.rb +2 -4
  53. data/lib/hrr_rb_ssh/message/093_ssh_msg_channel_window_adjust.rb +2 -4
  54. data/lib/hrr_rb_ssh/message/094_ssh_msg_channel_data.rb +2 -4
  55. data/lib/hrr_rb_ssh/message/095_ssh_msg_channel_extended_data.rb +2 -4
  56. data/lib/hrr_rb_ssh/message/096_ssh_msg_channel_eof.rb +2 -4
  57. data/lib/hrr_rb_ssh/message/097_ssh_msg_channel_close.rb +2 -4
  58. data/lib/hrr_rb_ssh/message/098_ssh_msg_channel_request.rb +2 -4
  59. data/lib/hrr_rb_ssh/message/099_ssh_msg_channel_success.rb +2 -4
  60. data/lib/hrr_rb_ssh/message/100_ssh_msg_channel_failure.rb +2 -4
  61. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman/h0.rb +2 -4
  62. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman.rb +5 -5
  63. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group_exchange/h0.rb +2 -4
  64. data/lib/hrr_rb_ssh/transport/kex_algorithm/diffie_hellman_group_exchange.rb +9 -9
  65. data/lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman/h0.rb +2 -4
  66. data/lib/hrr_rb_ssh/transport/kex_algorithm/elliptic_curve_diffie_hellman.rb +5 -5
  67. data/lib/hrr_rb_ssh/transport.rb +13 -13
  68. data/lib/hrr_rb_ssh/version.rb +1 -1
  69. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c30f9080fe870a47276559ae2d1588f29b2f3d9c90cdaea619e0c970d9c26c6e
4
- data.tar.gz: 7c35bae6dd374c12c0931d260ce3304ea7e81a3922a47cc3c0ecb8f90b2bf595
3
+ metadata.gz: fff6a446ca6bc1035e2118c0e7a569aa74ae870feecc74ae08a544da2a7aa7b7
4
+ data.tar.gz: daafac5b3866a8d0139f170130867f420593e7ce0a1f72cb7a9734f5467bbc51
5
5
  SHA512:
6
- metadata.gz: ebb98c0c172d302717ae84340693257eca78bba519901654b36913feb2f411a3dbb68e3bd11aa6aa42e14c9387173d860fa2992bec9e9a0dcc9fe6cc6233c2be
7
- data.tar.gz: 79f2911726153c16c0acecc9fa34794bf734dfcd1bead634fab377816d0410ed113d5f229e2edc70eafd17fdccda86fad19eaa4a7fc06a2e0d61db190d478ab2
6
+ metadata.gz: 6702107a31da914abcacc80f8cc8a918adc47f23521bc716a4b4aed3b9ca5a7a0330cdeba6119891c9dbe02457bdf139d93688cc67c8b307a0e8207c097b57ac
7
+ data.tar.gz: c9ce61c6880b7b4f14e7f0006afe66bf2e9cf4bd589a83769e3392227632ed3ba123fdadc18e40f774cdd32c043f3f4dffc6c4d84f5ecd69c8578ca31090831a
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  module EcdsaSha2
11
- module EcdsaSignatureBlob
12
- class << self
13
- include Codable
14
- end
11
+ class EcdsaSignatureBlob
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::Mpint, :'r'],
17
15
  [DataType::Mpint, :'s'],
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  module EcdsaSha2
11
- module PublicKeyBlob
12
- class << self
13
- include Codable
14
- end
11
+ class PublicKeyBlob
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::String, :'identifier'],
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  module EcdsaSha2
11
- module Signature
12
- class << self
13
- include Codable
14
- end
11
+ class Signature
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::String, :'ecdsa signature blob'],
@@ -24,7 +24,7 @@ module HrrRbSsh
24
24
  end
25
25
 
26
26
  def new_by_public_key_blob public_key_blob
27
- public_key_blob_h = PublicKeyBlob.decode public_key_blob, logger: logger
27
+ public_key_blob_h = PublicKeyBlob.new(logger: logger).decode public_key_blob
28
28
  @publickey = OpenSSL::PKey::EC.new(self.class::CURVE_NAME)
29
29
  @publickey.public_key = OpenSSL::PKey::EC::Point.new(@publickey.group, OpenSSL::BN.new(public_key_blob_h[:'Q'], 2))
30
30
  end
@@ -39,7 +39,7 @@ module HrrRbSsh
39
39
  :'identifier' => self.class::IDENTIFIER,
40
40
  :'Q' => @publickey.public_key.to_bn.to_s(2)
41
41
  }
42
- PublicKeyBlob.encode public_key_blob_h, logger: logger
42
+ PublicKeyBlob.new(logger: logger).encode public_key_blob_h
43
43
  end
44
44
 
45
45
  def ecdsa_signature_blob signature_blob
@@ -52,7 +52,7 @@ module HrrRbSsh
52
52
  :'r' => r,
53
53
  :'s' => s,
54
54
  }
55
- EcdsaSignatureBlob.encode ecdsa_signature_blob_h, logger: logger
55
+ EcdsaSignatureBlob.new(logger: logger).encode ecdsa_signature_blob_h
56
56
  end
57
57
 
58
58
  def sign signature_blob
@@ -60,12 +60,12 @@ module HrrRbSsh
60
60
  :'public key algorithm name' => self.class::NAME,
61
61
  :'ecdsa signature blob' => ecdsa_signature_blob(signature_blob),
62
62
  }
63
- Signature.encode signature_h, logger: logger
63
+ Signature.new(logger: logger).encode signature_h
64
64
  end
65
65
 
66
66
  def verify signature, signature_blob
67
- signature_h = Signature.decode signature, logger: logger
68
- ecdsa_signature_blob_h = EcdsaSignatureBlob.decode signature_h[:'ecdsa signature blob'], logger: logger
67
+ signature_h = Signature.new(logger: logger).decode signature
68
+ ecdsa_signature_blob_h = EcdsaSignatureBlob.new(logger: logger).decode signature_h[:'ecdsa signature blob']
69
69
  r = ecdsa_signature_blob_h[:'r']
70
70
  s = ecdsa_signature_blob_h[:'s']
71
71
  sign_asn1 = OpenSSL::ASN1::Sequence.new(
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  class SshDss
11
- module PublicKeyBlob
12
- class << self
13
- include Codable
14
- end
11
+ class PublicKeyBlob
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::Mpint, :'p'],
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  class SshDss
11
- module Signature
12
- class << self
13
- include Codable
14
- end
11
+ class Signature
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::String, :'signature blob'],
@@ -26,7 +26,7 @@ module HrrRbSsh
26
26
  end
27
27
 
28
28
  def new_by_public_key_blob public_key_blob
29
- public_key_blob_h = PublicKeyBlob.decode public_key_blob, logger: logger
29
+ public_key_blob_h = PublicKeyBlob.new(logger: logger).decode public_key_blob
30
30
  @publickey = OpenSSL::PKey::DSA.new
31
31
  if @publickey.respond_to?(:set_pqg)
32
32
  @publickey.set_pqg public_key_blob_h[:'p'], public_key_blob_h[:'q'], public_key_blob_h[:'g']
@@ -54,7 +54,7 @@ module HrrRbSsh
54
54
  :'g' => @publickey.g.to_i,
55
55
  :'y' => @publickey.pub_key.to_i,
56
56
  }
57
- PublicKeyBlob.encode public_key_blob_h, logger: logger
57
+ PublicKeyBlob.new(logger: logger).encode public_key_blob_h
58
58
  end
59
59
 
60
60
  def sign signature_blob
@@ -67,11 +67,11 @@ module HrrRbSsh
67
67
  :'public key algorithm name' => self.class::NAME,
68
68
  :'signature blob' => (sign_r + sign_s),
69
69
  }
70
- Signature.encode signature_h, logger: logger
70
+ Signature.new(logger: logger).encode signature_h
71
71
  end
72
72
 
73
73
  def verify signature, signature_blob
74
- signature_h = Signature.decode signature, logger: logger
74
+ signature_h = Signature.new(logger: logger).decode signature
75
75
  sign_r = signature_h[:'signature blob'][ 0, 20]
76
76
  sign_s = signature_h[:'signature blob'][20, 20]
77
77
  sign_asn1 = OpenSSL::ASN1::Sequence.new(
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  class SshRsa
11
- module PublicKeyBlob
12
- class << self
13
- include Codable
14
- end
11
+ class PublicKeyBlob
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::Mpint, :'e'],
@@ -8,10 +8,8 @@ module HrrRbSsh
8
8
  module Algorithm
9
9
  class Publickey
10
10
  class SshRsa
11
- module Signature
12
- class << self
13
- include Codable
14
- end
11
+ class Signature
12
+ include Codable
15
13
  DEFINITION = [
16
14
  [DataType::String, :'public key algorithm name'],
17
15
  [DataType::String, :'signature blob'],
@@ -26,7 +26,7 @@ module HrrRbSsh
26
26
  end
27
27
 
28
28
  def new_by_public_key_blob public_key_blob
29
- public_key_blob_h = PublicKeyBlob.decode public_key_blob, logger: logger
29
+ public_key_blob_h = PublicKeyBlob.new(logger: logger).decode public_key_blob
30
30
  @publickey = OpenSSL::PKey::RSA.new
31
31
  if @publickey.respond_to?(:set_key)
32
32
  @publickey.set_key public_key_blob_h[:'n'], public_key_blob_h[:'e'], nil
@@ -46,7 +46,7 @@ module HrrRbSsh
46
46
  :'e' => @publickey.e.to_i,
47
47
  :'n' => @publickey.n.to_i,
48
48
  }
49
- PublicKeyBlob.encode public_key_blob_h, logger: logger
49
+ PublicKeyBlob.new(logger: logger).encode public_key_blob_h
50
50
  end
51
51
 
52
52
  def sign signature_blob
@@ -54,11 +54,11 @@ module HrrRbSsh
54
54
  :'public key algorithm name' => self.class::NAME,
55
55
  :'signature blob' => @publickey.sign(self.class::DIGEST, signature_blob),
56
56
  }
57
- Signature.encode signature_h, logger: logger
57
+ Signature.new(logger: logger).encode signature_h
58
58
  end
59
59
 
60
60
  def verify signature, signature_blob
61
- signature_h = Signature.decode signature, logger: logger
61
+ signature_h = Signature.new(logger: logger).decode signature
62
62
  signature_h[:'public key algorithm name'] == self.class::NAME && @publickey.verify(self.class::DIGEST, signature_h[:'signature blob'], signature_blob)
63
63
  end
64
64
  end
@@ -37,7 +37,7 @@ module HrrRbSsh
37
37
  end
38
38
 
39
39
  def to_payload
40
- Message::SSH_MSG_USERAUTH_INFO_REQUEST.encode self.to_message, logger: logger
40
+ Message::SSH_MSG_USERAUTH_INFO_REQUEST.new(logger: logger).encode self.to_message
41
41
  end
42
42
  end
43
43
  end
@@ -18,7 +18,7 @@ module HrrRbSsh
18
18
  self.logger = logger
19
19
  case payload[0,1].unpack("C")[0]
20
20
  when Message::SSH_MSG_USERAUTH_INFO_RESPONSE::VALUE
21
- message = Message::SSH_MSG_USERAUTH_INFO_RESPONSE.decode payload, logger: logger
21
+ message = Message::SSH_MSG_USERAUTH_INFO_RESPONSE.new(logger: logger).decode payload
22
22
  @num_responses = message[:'num-responses']
23
23
  @responses = Array.new(message[:'num-responses']){ |i| message[:"response[#{i+1}]"] }
24
24
  else
@@ -39,13 +39,13 @@ module HrrRbSsh
39
39
  :"language tag" => "",
40
40
  :'submethods' => "",
41
41
  }
42
- payload = Message::SSH_MSG_USERAUTH_REQUEST.encode message, logger: logger
42
+ payload = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).encode message
43
43
  @transport.send payload
44
44
 
45
45
  payload = @transport.receive
46
46
  case payload[0,1].unpack("C")[0]
47
47
  when Message::SSH_MSG_USERAUTH_INFO_REQUEST::VALUE
48
- message = Message::SSH_MSG_USERAUTH_INFO_REQUEST.decode payload, logger: logger
48
+ message = Message::SSH_MSG_USERAUTH_INFO_REQUEST.new(logger: logger).decode payload
49
49
  num_responses = @options['client_authentication_keyboard_interactive'].size
50
50
  message = {
51
51
  :'message number' => Message::SSH_MSG_USERAUTH_INFO_RESPONSE::VALUE,
@@ -55,7 +55,7 @@ module HrrRbSsh
55
55
  {:"response[#{i+1}]" => response}
56
56
  }.inject(Hash.new){ |a, b| a.merge(b) }
57
57
  message.update(message_responses)
58
- payload = Message::SSH_MSG_USERAUTH_INFO_RESPONSE.encode message, logger: logger
58
+ payload = Message::SSH_MSG_USERAUTH_INFO_RESPONSE.new(logger: logger).encode message
59
59
  @transport.send payload
60
60
  @transport.receive
61
61
  else
@@ -34,7 +34,7 @@ module HrrRbSsh
34
34
  :"service name" => service_name,
35
35
  :"method name" => NAME,
36
36
  }
37
- payload = Message::SSH_MSG_USERAUTH_REQUEST.encode message, logger: logger
37
+ payload = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).encode message
38
38
  @transport.send payload
39
39
  payload = @transport.receive
40
40
  end
@@ -40,7 +40,7 @@ module HrrRbSsh
40
40
  :"FALSE" => false,
41
41
  :"plaintext password" => password,
42
42
  }
43
- payload = Message::SSH_MSG_USERAUTH_REQUEST.encode message, logger: logger
43
+ payload = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).encode message
44
44
  @transport.send payload
45
45
 
46
46
  payload = @transport.receive
@@ -38,7 +38,7 @@ module HrrRbSsh
38
38
  :'public key algorithm name' => message[:'public key algorithm name'],
39
39
  :'public key blob' => message[:'public key blob'],
40
40
  }
41
- signature_blob = SignatureBlob.encode signature_blob_h, logger: logger
41
+ signature_blob = SignatureBlob.new(logger: logger).encode signature_blob_h
42
42
  publickey = HrrRbSsh::Algorithm::Publickey[self.class::NAME].new message[:'public key blob'], logger: logger
43
43
  publickey.verify message[:'signature'], signature_blob
44
44
  rescue => e
@@ -65,7 +65,7 @@ module HrrRbSsh
65
65
  :'public key algorithm name' => self.class::NAME,
66
66
  :'public key blob' => publickey_blob
67
67
  }
68
- signature_blob = SignatureBlob.encode signature_blob_h, logger: logger
68
+ signature_blob = SignatureBlob.new(logger: logger).encode signature_blob_h
69
69
  publickey.sign signature_blob
70
70
  end
71
71
  end
@@ -9,10 +9,8 @@ module HrrRbSsh
9
9
  class Method
10
10
  class Publickey
11
11
  class Algorithm
12
- module SignatureBlob
13
- class << self
14
- include Codable
15
- end
12
+ class SignatureBlob
13
+ include Codable
16
14
  DEFINITION = [
17
15
  [DataType::String, :'session identifier'],
18
16
  [DataType::Byte, :'message number'],
@@ -47,7 +47,7 @@ module HrrRbSsh
47
47
  :'public key algorithm name from the request' => public_key_algorithm_name,
48
48
  :'public key blob from the request' => public_key_blob,
49
49
  }
50
- payload = Message::SSH_MSG_USERAUTH_PK_OK.encode message, logger: logger
50
+ payload = Message::SSH_MSG_USERAUTH_PK_OK.new(logger: logger).encode message
51
51
  end
52
52
 
53
53
  def request_authentication username, service_name
@@ -75,7 +75,7 @@ module HrrRbSsh
75
75
  :'public key algorithm name' => public_key_algorithm_name,
76
76
  :'public key blob' => public_key_blob,
77
77
  }
78
- payload = Message::SSH_MSG_USERAUTH_REQUEST.encode message, logger: logger
78
+ payload = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).encode message
79
79
  @transport.send payload
80
80
  end
81
81
 
@@ -93,7 +93,7 @@ module HrrRbSsh
93
93
  :'public key blob' => public_key_blob,
94
94
  :'signature' => signature,
95
95
  }
96
- payload = Message::SSH_MSG_USERAUTH_REQUEST.encode message, logger: logger
96
+ payload = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).encode message
97
97
  @transport.send payload
98
98
  end
99
99
  end
@@ -87,7 +87,7 @@ module HrrRbSsh
87
87
  payload = @transport.receive
88
88
  case payload[0,1].unpack("C")[0]
89
89
  when Message::SSH_MSG_USERAUTH_REQUEST::VALUE
90
- userauth_request_message = Message::SSH_MSG_USERAUTH_REQUEST.decode payload, logger: logger
90
+ userauth_request_message = Message::SSH_MSG_USERAUTH_REQUEST.new(logger: logger).decode payload
91
91
  method_name = userauth_request_message[:'method name']
92
92
  log_info { "authentication method: #{method_name}" }
93
93
  method = Method[method_name].new(@transport, {'session id' => @transport.session_id}.merge(@options), @variables, authentication_methods, logger: logger)
@@ -143,7 +143,7 @@ module HrrRbSsh
143
143
  @closed = false
144
144
  break
145
145
  when Message::SSH_MSG_USERAUTH_FAILURE::VALUE
146
- message = Message::SSH_MSG_USERAUTH_FAILURE.decode payload, logger: logger
146
+ message = Message::SSH_MSG_USERAUTH_FAILURE.new(logger: logger).decode payload
147
147
  partial_success = message[:'partial success']
148
148
  if partial_success
149
149
  log_info { "partially verified" }
@@ -169,7 +169,7 @@ module HrrRbSsh
169
169
  :'authentications that can continue' => authentication_methods,
170
170
  :'partial success' => partial_success,
171
171
  }
172
- payload = Message::SSH_MSG_USERAUTH_FAILURE.encode message, logger: logger
172
+ payload = Message::SSH_MSG_USERAUTH_FAILURE.new(logger: logger).encode message
173
173
  @transport.send payload
174
174
  end
175
175
 
@@ -177,7 +177,7 @@ module HrrRbSsh
177
177
  message = {
178
178
  :'message number' => Message::SSH_MSG_USERAUTH_SUCCESS::VALUE,
179
179
  }
180
- payload = Message::SSH_MSG_USERAUTH_SUCCESS.encode message, logger: logger
180
+ payload = Message::SSH_MSG_USERAUTH_SUCCESS.new(logger: logger).encode message
181
181
  @transport.send payload
182
182
  end
183
183
 
@@ -5,39 +5,34 @@ require 'hrr_rb_ssh/loggable'
5
5
 
6
6
  module HrrRbSsh
7
7
  module Codable
8
- class LoggableClass
9
- include Loggable
8
+ include Loggable
10
9
 
11
- def initialize logger
12
- self.logger = logger
13
- end
10
+ def initialize logger: nil
11
+ self.logger = logger
14
12
  end
15
13
 
16
14
  def common_definition
17
- self::DEFINITION
15
+ self.class::DEFINITION
18
16
  end
19
17
 
20
18
  def conditional_definition message
21
- return [] unless self.const_defined? :CONDITIONAL_DEFINITION
19
+ return [] unless self.class.const_defined? :CONDITIONAL_DEFINITION
22
20
  message.inject([]){ |a, (k,v)|
23
21
  field_name = k
24
22
  field_value = if v.instance_of? ::Proc then v.call else v end
25
- a + (self::CONDITIONAL_DEFINITION.fetch(field_name, {})[field_value] || [])
23
+ a + (self.class::CONDITIONAL_DEFINITION.fetch(field_name, {})[field_value] || [])
26
24
  }
27
25
  end
28
26
 
29
- def encode message, complementary_message={}, logger: nil
30
- loggable_instalce = LoggableClass.new(logger)
31
- loggable_instalce.log_key = self.to_s
32
-
33
- loggable_instalce.log_debug { 'encoding message: ' + message.inspect }
27
+ def encode message, complementary_message={}
28
+ log_debug { 'encoding message: ' + message.inspect }
34
29
  definition = common_definition + conditional_definition(message.merge complementary_message)
35
30
  definition.map{ |data_type, field_name|
36
31
  begin
37
32
  field_value = if message[field_name].instance_of? ::Proc then message[field_name].call else message[field_name] end
38
33
  data_type.encode field_value
39
34
  rescue => e
40
- loggable_instalce.log_debug { "'field_name', 'field_value': #{field_name.inspect}, #{field_value.inspect}" }
35
+ log_debug { "'field_name', 'field_value': #{field_name.inspect}, #{field_value.inspect}" }
41
36
  raise e
42
37
  end
43
38
  }.join
@@ -63,16 +58,13 @@ module HrrRbSsh
63
58
  end
64
59
  end
65
60
 
66
- def decode payload, complementary_message={}, logger: nil
67
- loggable_instalce = LoggableClass.new(logger)
68
- loggable_instalce.log_key = self.to_s
69
-
61
+ def decode payload, complementary_message={}
70
62
  payload_io = StringIO.new payload
71
63
  decoded_message = decode_recursively(payload_io).inject(Hash.new){ |h, (k, v)| h.update({k => v}) }
72
64
  if complementary_message.any?
73
65
  decoded_message.merge! decode_recursively(payload_io, complementary_message.to_a).inject(Hash.new){ |h, (k, v)| h.update({k => v}) }
74
66
  end
75
- loggable_instalce.log_debug { 'decoded message: ' + decoded_message.inspect }
67
+ log_debug { 'decoded message: ' + decoded_message.inspect }
76
68
  decoded_message
77
69
  end
78
70
  end
@@ -405,7 +405,7 @@ module HrrRbSsh
405
405
  :'message number' => Message::SSH_MSG_CHANNEL_SUCCESS::VALUE,
406
406
  :'recipient channel' => @remote_channel,
407
407
  }
408
- payload = Message::SSH_MSG_CHANNEL_SUCCESS.encode message, logger: logger
408
+ payload = Message::SSH_MSG_CHANNEL_SUCCESS.new(logger: logger).encode message
409
409
  @connection.send payload
410
410
  end
411
411
 
@@ -414,7 +414,7 @@ module HrrRbSsh
414
414
  :'message number' => Message::SSH_MSG_CHANNEL_FAILURE::VALUE,
415
415
  :'recipient channel' => @remote_channel,
416
416
  }
417
- payload = Message::SSH_MSG_CHANNEL_FAILURE.encode message, logger: logger
417
+ payload = Message::SSH_MSG_CHANNEL_FAILURE.new(logger: logger).encode message
418
418
  @connection.send payload
419
419
  end
420
420
 
@@ -424,7 +424,7 @@ module HrrRbSsh
424
424
  :'recipient channel' => @remote_channel,
425
425
  :'bytes to add' => INITIAL_WINDOW_SIZE,
426
426
  }
427
- payload = Message::SSH_MSG_CHANNEL_WINDOW_ADJUST.encode message, logger: logger
427
+ payload = Message::SSH_MSG_CHANNEL_WINDOW_ADJUST.new(logger: logger).encode message
428
428
  @connection.send payload
429
429
  end
430
430
 
@@ -434,7 +434,7 @@ module HrrRbSsh
434
434
  :'recipient channel' => @remote_channel,
435
435
  :'data' => data,
436
436
  }
437
- payload = Message::SSH_MSG_CHANNEL_DATA.encode message, logger: logger
437
+ payload = Message::SSH_MSG_CHANNEL_DATA.new(logger: logger).encode message
438
438
  @connection.send payload
439
439
  end
440
440
 
@@ -445,7 +445,7 @@ module HrrRbSsh
445
445
  :'data type code' => code,
446
446
  :'data' => data,
447
447
  }
448
- payload = Message::SSH_MSG_CHANNEL_EXTENDED_DATA.encode message, logger: logger
448
+ payload = Message::SSH_MSG_CHANNEL_EXTENDED_DATA.new(logger: logger).encode message
449
449
  @connection.send payload
450
450
  end
451
451
 
@@ -462,7 +462,7 @@ module HrrRbSsh
462
462
  :'terminal height, pixels' => term_height_pixel,
463
463
  :'encoded terminal modes' => encoded_term_modes,
464
464
  }
465
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
465
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
466
466
  @connection.send payload
467
467
  end
468
468
 
@@ -475,7 +475,7 @@ module HrrRbSsh
475
475
  :'variable name' => variable_name,
476
476
  :'variable value' => variable_value,
477
477
  }
478
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
478
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
479
479
  @connection.send payload
480
480
  end
481
481
 
@@ -486,7 +486,7 @@ module HrrRbSsh
486
486
  :'request type' => "shell",
487
487
  :'want reply' => false,
488
488
  }
489
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
489
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
490
490
  @connection.send payload
491
491
  end
492
492
 
@@ -498,7 +498,7 @@ module HrrRbSsh
498
498
  :'want reply' => false,
499
499
  :'command' => command,
500
500
  }
501
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
501
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
502
502
  @connection.send payload
503
503
  end
504
504
 
@@ -510,7 +510,7 @@ module HrrRbSsh
510
510
  :'want reply' => false,
511
511
  :'subsystem name' => subsystem_name,
512
512
  }
513
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
513
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
514
514
  @connection.send payload
515
515
  end
516
516
 
@@ -525,7 +525,7 @@ module HrrRbSsh
525
525
  :'terminal width, pixels' => term_width_pixel,
526
526
  :'terminal height, pixels' => term_height_pixel,
527
527
  }
528
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
528
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
529
529
  @connection.send payload
530
530
  end
531
531
 
@@ -537,7 +537,7 @@ module HrrRbSsh
537
537
  :'want reply' => false,
538
538
  :'signal name' => signal_name,
539
539
  }
540
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
540
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
541
541
  @connection.send payload
542
542
  end
543
543
 
@@ -549,7 +549,7 @@ module HrrRbSsh
549
549
  :'want reply' => false,
550
550
  :'exit status' => exitstatus,
551
551
  }
552
- payload = Message::SSH_MSG_CHANNEL_REQUEST.encode message, logger: logger
552
+ payload = Message::SSH_MSG_CHANNEL_REQUEST.new(logger: logger).encode message
553
553
  @connection.send payload
554
554
  end
555
555
 
@@ -558,7 +558,7 @@ module HrrRbSsh
558
558
  :'message number' => Message::SSH_MSG_CHANNEL_EOF::VALUE,
559
559
  :'recipient channel' => @remote_channel,
560
560
  }
561
- payload = Message::SSH_MSG_CHANNEL_EOF.encode message, logger: logger
561
+ payload = Message::SSH_MSG_CHANNEL_EOF.new(logger: logger).encode message
562
562
  @connection.send payload
563
563
  end
564
564
 
@@ -567,7 +567,7 @@ module HrrRbSsh
567
567
  :'message number' => Message::SSH_MSG_CHANNEL_CLOSE::VALUE,
568
568
  :'recipient channel' => @remote_channel,
569
569
  }
570
- payload = Message::SSH_MSG_CHANNEL_CLOSE.encode message, logger: logger
570
+ payload = Message::SSH_MSG_CHANNEL_CLOSE.new(logger: logger).encode message
571
571
  @connection.send payload
572
572
  end
573
573
  end