GithubHelp home page GithubHelp logo

trustbloc / webkms Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 19.0 2.42 MB

Key Management System. An implementation of WebKMS in Golang - https://w3c-ccg.github.io/webkms/

License: Apache License 2.0

Makefile 1.04% Shell 1.46% Go 94.73% Dockerfile 0.28% Gherkin 2.50%

webkms's People

Contributors

aholovko avatar baha-ai avatar dependabot[bot] avatar drk3 avatar fqutishat avatar kgoncharov avatar rajeshkalaria80 avatar rolsonquadras avatar skynet2 avatar soluchok avatar sudeshrshetty avatar troyronda avatar vkubiv avatar ypukhta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webkms's Issues

Basic end-to-end scenario for kms/crypto operations

Goal: demonstrate a creation of user's vault for keys (keystore) with ability to generate a keypair and perform Sign/Verify operations with it via REST API.

Keystores should NOT be shared, and every keystore should have its own secretlock. Start with a single masterkey stored solely on Key Server and protected by passphrase, add an option to use Shamir Secret Sharing algorithm later.

Tasks:

  • Implement Create Keystore API #5
  • Link keystore to a user #8
  • Implement API for creating key on a server for a given user #9
  • Implement support for masterkey lock (#17)
  • Implement API for Sign operation #10
  • Implement API for Verify operation #18

OAuth2 authorization layer

Goal: add support for OAuth 2.0 authorization scheme (access token).

Other authZ schemes, like DID Auth or ZCAPs, can be added later, so the design should account that.

Tasks:

  • Implement authorization handler (middleware) #20
  • Restrict access to the keystore only to the allowed users #21

Roadmap for 0.1.5

Key Server

  • Redesign functionality for creating local KMS instance (#60)
    • Update SecretLock service for the KMS instance
    • Move KMSCreator logic into its own package
  • Update Create Keystore API functionality (#62)
    • Generate delegate key for ZCAP authorization
    • Generate recipient key for SDS usage
  • Implement support for storing operational keys in external SDS (#61)
    • Implement support for TLS CA Certs param (#77)
  • Implement API for exporting public key (#78)
    • Pass secretlock passphrase in header instead of body (#81)
  • Implement Wrap/Unwrap Key API (#65)
    • Sync up operations payload with Aries remote kms/crypto (#91)
  • Implement secretlock for Keystore KMS (#85)
  • Implement secretlock with shared unlock key for user's key manager (#22)
  • Fix issue with creating secret lock service (#110)
  • Implement authorization layer (should support both OAuth and ZCAP)
    • Implement support for authorizing with oAuth token (#63)
    • Implement support for authorizing with ZCAP-LD (#100)
  • Implement API for getting key handle (description) by key ID (#25)
  • Improve naming for used components and dependencies (#95)
  • Implement support for CryptoBox operations (#117)
  • Optimize calls to EDV and Hub Auth (#125, #126)

Documentation

  • Add support for OpenAPI spec (#54)

Technical Debt (refactoring, cleanup and chore tasks)

  • Refactor logging functionality (#41)
  • Support setting log level via param or endpoint on the fly (#52)
  • Do not leak the implementation details when sending back the error messages to the client (#38)
  • Pass KMS and Keystore services as dependencies to Operation (#29)
  • Update golangci-lint to 1.31.0 (#57)
  • Enable linter for code within pkg (#58)

Edge Agent

  • Configurable aries-framework-go wasm instance
    • Implement a custom aries-framework-go wasm (agent-js-worker) #372
    • Merge functionality of trustbloc-agent-js-worker and agent-js-worker #382
  • Implement remote kms/crypto wrappers #401

Implement secretlock with shared unlock key for user's key manager

Goal: add an option for securing KMS within keystore with a shared unlock key.

Key Server should not be able to unlock KMS using only its own key. It should request the other part of the key from Locker (part of Hub Auth) and reconstruct the masterkey.

Tasks:

  • Implement client to request shared unlock key from Locker #23
  • Implement support for secretlock with shared unlock key #24

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.