@crpdo/key
Version:
Streamlines key generation, derivation, and management through its simple and intuitive API
143 lines (89 loc) • 4.31 kB
Markdown
# @crpdo/key
> the key
[](https://www.npmjs.com/package/@crpdo/key)
[](https://gitlab.com/frenware/core/crpdo/key/-/pipelines)
[](https://gitlab.com/frenware/core/crpdo/key/-/blob/master/LICENSE)
[](https://www.npmjs.com/package/@crpdo/key)
[](https://gitlab.com/frenware/core/crpdo/key)
[](https://twitter.com/basdwon)
[](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).