InMemoryClientStorage
Non-persistent ClientStorage for tests and examples.
Transactions are atomic: a transaction works on a copy of the committed state and replaces it only when the block returns normally. A Mutex serializes transactions. Byte arrays are copied on the way in and out, so callers cannot change stored keys or sessions through an alias. It never holds pre-milestone-12 state, so DeviceAuthenticationKeyStore.awaitsUpgradeKey is always false, and every processed entry has a digest and a commit time.