Class: TaintedLove::Replacer::ReplaceDigest

Inherits:
Base
  • Object
show all
Defined in:
lib/tainted_love/replacer/replace_digest.rb

Instance Method Summary collapse

Methods inherited from Base

replacers

Instance Method Details

#create_module(digest_class) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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!Object



10
11
12
13
14
15
16
17
# 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?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/tainted_love/replacer/replace_digest.rb', line 6

def should_replace?
  Object.const_defined?('Digest')
end