Timo Hocker
7d41f8689f
fix
All checks were successful
continuous-integration/drone/push Build is passing
@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
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
Description
Languages
JavaScript
100%