diff --git a/src/envelope_crypto/envelope_crypto.py b/src/envelope_crypto/envelope_crypto.py index ea76224..521c69f 100644 --- a/src/envelope_crypto/envelope_crypto.py +++ b/src/envelope_crypto/envelope_crypto.py @@ -681,7 +681,9 @@ def _fingerprint_normalize(value: Any) -> Any: if isinstance(value, (set, frozenset)): members = [_fingerprint_normalize(item) for item in value] members.sort(key=lambda item: json.dumps(item, sort_keys=True, default=_fingerprint_default)) - return {"\x00set:members": members} + # keep the concrete type in the marker so a set value and a frozenset value with the + # same members stay distinct; the \x00 prefix keeps it uncollidable with a user str key + return {f"\x00{type(value).__name__}:members": members} if isinstance(value, (list, tuple)): return [_fingerprint_normalize(item) for item in value] return value