class Stribog::Stage::Base

Base

@author WildDima

Attributes

current_vector[RW]
digest_length[RW]
hash_vector[RW]
message_head[RW]
message_vector[RW]
n[RW]
prev_stage[R]
sum[RW]
vector[R]

Public Class Methods

new(prev_stage, vector = Stribog.vector) click to toggle source
# File lib/stribog/stage/base.rb, line 20
def initialize(prev_stage, vector = Stribog.vector)
  @prev_stage = prev_stage
  @vector = vector
end

Public Instance Methods

call() click to toggle source
# File lib/stribog/stage/base.rb, line 25
def call
  raise NotImplementedYet
end

Protected Instance Methods

addition_in_ring(first, second, ring = 2**HASH_LENGTH) click to toggle source
# File lib/stribog/stage/base.rb, line 57
def addition_in_ring(first, second, ring = 2**HASH_LENGTH)
  vector.convert((first + second) % ring)
end
compress(message:, hash_vector:, n: empty_vector) click to toggle source

Compression method

# File lib/stribog/stage/base.rb, line 53
def compress(message:, hash_vector:, n: empty_vector)
  CompressionFunc.new(n, message, hash_vector).call
end
empty_vector(size: 64) click to toggle source
# File lib/stribog/stage/base.rb, line 39
def empty_vector(size: 64)
  field_vector(value: 0, size: size)
end
field_vector(value:, size: 64) click to toggle source
# File lib/stribog/stage/base.rb, line 35
def field_vector(value:, size: 64)
  vector.new(Array.new(size, value))
end
prev_stage_call() click to toggle source
# File lib/stribog/stage/base.rb, line 31
def prev_stage_call
  @prev_stage_call ||= prev_stage.call
end
slice_message_head(message_vector) click to toggle source
# File lib/stribog/stage/base.rb, line 43
def slice_message_head(message_vector)
  vector.new(message_vector.vector[0...-HASH_LENGTH / 8])
end
slice_message_tail(message_vector) click to toggle source

Method, which slices head of tail

# File lib/stribog/stage/base.rb, line 48
def slice_message_tail(message_vector)
  vector.new(message_vector.vector[-HASH_LENGTH / 8..-1])
end