class RuboCop::Cop::Cobalt::InsecureHashAlgorithm
Constants
- DEFAULT_ALLOWED
Public Instance Methods
alg_name(val)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 90 def alg_name(val) return :nil if val.nil? return val.to_s.downcase unless val.is_a?(RuboCop::AST::Node) case val.type when :sym, :str val.children.first.to_s.downcase else val.type end end
allowed_hash_functions()
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 86 def allowed_hash_functions @allowed_hash_functions ||= cop_config.fetch('Allowed', DEFAULT_ALLOWED).map(&:downcase) end
default_message()
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 117 def default_message "This hash function is not allowed. Prefer: #{allowed_hash_functions.join(', ')}" end
insecure_algorithm?(val)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 61 def insecure_algorithm?(val) return false if val == :Digest # Don't match "Digest::Digest". case alg_name(val) when *allowed_hash_functions, Symbol false else true end end
just_encoding?(val)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 76 def just_encoding?(val) %i[hexencode bubblebabble].include?(val) end
not_just_encoding?(val)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 72 def not_just_encoding?(val) !just_encoding?(val) end
on_const(const_node)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 102 def on_const(const_node) add_offense(const_node, message: default_message) if insecure_const?(const_node) && !digest_uuid?(const_node) end
on_send(send_node)
click to toggle source
# File lib/rubocop/cop/cobalt/insecure_hash_algorithm.rb, line 106 def on_send(send_node) if uuid_v3?(send_node) && !allowed_hash_functions.include?('md5') add_offense(send_node, message: "uuid_v3 uses MD5, which is not allowed. Prefer: #{allowed_hash_functions.join(', ')}") elsif uuid_v5?(send_node) && !allowed_hash_functions.include?('sha1') add_offense(send_node, message: "uuid_v5 uses SHA1, which is not allowed. Prefer: #{allowed_hash_functions.join(', ')}") elsif openssl_hmac_new?(send_node) && openssl_hmac_new_insecure?(send_node) || insecure_digest?(send_node) || insecure_hash_lookup?(send_node) add_offense(send_node, message: default_message) end end