GEO PSI Demo
Demonstration using private set intersection (PSI) to privately communicate locations a client has visited with locations a server knows about.
Locations are encoded using GeoHash. There are existing geohash explorer sites that allow you to explore geohashs.
This demo consists of separate client and server programs (written for node.js). Data is stored in JSON files: server_data.json
for the server and client_data.json
for the client.
The server (written using express js) provides a simple REST endpoint /match
that allows the client to post the encrypted locations to the server.
The client allows entry of specific decimal lat,long points, import of a GPX file or checking the saved points against the server.
Installation
nvm use
yarn install
Usage
The server comes configured with a set of points it knows about. See the server_data.json
file. Add new ones by choosing geohash points using an existing geohash explorer site.
The client is setup using points from the GPX file sample_gpx_trace.gpx
. You can view this file on GPX Studio.
Start the server:
node server.js
Test what points match:
node client.js check-points
Import a GPX file:
node client.js import-gpx <filename>
Add a specific point to the client:
node client.js add-point \"-34.920728697483,138.60850731031323\"