1.0.6 • Published 5 months ago

isw-crypto-utils v1.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

ISW Crypto Utils

License: MIT

A Node.js package providing cryptographic utilities for common tasks such as generating nonces, performing ECDH key exchange, hashing messages, encrypting/decrypting data using AES-256-CBC, and signing/verifying messages using ECDSA. Built with crypto-js and elliptic.


Installation

Install the package using npm:

npm install isw-crypto-utils

Usage

Import the Package

import ISWCryptoUtils from '../node_modules/isw-crypto-utils'
const cryptoUtils = new ISWCryptoUtils();

Generate a Random Nonce

A nonce is a random value used in cryptographic operations. Use the generateNonce() method to generate a 16-byte nonce as a hex string.

const nonce = cryptoUtils.generateNonce();
console.log("Nonce:", nonce);

Generate an ECDH Key Pair

Generate a public/private key pair for Elliptic Curve Diffie-Hellman (ECDH) key exchange using the P-256 curve.

const keyPair = cryptoUtils.generateECDHKeyPair();
console.log("Public Key:", keyPair.publicKey);
console.log("Private Key:", keyPair.privateKey);

Perform ECDH Key Exchange

Derive a shared secret using ECDH. Pass your private key and the other party's public key.

const sharedSecret = cryptoUtils.doECDH(privateKey, remotePublicKey);
console.log("Shared Secret:", sharedSecret);

Hash a Message

Hash a message using SHA-256. The output is a hex string.

const hash = cryptoUtils.hashMessage("Hello, World!");
console.log("Hash:", hash);

Encrypt Data Using AES-256-CBC

Encrypt data using AES-256-CBC. You need a 256-bit key (64 hex characters).

const key = "your-256-bit-key"; // Must be 64 hex characters
const encryptedData = cryptoUtils.encryptAES("Sensitive Data", key);
console.log("Encrypted Data:", encryptedData);

Decrypt Data Using AES-256-CBC

Decrypt data using AES-256-CBC. Use the same key used for encryption.

const decryptedData = cryptoUtils.decryptAES(encryptedData, key);
console.log("Decrypted Data:", decryptedData);

Sign a Message

Sign a message using RSA. Pass the message and your private key.

const signature = cryptoUtils.signMessage("Hello, World!", privateKey);
console.log("Signature:", signature);

Verify a Signature

Verify a message signature using RSA. Pass the message, signature, and the signer's public key.

const isValid = cryptoUtils.verifySignature("Hello, World!", signature, publicKey);
console.log("Signature Valid:", isValid);

API Reference

MethodDescription
generateNonce()Generates a random 16-byte nonce as a hex string.
generateECDHKeyPair()Generates an ECDH key pair (public and private keys) using the P-256 curve.
doECDH(privateKey, publicKey)Derives a shared secret using ECDH key exchange.
hashMessage(message)Hashes a message using SHA-256.
encryptAES(data, key, iv)Encrypts data using AES-256-CBC.
decryptAES(encryptedData, key, iv)Decrypts data using AES-256-CBC.
generateIV()Generates a random 16-byte IV for AES encryption.
signMessage(message, privateKey)Signs a message using RSA.
verifySignature(message, signature, publicKey)Verifies a message signature using RSA.

Dependencies

  • crypto-js: For AES encryption/decryption, SHA-256 hashing, and random byte generation.

  • elliptic: For ECDH key exchange and ECDSA signing/verification.


License

This project is licensed under the MIT License. See the LICENSE file for details.


Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.


Support

If you find this package useful, consider giving it a ⭐️ on GitHub!

1.0.6

5 months ago

1.0.4

5 months ago

1.0.3

5 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago