class Net::SSH::Transport::Kex::Abstract
Abstract class that implement Diffie-Hellman Key Exchange See tools.ietf.org/html/rfc4253#page-21
Attributes
algorithms[R]
connection[R]
data[R]
dh[R]
Public Class Methods
new(algorithms, connection, data)
click to toggle source
Create a new instance of the Diffie-Hellman Key Exchange algorithm. The Diffie-Hellman (DH) key exchange provides a shared secret that cannot be determined by either party alone. The key exchange is combined with a signature with the host key to provide host authentication.
# File lib/net/ssh/transport/kex/abstract.rb, line 27 def initialize(algorithms, connection, data) @algorithms = algorithms @connection = connection @data = data.dup @dh = generate_key @logger = @data.delete(:logger) end
Public Instance Methods
digester()
click to toggle source
# File lib/net/ssh/transport/kex/abstract.rb, line 61 def digester raise NotImplementedError, 'abstract class: digester not implemented' end
exchange_keys()
click to toggle source
Perform the key-exchange for the given session, with the given data. This method will return a hash consisting of the following keys:
-
:session_id
-
:server_key
-
:shared_secret
-
:hashing_algorithm
The caller is expected to be able to understand how to use these deliverables.
# File lib/net/ssh/transport/kex/abstract.rb, line 47 def exchange_keys result = send_kexinit verify_server_key(result[:server_key]) session_id = verify_signature(result) confirm_newkeys { session_id: session_id, server_key: result[:server_key], shared_secret: result[:shared_secret], hashing_algorithm: digester } end