|
1 | 1 | # web-mpc |
2 | 2 |
|
3 | | -[](https://travis-ci.org/Boston-Women-Work/data-aggregator) |
4 | | -[](https://coveralls.io/github/Boston-Women-Work/data-aggregator?branch=angular) |
5 | | - |
6 | 3 | Implementation of a web-based data collection and aggregation infrastructure that utilizes secure multi-party computation techniques to allow individual contributors to submit their data without revealing it to the other participants. |
7 | 4 |
|
8 | 5 |
|
|
37 | 34 | ``` |
38 | 35 | * Finally, retrieve the application files and in the directory "server/" run: |
39 | 36 | ``` |
40 | | -forever -o log.txt -e error.txt start index.js |
| 37 | +export NODE_ENV=production |
| 38 | +authbind --deep forever -o log.txt -e error.txt start index.js |
41 | 39 | ``` |
42 | 40 |
|
43 | 41 | ## Local machine installation |
@@ -85,56 +83,24 @@ Instructions on how to operate the web-mpc application. All steps below are perf |
85 | 83 |
|
86 | 84 | #### Generate session key |
87 | 85 |
|
88 | | -* Navigate to `localhost:8080/trusted` |
| 86 | +* Navigate to `localhost:8080/session`. |
89 | 87 | * Click on **Generate Session** and copy and share the session key with all participants. |
90 | 88 |
|
91 | 89 | #### Fill out data |
92 | 90 |
|
93 | 91 | * All participants will navigate to `localhost:8080`, paste the session key into its designated field and proceed to fill out the information. Once completed, click **Submit**. |
94 | 92 |
|
| 93 | +#### Manage session |
| 94 | + |
| 95 | +* Navigate to `localhost:8080/track`. |
| 96 | +* Input your session key and password. |
| 97 | +* Generate participation links. |
| 98 | +* Start the session. |
| 99 | + |
95 | 100 | #### Retrieve the result |
96 | 101 |
|
| 102 | +* Stop the session |
97 | 103 | * Navigate to `localhost:8080/unmask`. |
98 | | -* Paste the session key in its designated field. |
| 104 | +* Paste the session key and password in its designated fields. |
99 | 105 | * Click **Browse** and upload the private key file that was downloaded when generating the session key. |
100 | | -* Click **Unmask Data** and view the result |
101 | | - |
102 | | -## Directories and file structure |
103 | | - |
104 | | -#### ./client |
105 | | - |
106 | | -* This contains the code for the data contribution client application. |
107 | | - |
108 | | -* `./client/index.html`: the html page for entering the data. |
109 | | - |
110 | | -* `./client/script/client.js`: contains functions for validating, organizing, masking/encrypting, and submitting data to the server. |
111 | | - |
112 | | -#### ./server |
113 | | - |
114 | | -* This contains the code for the computation server. |
115 | | - |
116 | | -* `./server/index.js`: contains API end-points and functions for storing submission, tracking number of participants, aggregating data, and retrieving public keys, data and masks. |
117 | | - |
118 | | -* `./server/template.json`: contains a json template of what a valid submission looks like. The template will be used with Joi to validate that requests abide by the template. |
119 | | - |
120 | | -#### ./trusted |
121 | | - |
122 | | -* This contains web pages for creating new sessions and viewing progress of existing sessions. |
123 | | - |
124 | | -#### ./unmask |
125 | | - |
126 | | -* This contains the code for unmasking and displaying aggregate result. |
127 | | - |
128 | | -* `./unmask/index.html`: the webpage that allows the aggregate results to be unmasked and viewed. |
129 | | - |
130 | | -* `./unmask/script/unmask.js`: decrypts masks using browser-native encryption/decryption functions. |
131 | | - |
132 | | -#### ./shared |
133 | | - |
134 | | -* This contains files that are generic and are used by multiple parts of the application. |
135 | | - |
136 | | -* `.shared/mpc.js`: contains an implementation of the MPC primitives used for masking and unmasking (recombining), operating on masked/shared data, and encryption using 3rd party libraries. This file is used by **client**, **server**, and **unmask**. |
137 | | - |
138 | | -* `.shared/sail_hot.js`: a generic wrapper/library around HandsOnTable that simplifies validation, rendering, and defining tables. This file is used by **client** and **unmask**. |
139 | | - |
140 | | -* `.shared/templates/tables.js`: a JSON definition of the HandsOnTable used in the application (including rows and columns, cell types, validators, tooltips, and so on). This file is used by **client** and **unmask**. |
| 106 | +* Click **Unmask Data** and view the result. |
0 commit comments