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

  1. lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb
Parent: Object

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

Methods

public class

  1. new

public instance

  1. exchange_keys

Included modules

  1. Constants
  2. Loggable

Constants

P_s = "FFFFFFFF" "FFFFFFFF" "C90FDAA2" "2168C234" + "C4C6628B" "80DC1CD1" "29024E08" "8A67CC74" + "020BBEA6" "3B139B22" "514A0879" "8E3404DD" + "EF9519B3" "CD3A431B" "302B0A6D" "F25F1437" + "4FE1356D" "6D51C245" "E485B576" "625E7EC6" + "F44C42E9" "A637ED6B" "0BFF5CB6" "F406B7ED" + "EE386BFB" "5A899FA5" "AE9F2411" "7C4B1FE6" + "49286651" "ECE65381" "FFFFFFFF" "FFFFFFFF"   The value of ‘P’, as a string, in hexadecimal
P_r = 16   The radix in which P_s represents the value of P
G = 2   The group constant

Attributes

algorithms [R]
connection [R]
data [R]
dh [R]
digester [R]
g [R]
p [R]

Public class methods

new (algorithms, connection, data)

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.

[show source]
    # File lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb, line 42
42:     def initialize(algorithms, connection, data)
43:       @p = OpenSSL::BN.new(P_s, P_r)
44:       @g = 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 ()

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.

[show source]
    # 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