class Stribog::Stage::Compression

Compression

@author WildDima

Public Instance Methods

call() click to toggle source
# File lib/stribog/stage/compression.rb, line 10
def call
  set_params
  compression
end

Private Instance Methods

compression() click to toggle source
# File lib/stribog/stage/compression.rb, line 36
def compression
  self.current_vector = message_head || message_vector
  return return_params if current_vector.size * 8 < HASH_LENGTH
  transformation
  compression
end
return_params() click to toggle source
# File lib/stribog/stage/compression.rb, line 26
def return_params
  {
    n: n,
    sum: sum,
    digest_length: digest_length,
    hash_vector: hash_vector,
    message_vector: current_vector
  }
end
set_params() click to toggle source
# File lib/stribog/stage/compression.rb, line 17
def set_params
  @n = prev_stage_call[:n]
  @sum = prev_stage_call[:sum]
  @digest_length = prev_stage_call[:digest_length]
  @hash_vector = prev_stage_call[:hash_vector]
  @message_vector = prev_stage_call[:message_vector]
  @message_head = nil
end
transformation() click to toggle source
# File lib/stribog/stage/compression.rb, line 43
def transformation
  self.hash_vector = compress(n: n,
                              message: slice_message_tail(current_vector),
                              hash_vector: hash_vector)
  self.sum = addition_in_ring(sum.to_dec, current_vector.to_dec)
  self.n = addition_in_ring(n.to_dec, slice_message_tail(current_vector).size * 8)
  self.message_head = slice_message_head(current_vector)
end