Method: LibGems::Validator#verify_gem

Defined in:
lib/libgems/validator.rb

#verify_gem(gem_data) ⇒ Object

Given a gem file’s contents, validates against its own MD5 checksum

gem_data
String

Contents of the gem file



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/libgems/validator.rb', line 30

def verify_gem(gem_data)
  raise LibGems::VerificationError, 'empty gem file' if gem_data.size == 0

  unless gem_data =~ /MD5SUM/ then
    return # Don't worry about it...this sucks.  Need to fix MD5 stuff for
    # new format
    # FIXME
  end

  sum_data = gem_data.gsub(/MD5SUM = "([a-z0-9]+)"/,
                           "MD5SUM = \"#{"F" * 32}\"")

  unless Digest::MD5.hexdigest(sum_data) == $1.to_s then
    raise LibGems::VerificationError, 'invalid checksum for gem file'
  end
end