A key-exchange service implementing the "diffie-hellman-group1-sha1" key-exchange algorithm.
The group constant
The radix in which P_s represents the value of P
The value of 'P', as a string, in hexadecimal
Create a new instance of the DiffieHellmanGroup1SHA1 algorithm. The data is a Hash of symbols representing information required by this algorithm, which was acquired during earlier processing.
# File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 42 def initialize(algorithms, connection, data) @p = get_p @g = get_g @digester = OpenSSL::Digest::SHA1 @algorithms = algorithms @connection = connection @data = data.dup @dh = generate_key @logger = @data.delete(:logger) end
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/diffie_hellman_group1_sha1.rb, line 66 def exchange_keys result = send_kexinit verify_server_key(result[:server_key]) session_id = verify_signature(result) confirm_newkeys return { :session_id => session_id, :server_key => result[:server_key], :shared_secret => result[:shared_secret], :hashing_algorithm => digester } end