Class: Rack::Auth::Digest::Nonce

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/auth/digest.rb

Overview

Rack::Auth::Digest::Nonce is the default nonce generator for the Rack::Auth::Digest::MD5 authentication handler.

private_key needs to set to a constant string.

time_limit can be optionally set to an integer (number of seconds), to limit the validity of the generated nonces.

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(timestamp = Time.now, given_digest = nil) ⇒ Nonce

Returns a new instance of Nonce.



31
32
33
# File 'lib/rack/auth/digest.rb', line 31

def initialize(timestamp = Time.now, given_digest = nil)
  @timestamp, @given_digest = timestamp.to_i, given_digest
end

Class Attribute Details

.private_keyObject

Returns the value of attribute private_key.



24
25
26
# File 'lib/rack/auth/digest.rb', line 24

def private_key
  @private_key
end

.time_limitObject

Returns the value of attribute time_limit.



24
25
26
# File 'lib/rack/auth/digest.rb', line 24

def time_limit
  @time_limit
end

Class Method Details

.parse(string) ⇒ Object



27
28
29
# File 'lib/rack/auth/digest.rb', line 27

def self.parse(string)
  new(*Base64.decode64(string).split(' ', 2))
end

Instance Method Details

#digestObject



39
40
41
# File 'lib/rack/auth/digest.rb', line 39

def digest
  ::Digest::MD5.hexdigest("#{@timestamp}:#{self.class.private_key}")
end

#fresh?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/rack/auth/digest.rb', line 51

def fresh?
  !stale?
end

#stale?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/rack/auth/digest.rb', line 47

def stale?
  !self.class.time_limit.nil? && (Time.now.to_i - @timestamp) > self.class.time_limit
end

#to_sObject



35
36
37
# File 'lib/rack/auth/digest.rb', line 35

def to_s
  Base64.encode64("#{@timestamp} #{digest}").strip
end

#valid?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/rack/auth/digest.rb', line 43

def valid?
  digest == @given_digest
end