class Stribog::CreateHash

CreateHash

Class, which creates digests. @author WildDima

Attributes

digest_length[R]

Length of digest. Should be equal to 256 or 512.

@api public @example

digest.digest_length

@return [Fixnum] binary representation of digest

message[R]

Original message

@api public @example

hash.message

@return [String] contains original message

message_vector[R]

Contain message as instance of BinaryVector

@api public @example

digest.message_vector

@return [BinaryVector] binary representation of message

vector[R]

Public Class Methods

new(message, transformation = :from_hex, vector = Stribog.vector) click to toggle source
# File lib/stribog/create_hash.rb, line 32
def initialize(message, transformation = :from_hex, vector = Stribog.vector)
  @message = message
  @transformation = transformation
  @vector = vector
end

Public Instance Methods

call(digest_length = HASH_LENGTH) click to toggle source

Create digest of {#message}. Default equal to 512.

@example

Stribog::CreateHash.new('ruby').call(256)
Stribog::CreateHash.new('ruby').call(512)

@author WildDima

# File lib/stribog/create_hash.rb, line 44
def call(digest_length = HASH_LENGTH)
  @digest_length = digest_length
  return_hash(
    Stage::Final.new(
      Stage::Compression.new(
        Stage::Initial.new(self)
      )
    ).call
  )
end

Private Instance Methods

create_digest(vector) click to toggle source

Create new instance of Digest

# File lib/stribog/create_hash.rb, line 75
def create_digest(vector)
  digest.new(vector: vector)
end
digest() click to toggle source
# File lib/stribog/create_hash.rb, line 79
def digest
  @digest ||= Digest
end
return_hash(final_vector) click to toggle source

Method, which return digest, dependent on them length

# File lib/stribog/create_hash.rb, line 58
def return_hash(final_vector)
  case digest_length
  when 512
    create_digest(final_vector)
  when 256
    create_digest(vector_from_array(final_vector[0..31]))
  else
    raise ArgumentError,
          "digest length must be equal to 256 or 512, not #{digest_length}"
  end
end
vector_from_array(v) click to toggle source
# File lib/stribog/create_hash.rb, line 70
def vector_from_array(v)
  vector.new(v)
end