Module: Net::SSH::Transport::KeyExpander
- Defined in:
- lib/net/ssh/transport/key_expander.rb
Class Method Summary collapse
-
.expand_key(bytes, start, options = {}) ⇒ Object
Generate a key value in accordance with the SSH2 specification.
Class Method Details
.expand_key(bytes, start, options = {}) ⇒ Object
Generate a key value in accordance with the SSH2 specification. (RFC4253 7.2. “Output from Key Exchange”)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/net/ssh/transport/key_expander.rb', line 7 def self.(bytes, start, = {}) if bytes == 0 return "" end k = start[0, bytes] return k if k.length >= bytes digester = [:digester] or raise 'No digester supplied' shared = [:shared] or raise 'No shared secret supplied' hash = [:hash] or raise 'No hash supplied' while k.length < bytes step = digester.digest(shared + hash + k) bytes_needed = bytes - k.length k << step[0, bytes_needed] end return k end |