Securely serve up files over HTTP. Files can be downloaded by anyone that can access the server, but only the client with the keys can decrypt them.
On both client and server, run:
npm install -g salty-serve
If you do not have permissions to install globally, you can still run everything through node_modules:
npm install salty-serve
node_modules/salty-serve/bin/salty-keygen
node_modules/salty-serve/bin/salty-serve
node_modules/salty-serve/bin/salty-decrypt
On the client, generate both the client and server keys. Keep the client keys safe.
salty-keygen
Copy server-keys.json
to the server. Then, to serve the current directory, run:
salty-serve -p 1111 -k server-keys.json .
Navigate your browser to the server, or use a commandline utility like curl:
curl -s http://localhost:1111
This command will get the list of all files from the salty-serve, then one-by-one will download, unzip, and decrypt them
curl -s http://localhost:1111 | xargs -I filename sh -c "curl -s http://localhost:1111/filename | gunzip | salty-decrypt -k client-keys.json > filename"
Or, for convenience, you can do the same as above with a single command:
salty-pull http://localhost:1111
Uses NaCl's crypto_box encoded as hexstrings in JSON and then gzipp'ed for HTTP transport.