67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# @sapphirecode/crypto-helper
|
|
|
|
version: 2.0.x
|
|
|
|
simple functions for cryptography
|
|
|
|
## Installation
|
|
|
|
npm:
|
|
|
|
> npm i --save @sapphirecode/crypto-helper
|
|
|
|
yarn:
|
|
|
|
> yarn add @sapphirecode/crypto-helper
|
|
|
|
## Usage
|
|
|
|
### Examples
|
|
|
|
```js
|
|
const crypto = require('@sapphirecode/crypto-helper');
|
|
|
|
const rand_hex = crypto.random_hex(16); // outputs 16 byte random hex
|
|
const rand_salt = crypto.create_salt(); // same as random_hex, but with fixed length of 32 bytes
|
|
const random_string = crypto.random_string(16); // output 16 character long random string
|
|
const hash = crypto.hash_sha512(random_string, random_hex); // returns sha 512 hex
|
|
const check = crypto.checksum('foo'); // returns a sha 256 hex
|
|
|
|
// jwt like object signing
|
|
const signed = crypto.sign_object({foo: 'bar'}, 'secret');
|
|
const info = await crypto.get_signature_info(signed); // returns an object with iat (issued at), key_info and data
|
|
const dec = await crypto.decode_signed(signed); // decode a signed object without verifying the signature
|
|
const ver = await crypto.verify_signature(signed, 'secret', 10000); // verifies the signature and returns the contents. the timeout is in milliseconds and optional, timing will be ignored if omitted.
|
|
const ver_info = await crypto.verify_signature_get_info(signed, 'secret', 10000); // verify a signature and get signature information like iat and key_info
|
|
const ver_func = await crypto.verify_signature(
|
|
signed,
|
|
(signature_info) => 'secret',
|
|
10000
|
|
); // verify a signature, retrieve the key using the signature info
|
|
|
|
// encryption
|
|
const enc = crypto.encrypt_aes('foo', 'bar');
|
|
const dec = crypto.decrypt_aes(enc, 'bar');
|
|
|
|
// asymmetric encryption and signatures
|
|
const keys = await crypto.generate_keypair(2048); // generate private and public key (length is optional and 2048 by default)
|
|
|
|
const aenc = crypto.asym_encrypt('foo', keys.public_key); // encrypt
|
|
const adec = crypto.asym_decrypt(aenc, key.private_key); // decrypt
|
|
|
|
const asig = crypto.asym_sign('foo', keys.private_key); // create signature
|
|
const aver = crypto.asym_verify('foo', keys.public_key, asig); // verify signature, returns boolean
|
|
```
|
|
|
|
### Asymmetric signatures on object signing
|
|
|
|
the functions `sign_object`, `verify_signature`, ... will automatically detect
|
|
rsa keys and use them to sign objects asymmetrically. Note that keys have to be
|
|
provided in the correct order (private key for signing, public key for
|
|
verifying). Else the keys will just be interpreted as symmetric and verification
|
|
will fail.
|
|
|
|
## License
|
|
|
|
MIT © Timo Hocker <timo@scode.ovh>
|