From fbd7c566f40d3a2a9272ee93fac30ee36f8ef319 Mon Sep 17 00:00:00 2001 From: Willi Ballenthin Date: Fri, 20 Jan 2023 15:19:48 +0100 Subject: [PATCH] cache: add more helpers to enable better testing --- capa/rules/cache.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/capa/rules/cache.py b/capa/rules/cache.py index ed20ec66..7d4a49a9 100644 --- a/capa/rules/cache.py +++ b/capa/rules/cache.py @@ -85,15 +85,22 @@ class RuleCache: return cache -def cache_ruleset(ruleset: capa.rules.RuleSet): +def get_ruleset_content(ruleset: capa.rules.RuleSet) -> List[bytes]: rule_contents = [] for rule in ruleset.rules.values(): if rule.is_subscope_rule(): continue - with open(rule.meta["capa/path"], "rb") as f: - rule_contents.append(f.read()) + rule_contents.append(rule.definition.encode("utf-8")) + return rule_contents - id = compute_cache_identifier(rule_contents) + +def compute_ruleset_cache_identifier(ruleset: capa.rules.RuleSet) -> CacheIdentifier: + rule_contents = get_ruleset_content(ruleset) + return compute_cache_identifier(rule_contents) + + +def cache_ruleset(ruleset: capa.rules.RuleSet): + id = compute_ruleset_cache_identifier(ruleset) path = get_default_cache_path(id) if os.path.exists(path): logger.debug("rule set already cached to %s", path)