class TaintedLove::Replacer::ReplaceDigest

Public Instance Methods

create_module(digest_class) click to toggle source
# File lib/tainted_love/replacer/replace_digest.rb, line 19
      def create_module(digest_class)
        module_code = %{
        Module.new do
          def hexdigest(value)
            digest = super

            digest.instance_eval do
              def tainted_love_origin
                #{digest_class}
              end
            end

            digest
          end
        end
}
        eval(module_code)
      end
replace!() click to toggle source
# File lib/tainted_love/replacer/replace_digest.rb, line 10
def replace!
  digests = [:MD5, :SHA256, :SHA512, :SHA2, :SHA384, :SHA1]

  digests.each do |digest|
    mod = Digest.const_get(digest)
    mod.extend(create_module(mod)) if Object.const_defined?(mod.to_s)
  end
end
should_replace?() click to toggle source
# File lib/tainted_love/replacer/replace_digest.rb, line 6
def should_replace?
  Object.const_defined?('Digest')
end