Cryptographic functions provider and example repository.
This module provides encryption and decryption functions for handling both binary data and strings using public and private keys. It utilizes ecies-wasm
for the underlying cryptographic operations.
Package available on npm: https://www.npmjs.com/package/@zklx/crypto
Encrypts the given binary data for the recipient using the public key. The file name is included in the encrypted data.
publicKey
: The recipient's public key.fileName
: The name of the file being encrypted.data
: The plaintext data as aUint8Array
.
Returns the ciphertext as a Uint8Array
.
Decrypts the given ciphertext using the recipient's private key. Returns the decrypted data and the original file name.
privateKey
: The recipient's private key.data
: The ciphertext data as aUint8Array
.
Returns an object containing the plaintext data and the original file name.
Encrypts the given string for the recipient using their public key. Returns the ciphertext as a hexadecimal string.
publicKey
: The recipient's public key.string
: The plaintext string.
Decrypts the given ciphertext string (in hexadecimal format) using the recipient's private key. Returns the plaintext string.
privateKey
: The recipient's private key.string
: The ciphertext string in hexadecimal format.
import { Key } from "@zklx/kds";
import { encryptString, decryptString, encryptFile, decryptFile } from "@zklx/crypto";
// Example usage:
const publicKey = new Key(/* ... */);
const privateKey = new Key(/* ... */);
// Encrypt a string
const plaintext = "Hello, World!";
const encryptedString = encryptString(publicKey, plaintext);
// Decrypt the string
const decryptedString = decryptString(privateKey, encryptedString);
console.log(decryptedString); // "Hello, World!"
// Encrypt binary data
const fileName = "document.txt";
const data = new Uint8Array([/* ... */]);
const encryptedData = encryptFile(publicKey, fileName, data);
// Decrypt the binary data
const { data: decryptedData, fileName: decryptedFileName } = decryptFile(privateKey, encryptedData);
console.log(decryptedFileName); // "document.txt"
console.log(decryptedData); // Uint8Array
To launch the example webpage:
pnpm install
npx webpack # use npx, pnpm - webpack integration is broken
This module performs type checks on its inputs. It throws TypeError
if arguments are not of the expected types. Additionally, the decryptString
function issues a warning if the provided ciphertext string does not appear to be a valid hexadecimal string.
- The
asHexString
method is added toUint8Array.prototype
if it does not already exist. This method converts aUint8Array
to a hexadecimal string representation. - Ensure that your public and private keys are instances of the
Key
class provided byzkl-kds/key
.
This project is licensed under the GNU Lesser General Public License, version 2.1.
Authored by Yigid BALABAN, fyb@fybx.dev
2024 © zk-Lokomotive team