class Tor257::Key

Public Class Methods

new(s) click to toggle source
Calls superclass method
# File lib/tor257/core.rb, line 28
def initialize s
  super(s)
  raise ArgumentError, "Key must be at least 32 bits strong" if size() < 4
end

Public Instance Methods

subkey(i) click to toggle source
# File lib/tor257/core.rb, line 33
def subkey(i)
  # return self[i % self.size].bytes
  @koff = nil
  _subkey(i % self.size)
end

Private Instance Methods

_subkey(i) click to toggle source
# File lib/tor257/core.rb, line 40
def _subkey(i)
  raise ArgumentError unless i.is_a? Integer
  koff_update
  if i >= self.size
    @koff = nil
    return []
  end
  i += @koff
  return [self.bytes[i % self.size]] + _subkey(i)
  # return self.bytes[i % self.size]
end
koff_update() click to toggle source
# File lib/tor257/core.rb, line 52
def koff_update
  case @koff
  when nil
    @koff = 0
  when 0, 5
    @koff = 2
  when 2
    @koff = 5
  end
end