One device can hold sessions for two servers, and one server can be used by two
people on the same device. A cache keyed only by item identifier hands the second
person the first person's library, and it does so silently, which is the worst
version of that failure.
What this produces
Every key namespaced by the server it came from and by the identity that fetched
it, so that the same identifier under a different session is a different entry.
Signing out removing the entries for that identity rather than leaving them for
whoever signs in next. Signing out itself is built in #114, which
expresses the removal in the keying this issue defines.
A key derivation that does not put a person's name or a server address into a
filename, since a cache directory is readable by anything else on the device that
can read files.
Done when
A test signs in as one identity, caches, signs out, signs in as a second, and
proves nothing from the first is readable. A test proves two servers holding the
same item identifier do not collide. A test proves no key material written to
storage contains a readable name or address. Blocked on #40, #6 and #101.
One device can hold sessions for two servers, and one server can be used by two
people on the same device. A cache keyed only by item identifier hands the second
person the first person's library, and it does so silently, which is the worst
version of that failure.
What this produces
Every key namespaced by the server it came from and by the identity that fetched
it, so that the same identifier under a different session is a different entry.
Signing out removing the entries for that identity rather than leaving them for
whoever signs in next. Signing out itself is built in #114, which
expresses the removal in the keying this issue defines.
A key derivation that does not put a person's name or a server address into a
filename, since a cache directory is readable by anything else on the device that
can read files.
Done when
A test signs in as one identity, caches, signs out, signs in as a second, and
proves nothing from the first is readable. A test proves two servers holding the
same item identifier do not collide. A test proves no key material written to
storage contains a readable name or address. Blocked on #40, #6 and #101.