Verifier
Introduction
The Verifier component of zkNotary is a crucial tool for validating the authenticity of data notarized by the Prover. It's a WebAssembly module compiled from Rust, using wasm-pack, and is designed for use within JavaScript applications.
Features
WebAssembly Compilation: The Rust code is compiled into WebAssembly, making it suitable for integration in web environments.
Single Public Function -
verify
: Exposes a function that takesproof_json
andnotary_pubkey
as inputs and returns a plain-text notarization of the original interaction with a web server.Digital Signature Validation: Validates that the proof was digitally signed by the notary server, ensuring authenticity.
Prerequisites
Rust
Cargo
wasm-pack
Note: This project requires a clang version newer than 16.0.0 to compile ring to wasm. If not, you will run into warning: error: unable to create target: 'No available targets are compatible with triple "wasm32-unknown-unknown"'
File Structure
src/lib.rs
: This is the main library file for the Verifier.src/utils.rs
: This file contains utility functions used by the Verifier.pkg
: Autogenerated directory where the npm package code lives.examples/node
: A sample node application that showcases how to use the verifier package. For more information see the sample application's README file.
Usage
Install wasm-pack
Optional: For Mac users with a version of clang older than 16.0.0, you can use Homebrew to install
llvm
and then use it to compile the project.
Build the wasm project
This creates a new pkg
directory with the wasm package ready to publish to npmjs.com.
Publish your npm package
Contributing
Contributions are welcome. Please submit a pull request or create an issue to discuss the changes you want to make.
Acknowledgements
This project is inspired by and borrows code from the following projects:
We are grateful to the authors of these projects for their work.
License
Apache
Last updated