Class: PBKDF2

Inherits:
Object
  • Object
show all
Defined in:
lib/shortener/server/pbkdf2.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) {|_self| ... } ⇒ PBKDF2

Returns a new instance of PBKDF2.

Yields:

  • (_self)

Yield Parameters:

  • _self (PBKDF2)

    the object that the method was called on

Raises:

  • (ArgumentError)


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/shortener/server/pbkdf2.rb', line 31

def initialize(opts={})
  # override with options
  opts.each_key do |k|
    if self.respond_to?("#{k}=")
      self.send("#{k}=", opts[k])
    else
      raise ArgumentError, "Argument '#{k}' is not allowed"
    end
  end
  
  yield self if block_given?

  # set this to the default if nothing was given
  @key_length ||= 20
  
  # make sure the relevant things got set
  raise ArgumentError, "password not set" if @password.nil?
  raise ArgumentError, "salt not set" if @salt.nil?
  raise ArgumentError, "iterations not set" if @iterations.nil?
end

Instance Attribute Details

#iterationsObject

Returns the value of attribute iterations.



51
52
53
# File 'lib/shortener/server/pbkdf2.rb', line 51

def iterations
  @iterations
end

#key_lengthObject

Returns the value of attribute key_length.



51
52
53
# File 'lib/shortener/server/pbkdf2.rb', line 51

def key_length
  @key_length
end

#passwordObject

Returns the value of attribute password.



51
52
53
# File 'lib/shortener/server/pbkdf2.rb', line 51

def password
  @password
end

#saltObject

Returns the value of attribute salt.



51
52
53
# File 'lib/shortener/server/pbkdf2.rb', line 51

def salt
  @salt
end

Instance Method Details

#benchmark(iters = 400000) ⇒ Object

return number of milliseconds it takes to complete one iteration



88
89
90
91
92
93
94
95
96
# File 'lib/shortener/server/pbkdf2.rb', line 88

def benchmark(iters = 400000)
  iter_orig = @iterations
  @iterations=iters
  start = Time.now
  calculate!
  time = Time.now - start
  @iterations = iter_orig
  return (time/iters)
end

#hex_stringObject



83
84
85
# File 'lib/shortener/server/pbkdf2.rb', line 83

def hex_string
  bin_string.unpack("H*").first
end

#valueObject Also known as: bin_string



76
77
78
79
# File 'lib/shortener/server/pbkdf2.rb', line 76

def value
  calculate! if @value.nil?
  @value
end