module ShasumDemo
Public Class Methods
get_checksum_for_gem(gem_name, gem_version)
click to toggle source
# File lib/modules/topics/demos/shasum_demo.rb, line 26 def self.get_checksum_for_gem(gem_name, gem_version) puts "\nObtaining actual checksum SHA 256 for #{gem_name} gem version #{gem_version}" raw = RestClient::Request.execute( method: :get, url: "https://rubygems.org/downloads/#{gem_name}-#{gem_version}.gem", raw_response: true) Digest::SHA256.file(raw.file.path).hexdigest end
is_gem?(gem_name, gem_version)
click to toggle source
# File lib/modules/topics/demos/shasum_demo.rb, line 14 def self.is_gem?(gem_name, gem_version) puts "Please wait. Checking that given version exists for gem" response = %x[gem search '^#{gem_name}$' --all] if response != "\n" gem_versions_list = response[response.index('(')+1..response.index(')')-1].split(',').map {|ver| ver.strip } return (gem_versions_list.include? gem_version) ? true : false else puts "\nNo versions of the gem exist" return false end end
run()
click to toggle source
# File lib/modules/topics/demos/shasum_demo.rb, line 5 def self.run puts "\nChoose a Gem from RubyGems to validate its the Checksum of its SHA-256" puts "- Enter name of Gem (i.e. rails): " gem_name = gets.chomp.downcase.strip puts "Enter version of Gem (i.e. 5.1.2): " gem_version = gets.chomp.strip valid_shasum?(gem_name, gem_version) end
valid_shasum?(gem_name, gem_version)
click to toggle source
# File lib/modules/topics/demos/shasum_demo.rb, line 35 def self.valid_shasum?(gem_name, gem_version) is_gem = is_gem?(gem_name, gem_version) return false if not is_gem expected_checksum = get_checksum_for_gem(gem_name, gem_version) puts "Please wait. Downloading gem into subfolder ./temp" %x[mkdir -p temp; cd temp; gem fetch #{gem_name} --version '#{gem_version}';] output = %x[cd temp; shasum -a 256 ./#{gem_name}-#{gem_version}.gem] actual_checksum = output.split[0] # split on space puts "Actual Checksum: #{actual_checksum}" puts "Expected Checksum: #{expected_checksum}" puts "Valid Checksum: #{actual_checksum == expected_checksum}" actual_checksum == expected_checksum end