# File lib/uuidtools.rb, line 668
    def self.create_from_hash(hash_class, namespace, name)
      if hash_class == Digest::MD5
        version = 3
      elsif hash_class == Digest::SHA1
        version = 5
      else
        raise ArgumentError,
          "Expected Digest::SHA1 or Digest::MD5, got #{hash_class.name}."
      end
      hash = hash_class.new
      hash.update(namespace.raw)
      hash.update(name)
      hash_string = hash.to_s[0..31]
      new_uuid = self.parse("#{hash_string[0..7]}-#{hash_string[8..11]}-" +
        "#{hash_string[12..15]}-#{hash_string[16..19]}-#{hash_string[20..31]}")

      new_uuid.time_hi_and_version &= 0x0FFF
      new_uuid.time_hi_and_version |= (version << 12)
      new_uuid.clock_seq_hi_and_reserved &= 0x3F
      new_uuid.clock_seq_hi_and_reserved |= 0x80
      return new_uuid
    end