summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-08-29 13:22:58 -0500
committerSamuel Giddins <segiddins@segiddins.me>2016-08-29 15:14:05 -0500
commit0e24388a0065b15fc0ebc2bf8ae94a9b1de0114f (patch)
treeb219a94e3c5ed430160b32bb82fd01d57b5b6ae8
parent7a955ba5d763baed9106e07baa61f13d26628208 (diff)
downloadbundler-seg-fix-1-8.tar.gz
[GemInstaller] Support base64 digests on ruby 1.8.7seg-fix-1-8
-rw-r--r--lib/bundler/rubygems_gem_installer.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/bundler/rubygems_gem_installer.rb b/lib/bundler/rubygems_gem_installer.rb
index 0aa9fd91d6..28ad988b94 100644
--- a/lib/bundler/rubygems_gem_installer.rb
+++ b/lib/bundler/rubygems_gem_installer.rb
@@ -28,7 +28,7 @@ module Bundler
digest = Digest::SHA256.new
digest << io.read(16_384) until io.eof?
io.rewind
- digest.send(checksum_type(checksum))
+ send(checksum_type(checksum), digest)
end
unless digest == checksum
raise SecurityError,
@@ -48,5 +48,17 @@ module Bundler
else raise InstallError, "The given checksum for #{spec.full_name} (#{checksum.inspect}) is not a valid SHA256 hexdigest nor base64digest"
end
end
+
+ def hexdigest!(digest)
+ digest.hexdigest!
+ end
+
+ def base64digest!(digest)
+ if digest.respond_to?(:base64digest!)
+ digest.base64digest!
+ else
+ [digest.digest!].pack("m0")
+ end
+ end
end
end