summaryrefslogtreecommitdiff
path: root/lib/rubygems/digest/digest_adapter.rb
blob: a62c5300c8a382d3375f555b6880ec3e83a7efc0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

module Gem

  # There is an incompatibility between the way Ruby 1.8.5 and 1.8.6
  # handles digests. This DigestAdapter will take a pre-1.8.6 digest
  # and adapt it to the 1.8.6 API.
  #
  # Note that only the digest and hexdigest methods are adapted,
  # since these are the only functions used by Gems.
  #
  class DigestAdapter

    # Initialize a digest adapter.
    def initialize(digest_class)
      @digest_class = digest_class
    end

    # Return a new digester.  Since we are only implementing the stateless
    # methods, we will return ourself as the instance.
    def new
      self
    end

    # Return the digest of +string+ as a hex string.
    def hexdigest(string)
      @digest_class.new(string).hexdigest
    end

    # Return the digest of +string+ as a binary string.
    def digest(string)
      @digest_class.new(string).digest
    end
  end
end