UNPKG

@crpdo/key

Version:

Streamlines key generation, derivation, and management through its simple and intuitive API

143 lines (89 loc) 4.31 kB
# @crpdo/key > the key [![npm](https://img.shields.io/npm/v/@crpdo/key?style=flat&logo=npm)](https://www.npmjs.com/package/@crpdo/key) [![pipeline](https://gitlab.com/frenware/core/crpdo/key/badges/master/pipeline.svg)](https://gitlab.com/frenware/core/crpdo/key/-/pipelines) [![license](https://img.shields.io/npm/l/@crpdo/key)](https://gitlab.com/frenware/core/crpdo/key/-/blob/master/LICENSE) [![downloads](https://img.shields.io/npm/dw/@crpdo/key)](https://www.npmjs.com/package/@crpdo/key) [![Gitlab](https://img.shields.io/badge/Gitlab%20-%20?logo=gitlab&color=%23383a40)](https://gitlab.com/frenware/core/crpdo/key) [![Twitter](https://img.shields.io/badge/@basdwon%20-%20?logo=twitter&color=%23383a40)](https://twitter.com/basdwon) [![Discord](https://img.shields.io/badge/Basedwon%20-%20?logo=discord&color=%23383a40)](https://discordapp.com/users/basedwon) The `@crpdo/key` submodule is an integral component of the crpdo project. This module offers an array of classes tailored for managing keys essential for various cryptographic activities. The crpdo project is a cryptography-focused JavaScript library that effectively employs TweetNaCl, HDKey, and numerous other proven libraries. The `@crpdo/key` submodule streamlines key generation, derivation, and management through its simple and intuitive API. ## Features - Generate seeds and derive keys - Support for Hierarchical Deterministic (HD) keys - Sign and verify data - Encrypt and decrypt data - Robust, flexible key derivation - Built-in random number generator ## Installation ```sh npm install @crpdo/key ``` ## Usage ```javascript const Key = require('@crpdo/key') // Create a new Key instance with default parameters const key = new Key() // Derive a new child key const childKey = key.derive('child1') // Sign some data const signature = key.sign('hello world') // Verify the signature const isValid = key.verify('hello world', signature) // And more... ``` ## API ### Classes 1. BaseKey: A class for base keys. It provides methods for getting the public and private key. 2. BoxKey: A class that extends BaseKey, adding methods for encryption and decryption. 3. HdKey: A class that extends BaseKey, adding support for Hierarchical Deterministic (HD) keys. It provides methods for deriving keys and verifying signatures. 4. Key: A utility class for dealing with various types of keys. It provides methods for deriving and signing keys, among others. 5. SignKey: A class that extends BaseKey, adding methods for signing data and verifying signatures. ### `Key` #### `constructor([options])` Creates a new `Key` instance. You can optionally pass in an options object to customize the key generation. #### `derive(slug, [options], [isChild])` Derives a new key. #### `ratchet([index], [options])` Derives a new key at the specified index. #### `sign(data)` Signs the given data. #### `verify(data, signature, [publicKey])` Verifies the given data against a signature. #### `encrypt(data, publicKey, nonce, encode)` Encrypts the given data. #### `decrypt(data, publicKey, nonce, encode)` Decrypts the given data. ### `HdKey` This class provides similar functionalities as `Key`, but is specifically tailored for managing Hierarchical Deterministic (HD) keys. ## Documentation - [API Reference](/docs/api.md) ## Related Modules - @crpdo/crypto: Cryptography utility functions - @crpdo/nacl: Wrapper for TweetNaCl.js Please see the main crpdo project for a full list of related modules. ## Tests In order to run the test suite, simply clone the repository and install its dependencies: ```bash git clone https://gitlab.com/frenware/core/crpdo/key.git cd basd npm install ``` To run the tests: ```bash npm test ``` ## Contributing Thank you! Please see our [contributing guidelines](/docs/contributing.md) for details. ## Donations If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you! **Bitcoin (BTC):** ``` 1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF ``` **Monero (XMR):** ``` 46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ ``` ## License @crpdo/key is [MIT licensed](https://gitlab.com/frenware/core/crpdo/key/-/blob/master/LICENSE).