The application, through a browser interface, maintains a toy
repository (on a filesystem on its local Linux instance).
The following screens are supported
Login
Login to HWA app.
Required before any HWA filesystem operations.
Underneath, HWA update the magen id service with a "client",
which is available to other magen services, e.g. policy.
In HWA, login is a dummy operation with a hard-coded user.
The login is preserved in a Flask session for a period
of time (PERMANENT_SESSION_LIFETIME, e.g. 10 minutes),
after which point the login button must be clicked again.
[As a point of information, Flask exports a browser
session cookie, so the login is preserved across an
HWA restart.]
Repository
Show assets (files) currently ingested into Magen.
For each asset, various operations may be performed.
View
Preview an asset, by decrypting the stored
file (notes.txt.html) back to the original contents.
The policy service (ps) checks if a policy allows this
access. (No policy is currently applied to ingestion.)
Policy "contracts" may be managed through policy's http
APIs as driven by postman requests. Collections of useful
policy http requests are found in policy's postman
directory.
The identity service provides information (username, device,
etc) that is checked against policies.
Download
Similar to View but downloads the asset rather than
previewing it.
Raw-View
For educational purposes, display the html container
(e.g. notes.txt.html) for the encrypted asset, i.e. show a
one-line message that the actual contents can only be
accessed through a magen viewer operation to the encrypted
file (notes.txt.html)
Raw-Download
Similar to Raw-View but downloads the asset rather than
previewing it, to allow inspection of the container
format
Delete
Clean up entries on the HWA toy repository
Ingestion
Upload a file (notes.txt), e.g. from laptop running
browser, encrypt, and store in Magen container format
(notes.txt.html)
The ingestion service produces the containerized format
and assigns a magen assetId to it.
The key service stores a key for the asset, indexed by
assetId