From 15299a770f0fafc0a12ceda9eb0d1242fa1063df Mon Sep 17 00:00:00 2001 From: Phillipp Schoppmann Date: Thu, 2 May 2024 22:04:59 +0000 Subject: [PATCH] Only check prefixes are suffixes of last level if that level is > 0 --- poc/vdaf_poplar1.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/poc/vdaf_poplar1.py b/poc/vdaf_poplar1.py index 5c1bd48a..ebeaab83 100644 --- a/poc/vdaf_poplar1.py +++ b/poc/vdaf_poplar1.py @@ -171,18 +171,20 @@ def is_valid(Poplar1, agg_param, previous_agg_params): (level, prefixes) = agg_param (last_level, last_prefixes) = previous_agg_params[-1] # The empty prefix 0 is always there. - last_prefixes_set = set(list(last_prefixes) + [0]) + last_prefixes_set = set(list(last_prefixes)) # Check that level increased. if level <= last_level: return False - # Check that prefixes are suffixes of the last level's prefixes. - for (i, prefix) in enumerate(prefixes): - last_prefix = Poplar1.get_ancestor(prefix, level, last_level) - if last_prefix not in last_prefixes_set: - # Current prefix not a suffix of last level's prefixes. - return False + # Check that prefixes are suffixes of the last level's prefixes, + # unless the last level was 0 (and therefore had no prefixes). + if last_level > 0: + for (i, prefix) in enumerate(prefixes): + last_prefix = Poplar1.get_ancestor(prefix, level, last_level) + if last_prefix not in last_prefixes_set: + # Current prefix not a suffix of last level's prefixes. + return False return True @classmethod