lib/rack/auth/digest/nonce.rb in rack-2.2.10 vs lib/rack/auth/digest/nonce.rb in rack-3.0.0.beta1

- old
+ new

@@ -1,53 +2 @@ -# frozen_string_literal: true - -require 'digest/md5' - -module Rack - module Auth - module Digest - # 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 Nonce - - class << self - attr_accessor :private_key, :time_limit - end - - def self.parse(string) - new(*string.unpack("m").first.split(' ', 2)) - end - - def initialize(timestamp = Time.now, given_digest = nil) - @timestamp, @given_digest = timestamp.to_i, given_digest - end - - def to_s - ["#{@timestamp} #{digest}"].pack("m").strip - end - - def digest - ::Digest::MD5.hexdigest("#{@timestamp}:#{self.class.private_key}") - end - - def valid? - digest == @given_digest - end - - def stale? - !self.class.time_limit.nil? && (Time.now.to_i - @timestamp) > self.class.time_limit - end - - def fresh? - !stale? - end - - end - end - end -end +require_relative '../digest'