Refactor account packet struct in safe_core

Description

1. Remove `user_root_dir` from the account packet - we don't need it now that we have fine-grained access control for Mutable Data.

2. Instead, consider having a separate `access_container` entry in the account packet (instead of storing it indirectly in the config dir).

3. Also consider removing the config dir too (or naming it e.g. "apps dir", if we store only the apps infos there)

4. Instead of storing containers info in the user's root dir, store them in the access container with the `authenticator` key (encrypted with a user's key so that apps can't read the entry contents). Updating containers with new encryption info should be a single atomic operation while revoking an app.

5. Refactor std dirs creation in `safe_authenticator`. Make sure that MDataInfo for standard dirs is stored in the account packet before actual dirs are created with `PutMData`, so that a user's account balance won't be wasted with failed operations. I.e. if you need to create dirs A, B, C and only dirs A & B are created successfully, make sure that only C is attempted to be created again on a subsequent operation recovery during user's login)

6. Update `safe_authenticator` to use the new access container structure.

7. Update relevant tests.

Environment

None

Gliffy Diagrams

Activity

Done

Details

Assignee

Reporter

Start date

End date

Story Points

Components

Priority

Created August 4, 2017 at 3:35 PM
Updated September 11, 2018 at 9:02 AM
Resolved August 15, 2017 at 10:42 AM