A key-exchange service implementing the “diffie-hellman-group1-sha1” key-exchange algorithm.
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