wasm-xchacha-poly v0.1.0
wasm-xchacha20poly1305-wrapper
wasm-xchacha20poly1305-wrapper is a WebAssembly wrapper for the XChaCha20Poly1305 encryption algorithm. This library enables developers to use the powerful encryption capabilities of the Chacha20Poly1305 cryptographic algorithm in web applications.
Features
- WebAssembly wrapper for XChacha20Poly1305 encryption algorithm
- Functions directly callable from JavaScript
- Input validation for data and keys
- Designed for web applications that require strong encryption and decryption
Getting Started
Prerequisites
Ensure the following tools are installed on your system:
- Rust (latest stable version)
- wasm-pack
Installation
- Clone the repository:
git clone https://github.com/dumitory-dev/wasm-xchacha20poly1305-wrapper.git- Build the WebAssembly package:
cd wasm-xchacha20poly1305-wrapper
wasm-pack build --target web- The compiled WebAssembly module will be available in the
pkgdirectory.
Usage
Include the generated JavaScript and WebAssembly files in your web application:
<script type="module">
import { encrypt, decrypt, encrypt_async, decrypt_async } from './pkg/wasm_xchacha20poly1305_wrapper.js';
async function run() {
const plaintext = new Uint8Array([72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100]); // Hello, World
const key = new Uint8Array(32); // Use a properly generated 256-bit key for real-world applications
// Synchronous encryption
const ciphertext = encrypt(plaintext, key);
console.log('Ciphertext:', ciphertext);
// Synchronous decryption
const decrypted = decrypt(ciphertext, key);
console.log('Decrypted:', decrypted);
// Asynchronous encryption
const asyncCiphertext = await encrypt_async(plaintext, key);
console.log('Async Ciphertext:', asyncCiphertext);
// Asynchronous decryption
const asyncDecrypted = await decrypt_async(asyncCiphertext, key);
console.log('Async Decrypted:', asyncDecrypted);
}
run();
</script>Running Tests
To run the tests for the library, execute the following command in the project's root directory:
cargo testThis command will run all the unit tests defined in the Rust source code.
Running Benchmarks
To run benchmarks for the library, you need to install the criterion crate:
cargo install cargo-criterionAfter installing cargo-criterion, you can run the benchmarks with the following command:
cargo criterionThis command will run all the benchmark tests and generate an HTML report in the target/criterion/report directory.
License
This project is licensed under the terms of the MIT license. For a copy, see https://opensource.org/licenses/MIT.
2 years ago