Git Product home page Git Product logo

tkey's Introduction

tKey

lerna code style: prettier npm

tKey is the underlying SDK used to implement Web3Auth Plug n Play. This package can also be used to self host Web3Auth in your own system. tKey stands for Threshold Key, which refers to the management keys & shares generated using threshold cryptography.

The tKey SDK

The tKey SDK manages private keys by generating shares of it using Shamir Secret Sharing. For example, for a 2 out of 3 (2/3) setup, we give the user three shares: ShareA, ShareB, and ShareC.

  • ShareA is stored on the user’s device: Implementation is device and system specific. For example, on mobile devices, the share could be stored in device storage secured via biometrics.
  • ShareB is managed and split across Web3Auth's Auth Network, accessed by an OAuth login provider that a user owns.
  • ShareC is a recovery share: An extra share to be kept by the user, possibly kept on a separate device, downloaded or based on user input with enough entropy (eg. password, security questions, hardware device etc.).

Similar to existing 2FA systems, a user needs to prove ownership of at least 2 out of 3 (2/3) shares, in order to retrieve his private key.

For more information, check out the technical overview. Before integrating you can also check out the example for tKey.

To use the SDK in your application, please refer to our SDK Reference in Web3Auth Documentation

Features

  • Typescript compatible. Includes Type definitions
  • Fully composable API
  • Module support (Include only those modules which you require)
  • Audited

Packages

Packages @latest Version Size Description
πŸ‰ tKey Standard Package
@tkey/default npm version minzip Bundles Core and Modules into one importable package
🏠 Core
@tkey/core npm version minzip Core functionalities for creating a tkey
πŸ•β€πŸ¦Ί Service Provider
@tkey/service-provider-torus npm version minzip @service-provider-base with DirectAuth functionality
πŸ—³ Storage Layer
@tkey/storage-layer-torus npm version minzip get/set metadata for various shares
πŸ”Œ Modules
@tkey/chrome-storage npm version minzip Add/remove a share from chrome extension storage
@tkey/web-storage npm version minzip Add/remove a share from local and file storage
@tkey/security-questions npm version minzip Add/remove a security question and password as a share for tkey
@tkey/share-transfer npm version minzip Transfer share from another device
@tkey/seed-phrase npm version minzip Store and use seedphrases on metadata
@tkey/private-keys npm version minzip Store extra private keys on tKey metadata
@tkey/share-serialization npm version minzip Import/export a share from tKey
πŸ‰ Low-Level
@tkey/common-types npm version minzip Shared TypeScript Types

Building the SDK Locally

Requirements

  • This package requires a peer dependency of @babel/runtime
  • Node 14+

Installation

npm run bootstrap
npm run pack:lerna

Bundling

Each sub package is distributed in 4 formats

  • esm build dist/<MODULE_NAME>.esm.js in es6 format
  • commonjs build dist/<MODULE_NAME>.cjs.js in es5 format
  • commonjs build dist/<MODULE_NAME>-bundled.cjs.js in es5 format with problematic packages bundled (benfits non-webpack users)
  • umd build dist/<MODULE_NAME>.umd.min.js in es5 format without polyfilling corejs minified

By default, the appropriate format is used for your specified usecase You can use a different format (if you know what you're doing) by referencing the correct file

The cjs build is not polyfilled with core-js. It is upto the user to polyfill based on the browserlist they target

Directly in Browser

CDN's serve the non-core-js polyfilled version by default. You can use a different

jsdeliver

<script src="https://cdn.jsdelivr.net/npm/<MODULE_NAME>"></script>

unpkg

<script src="https://unpkg.com/<MODULE_NAME>"></script>

Tips for NUXT

This is a plugin that works only on the client side. So please register it as a ssr-free plugin.

tkey's People

Contributors

1swaraj avatar bboystatix avatar chaitanyapotti avatar dependabot[bot] avatar himanshuchawla009 avatar lionellbriones avatar metallicalfa2 avatar phuctm97 avatar rathishubham7 avatar stxphxn avatar tetratorus avatar yashovardhan avatar yzheny 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.