class Stribog::Stage::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