https://github.com/eqtylab/integrity
https://github.com/eqtylab/integrity
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/eqtylab/integrity
- Owner: eqtylab
- License: apache-2.0
- Created: 2026-01-22T17:43:13.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-03-19T21:31:20.000Z (3 months ago)
- Last Synced: 2026-03-20T11:47:11.859Z (3 months ago)
- Language: Rust
- Size: 348 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Overview
Library for data integrity, signing, verifiable credentials, and content-addressable storage.
This crate provides tools for creating tamper-evident data structures using cryptographic hashing, digital signatures, and W3C standards like Verifiable Credentials and JSON-LD.
## Feature Flags
Signer and blob backends are now split into dedicated workspace crates and are feature-gated.
- Blob features:
- `blob-local`
- `blob-memory`
- `blob-s3`
- `blob-gcs`
- `blob-azure`
- `blob-all`
- Signer features:
- `signer-ed25519`
- `signer-p256`
- `signer-secp256k1`
- `signer-auth-service`
- `signer-vcomp-notary`
- `signer-akv`
- `signer-yubihsm`
- `signer-yubikey`
- `signer-slh-dsa`
- `signer-all`
Default features include local blob backends (`blob-local`, `blob-memory`) and local software signers (`signer-ed25519`, `signer-p256`, `signer-secp256k1`).
## FFI (C ABI)
The workspace includes a stable C ABI surface in `ffi/src/ffi/` for SDK bindings (including the Go SDK), packaged as the dedicated `integrity-ffi` crate.
- Public header: `include/integrity_ffi.h`
- ABI version functions:
- `ig_abi_version_major`
- `ig_abi_version_minor`
- `ig_abi_version_patch`
- `ig_abi_version_string`
- Runtime and handle model:
- Create one runtime with `ig_runtime_new`
- Create and reuse opaque handles (signers, blob stores)
- Release memory with `ig_string_free`, `ig_error_free`, `ig_bytes_free`
- Release handles with their corresponding `*_free` function
The current ABI version is `0.2.0`.
### Native Artifact Releases
GitHub Actions can publish prebuilt native FFI artifacts for each supported system:
- Linux x86_64 (`libintegrity_ffi.so`)
- macOS 14 aarch64 (`libintegrity_ffi.dylib`)
- macOS 15 x86_64 (`libintegrity_ffi.dylib`)
- macOS 15 aarch64 (`libintegrity_ffi.dylib`)
Workflow: `.github/workflows/release-native-ffi.yml`
- Push a version tag like `v0.2.0` to build and attach release assets to that GitHub Release.
- Use `workflow_dispatch` to run the build matrix and collect workflow artifacts without publishing a Release.
Build native FFI artifacts locally:
```bash
cargo build -p integrity-ffi --release --locked --features "blob-all,signer-all"
```
# Development
Nix flake creates a dev environment with all the dependencies.
`prek` is used for formatting and linting.
## Just Commands
The project uses [Just](https://github.com/casey/just) for common development tasks.
```present just --list
Available recipes:
build # Build the project for native target
build-wasm # Build WebAssembly package with wasm-pack
ci # Run all CI checks (format, build, lint, test)
fix # Auto-fix clippy warnings where possible
fmt # Format Rust code using rustfmt
fmt-check # Check if code is formatted correctly without modifying files
lint # Run clippy lints to check code quality
lint-docs # Check that all public items have documentation
pre-commit # Run all prek pre-commit hooks on all files
readme-check # Check if README.md is up to date with auto-generated content
readme-update # Update README.md with auto-generated content (Justfile commands, etc.)
test # Run unit tests with cargo
test-wasm # Run WASM tests in Node.js and browsers (Chrome, Firefox) Note: for macOS test Safari with --safari
update-static-contexts # Rebuild static JSON-LD context files
```