Module: Necropsy::EvidenceStore

Included in:
CallGraph
Defined in:
lib/necropsy/graph/evidence_store.rb

Constant Summary collapse

PROJECTIONS =
%i[exact conservative observed].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.normalize_projection(projection) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
13
14
# File 'lib/necropsy/graph/evidence_store.rb', line 9

def self.normalize_projection(projection)
  normalized = projection.to_sym if projection.respond_to?(:to_sym)
  return normalized if PROJECTIONS.include?(normalized)

  raise ArgumentError, "projection must be one of: #{PROJECTIONS.join(', ')}"
end

Instance Method Details

#evidence_collisionsObject



24
25
26
27
28
29
30
31
32
# File 'lib/necropsy/graph/evidence_store.rb', line 24

def evidence_collisions
  @evidence_collision_payloads.keys.sort.map do |evidence_id|
    {
      'evidence_id' => evidence_id,
      'payload_sha256s' => @evidence_collision_payloads.fetch(evidence_id).to_a.sort,
      'domains' => @evidence_domains.fetch(evidence_id, Set.new).map(&:to_s).sort
    }
  end.freeze
end

#evidence_record(evidence_id) ⇒ Object



20
21
22
# File 'lib/necropsy/graph/evidence_store.rb', line 20

def evidence_record(evidence_id)
  @evidence_records_by_id[evidence_id.to_s]
end

#evidence_recordsObject



16
17
18
# File 'lib/necropsy/graph/evidence_store.rb', line 16

def evidence_records
  @evidence_records_by_id.values.sort_by(&:evidence_id).freeze
end