1.0.1 • Published 8 years ago

keystorage-lib v1.0.1

Weekly downloads
4
License
MIT
Repository
github
Last release
8 years ago

Keystorage Service

simple API to store and retrieve keys.

Features

  • open standard storage format used: Ethereum Secret Storage Definition
  • no authentication for GET, UUID v4 generated by client used as secret key
  • rate-limiting used to prevent brute-force attacks

Usage

Installation instructions

  npm install keystorage-lib

Reading wallet from storage

  var lib = require('keystorage-lib');
  var walletUuid = '88a23fc8-09fa-4cd5-a3a4-0d4f3a496602';
  lib.get(walletUuid)
    .then(function(result){
        //This is where you would put a success callback
    }).catch( function(result){
        //This is where you would put an error callback
    });

Example output of res.body:

{
  address: "0xe6b032b23bc145ed19e23792e2a107d0794fe65a",
  id: "88a23fc8-09fa-4cd5-a3a4-0d4f3a496602",
  version: 3,
  crypto: {
    kdfparams: {
      prf: "hmac-sha256",
      c: 262144,
      dklen: 32,
      salt: "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
    },
    ciphertext: "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
    mac: "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2",
    cipher: "aes-128-ctr",
    kdf: "pbkdf2",
    cipherparams: {
      iv: "6087dab2f9fdbbfaddc31a909735c1e6"
    }
  }
}

Storing encrypted wallet in storage

Each API call returns a promise, that invokes either a success and failure callback.

  var lib = require('keystorage-lib');

  var wallet = {
    "crypto" : {
      "cipher" : "aes-128-ctr",
      "cipherparams" : {
        "iv" : "6087dab2f9fdbbfaddc31a909735c1e6"
      },
      "ciphertext" : "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
      "kdf" : "pbkdf2",
      "kdfparams" : {
        "c" : 262144,
        "dklen" : 32,
        "prf" : "hmac-sha256",
        "salt" : "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
      },
      "mac" : "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
    },
    "id": "88a23fc8-09fa-4cd5-a3a4-0d4f3a496602",
    "address" : "0xe6b032b23bc145ed19e23792e2a107d0794fe65a",
    "version" : 3
  };

  var token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZTU5NmFlOC00NjVjLTRkMWEtOWE4MC1mOTJlY2QyNDE2MzUiLCJzdWIiOiJzdG9yYWdlIiwianRpIjoiMTIzNCIsImF1ZCI6ImFtYmlzYWZlIiwiZXhwIjoxNDYxNzkxMDI2MDQyfQ.IJdbUMCN7O8LOHNY0H19pGFMmw3GBaDtybh-3BllM_g';

  lib.store(wallet, token)
    .then(function(result){
        //This is where you would put a success callback
    }).catch( function(result){
        //This is where you would put an error callback
    });