Class: Rack::Auth::Digest::Nonce
- Inherits:
-
Object
- Object
- Rack::Auth::Digest::Nonce
- Defined in:
- lib/rack/auth/digest/nonce.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
-
.private_key ⇒ Object
Returns the value of attribute private_key.
-
.time_limit ⇒ Object
Returns the value of attribute time_limit.
Class Method Summary collapse
Instance Method Summary collapse
- #digest ⇒ Object
- #fresh? ⇒ Boolean
-
#initialize(timestamp = Time.now, given_digest = nil) ⇒ Nonce
constructor
A new instance of Nonce.
- #stale? ⇒ Boolean
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(timestamp = Time.now, given_digest = nil) ⇒ Nonce
Returns a new instance of Nonce.
24 25 26 |
# File 'lib/rack/auth/digest/nonce.rb', line 24 def initialize( = Time.now, given_digest = nil) @timestamp, @given_digest = .to_i, given_digest end |
Class Attribute Details
.private_key ⇒ Object
Returns the value of attribute private_key.
17 18 19 |
# File 'lib/rack/auth/digest/nonce.rb', line 17 def private_key @private_key end |
.time_limit ⇒ Object
Returns the value of attribute time_limit.
17 18 19 |
# File 'lib/rack/auth/digest/nonce.rb', line 17 def time_limit @time_limit end |
Class Method Details
.parse(string) ⇒ Object
20 21 22 |
# File 'lib/rack/auth/digest/nonce.rb', line 20 def self.parse(string) new(*string.unpack("m*").first.split(' ', 2)) end |
Instance Method Details
#digest ⇒ Object
32 33 34 |
# File 'lib/rack/auth/digest/nonce.rb', line 32 def digest ::Digest::MD5.hexdigest([ @timestamp, self.class.private_key ] * ':') end |
#fresh? ⇒ Boolean
44 45 46 |
# File 'lib/rack/auth/digest/nonce.rb', line 44 def fresh? !stale? end |
#stale? ⇒ Boolean
40 41 42 |
# File 'lib/rack/auth/digest/nonce.rb', line 40 def stale? !self.class.time_limit.nil? && (@timestamp - Time.now.to_i) < self.class.time_limit end |
#to_s ⇒ Object
28 29 30 |
# File 'lib/rack/auth/digest/nonce.rb', line 28 def to_s [([ @timestamp, digest ] * ' ')].pack("m*").strip end |
#valid? ⇒ Boolean
36 37 38 |
# File 'lib/rack/auth/digest/nonce.rb', line 36 def valid? digest == @given_digest end |