Object
A key-exchange service implementing the “diffie-hellman-group1-sha1” key-exchange algorithm.
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 42: def initialize(algorithms, connection, data) 43: @p = get_p 44: @g = get_g 45: 46: @digester = OpenSSL::Digest::SHA1 47: @algorithms = algorithms 48: @connection = connection 49: 50: @data = data.dup 51: @dh = generate_key 52: @logger = @data.delete(:logger) 53: 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 66: def exchange_keys 67: result = send_kexinit 68: verify_server_key(result[:server_key]) 69: session_id = verify_signature(result) 70: confirm_newkeys 71: 72: return { :session_id => session_id, 73: :server_key => result[:server_key], 74: :shared_secret => result[:shared_secret], 75: :hashing_algorithm => digester } 76: end
Build the signature buffer to use when verifying a signature from the server.
# File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 100 100: def build_signature_buffer(result) 101: response = Net::SSH::Buffer.new 102: response.write_string data[:client_version_string], 103: data[:server_version_string], 104: data[:client_algorithm_packet], 105: data[:server_algorithm_packet], 106: result[:key_blob] 107: response.write_bignum dh.pub_key, 108: result[:server_dh_pubkey], 109: result[:shared_secret] 110: response 111: end
# File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 178 178: def generate_key_fingerprint(key) 179: blob = Net::SSH::Buffer.from(:key, key).to_s 180: fingerprint = OpenSSL::Digest::MD5.hexdigest(blob).scan(/../).join(":") 181: 182: [blob, fingerprint] 183: rescue ::Exception => e 184: [nil, "(could not generate fingerprint: #{e.message})"] 185: end
# File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 84 84: def get_g 85: G 86: end
Returns the INIT/REPLY constants used by this algorithm.
# File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 94 94: def get_message_types 95: [KEXDH_INIT, KEXDH_REPLY] 96: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.