Parent

Included Modules

Class Index [+]

Quicksearch

Net::SSH::Transport::Kex::DiffieHellmanGroup1SHA1

A key-exchange service implementing the “diffie-hellman-group1-sha1” key-exchange algorithm.

Constants

P_s

The value of ‘P’, as a string, in hexadecimal

P_r

The radix in which P_s represents the value of P

G

The group constant

Attributes

p[R]
g[R]
digester[R]
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 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

Public Instance Methods

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/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

Private Instance Methods

build_signature_buffer(result) click to toggle source

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
generate_key_fingerprint(key) click to toggle source
     # 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
get_g() click to toggle source
    # File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 84
84:       def get_g
85:         G
86:       end
get_message_types() click to toggle source

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
get_p() click to toggle source
    # File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 80
80:       def get_p
81:         OpenSSL::BN.new(P_s, P_r)
82:       end
get_parameters() click to toggle source

Returns the DH key parameters for the current connection.

    # File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 89
89:       def get_parameters
90:         [p, g]
91:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.