Giter Site home page Giter Site logo

nodecrypto-1's Introduction

How to use

Run the server

node src/app/server.js -p 3500 0 1000
curl http://localhost:3500/

Then we want to create a file, ideally with a unique value on whats past the hyphen.

At this point we'll want to create a random ID. At this point it creates a file with extension *.md.enc. However, it does not yet do the encryption yet.

curl "http://localhost:3500/v1/create/bob-${RANDOM%899999+100000}" \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'defba315ababa315ababa315ababafed'

If the file starts as myfile.md the server will automatically save it as myfile.md.enc. So for now, the user must remember that they must

curl 'http://localhost:3500/v1/view/bob' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H "Content-Type: application/json" \
  -H 'Pragma: no-cache' \
  -d '{"jsonrpc":"2.0","method":"view","params":["name=draymond&password=deaba315ababa315adeaa315deabafed"],"id":26252}'

Then we want to protect Bob. Remember what that ID was. When you make this request, you'll need to pass that in the arguments

curl 'http://localhost:3000/v0/protect/bob-321321' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'name=draymond&password=deaba315ababa315adeaa315deabafed'

Task List

🔦 Next task. Send multiple arguments in a curl request

Side Notes

echo $((RANDOM%899999+100000))

Outputs a number such as 103879. To put a command in a command, use either backticks or $().

From a web search

curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data

Run the server

  1. In console node src/app/server.js 0 100 and expect message that its running on port. You can also run node src/app/server.js -p 3500 0 100 to customize port

  2. In a new console run curl http://localhost:3000/ and expect to see an Info Message about the API

  3. Create: Then without file extension do

curl 'http://localhost:3000/v0/create/alice-32523' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -H "Content-Type: application/x-www-form-urlencoded" 

and you can check the store directory to create that file

  1. Protect: Then verify with this
curl 'http://localhost:3500/v0/lock/' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'filename=logins.csv&extension=csv' \
  -d 'password=12345678' -vvv
  1. View: Another option
curl 'http://localhost:3000/v0/view/alice-32523' \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"protect","params":[],"id":0}'
  1. Unlock: Unlock with the following
curl 'http://localhost:3500/v0/unlock/' \
  -X PUT \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'filename=logins&extension=csv' \
  -d 'password=12345678' -vvv
curl 'http://localhost:3000/v0/unlock/alice-32526' \
-X PUT \
-H 'Connection: keep-alive' \
-H 'Pragma: no-cache' \
-d 'name=draymond&skill=archery&password=defba315ababa315ababa315ababafed'
  1. View: View file
curl 'http://localhost:3000/v0/view/alice-32523'
curl 'http://localhost:3000/v0/view/alice-32523' \
-X POST \
-H "Content-Type: application/json" 
  1. Test: This is optional

Starting state is that /static/logins.csv.enc is an encrypted file. Our goal is to decrypt it.

It has signature app.put('/v0/unlock/:filename'

curl 'http://localhost:3000/v0/unlock/' \
  -X PUT \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'filename=logins&extension=csv' \
  -d 'password=defba315ababa315ababa315ababafed'

Then test it with

curl 'http://localhost:3000/v0/view/' \
  -X PUT \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d '{"filename"="logins.csv"}' 

Comment is that password above may not be most up to date

Documentation tend to say curl -X PUT -d arg=val -d arg2=val2 localhost:8080

  1. Protect: Writing a new file

Status: This does not work yet

curl 'http://localhost:3500/v1/protect/' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'defba315ababa315ababa315ababafed' -vvv
  1. Unlock: Decryption version of above Experimental
curl 'http://localhost:3000/v1/unlock/myfilename' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'defba315ababa315ababa315ababafed'
  1. Create: Upgraded version of create, make this and then it will encrypt which needs to have the enc dec key be sent as part of jsonrpc request Experimental
curl 'http://localhost:3000/v1/create/bob-331331' \
  -X POST \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -d 'defba315ababa315ababa315ababafed'

It may be wise to generate a random entry for key conflicts

  1. Experimental: Viewing new file
node test/readerstream.js '/d' init myetherfile.md 324234_266268
  1. Experimental: Test writing with promise based pattern
node test/writerstream.js '/d' init myetherfile.md 84935_484837
  1. Experimental: When interacting from local to cloud server
curl -X POST www.mmydomainname.com/v0/updates -L \
  -H 'Pragma: no-cache' 

How to run this

cd src
node aes.js encrypt file.txt 12345678
node aes.js decrypt file.txt.enc 12345678

Variations

node aes.js encrypt file.md helloWorld
node aes.js decrypt file.md.enc helloWorld

Another variation could be

node src/test.js

How to test

cd test
node readerstream.js

/**

dcStore will start as

inner file:  ./static/logins.csv.enc
arr1:  [ '', '/static/logins', 'csv', 'enc' ]
arrPop: [ '', '/static/logins', 'csv' ]
arrUnshift: [ 'unenc', '', '/static/logins', 'csv' ]
err in write stream:  [Error: ENOENT: no such file or directory, open 'unenc../static/logins.csv'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: 'unenc../static/logins.csv'
}

*/

nodecrypto-1's People

Contributors

rockcoolsaint avatar lingqingmeng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.