Giter VIP home page Giter VIP logo

fake-kms's Introduction

fake-kms

Setup a fake KMS server for testing purposes

Example

const AWS = require('aws-sdk')
const FakeKMS = require('fake-kms').FakeKMS

async function test() {
  const server = new FakeKMS({
    port: 0,
    encrypt: {
      'SK_LIVE': 'a secret text'
    }
  })

  await server.bootstrap()

  const secrets = server.getCiphers()

  const kms = new AWS.KMS({
    endpoint: `http://${sever.hostPort}`,
    sslEnabled: false
  })

  const data = await kms.decrypt({
    CiphertextBlob: secrets['SK_LIVE']
  })

  // Should be `a secret text`
  console.log('the text', data.Plaintext.toString())

  await server.close()
}

process.on('unhandledRejection', (err) => { throw err })
test()

Features

Currently this fake-kms module only supports the kms.decrypt() method. Aka it has enough of an implementation to support calling decrypt on the aws-sdk.KMS.

The other functionality can be added in the future, as needed.

Docs :

const server = new FakeKMS(opts)

Creates a fake KMS server.

  • opts.port ; defaults to 0
  • opts.encrypt ; An object of key / value pairs that you want pre-created in the KMS.

await server.bootstrap()

Starts the server.

After bootstrap returns you can read server.hostPort to get the actual listening port of the server.

const secrets = server.getCiphers()

This returns an object of key / value pairs for all the secrets that have been encrypted in the KMS.

Each value is a valid CiphertextBlob as a base64 string that can be passed to the kms library in kms.decrypt()

await server.close()

Shuts down the server.

install

% npm install fake-kms

MIT Licensed

fake-kms's People

Contributors

raynos avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  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.