{"id":47721254,"url":"https://github.com/eqtylab/integrity","last_synced_at":"2026-04-02T19:36:05.768Z","repository":{"id":335564460,"uuid":"1140002858","full_name":"eqtylab/integrity","owner":"eqtylab","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-19T21:31:20.000Z","size":356,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T11:47:11.859Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eqtylab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-22T17:43:13.000Z","updated_at":"2026-03-11T22:22:02.000Z","dependencies_parsed_at":"2026-03-07T04:03:00.577Z","dependency_job_id":null,"html_url":"https://github.com/eqtylab/integrity","commit_stats":null,"previous_names":["eqtylab/integrity"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/eqtylab/integrity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqtylab%2Fintegrity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqtylab%2Fintegrity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqtylab%2Fintegrity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqtylab%2Fintegrity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eqtylab","download_url":"https://codeload.github.com/eqtylab/integrity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqtylab%2Fintegrity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31314380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-02T19:36:04.984Z","updated_at":"2026-04-02T19:36:05.751Z","avatar_url":"https://github.com/eqtylab.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nLibrary for data integrity, signing, verifiable credentials, and content-addressable storage.\n\nThis crate provides tools for creating tamper-evident data structures using cryptographic hashing, digital signatures, and W3C standards like Verifiable Credentials and JSON-LD.\n\n## Feature Flags\n\nSigner and blob backends are now split into dedicated workspace crates and are feature-gated.\n\n- Blob features:\n  - `blob-local`\n  - `blob-memory`\n  - `blob-s3`\n  - `blob-gcs`\n  - `blob-azure`\n  - `blob-all`\n- Signer features:\n  - `signer-ed25519`\n  - `signer-p256`\n  - `signer-secp256k1`\n  - `signer-auth-service`\n  - `signer-vcomp-notary`\n  - `signer-akv`\n  - `signer-yubihsm`\n  - `signer-yubikey`\n  - `signer-slh-dsa`\n  - `signer-all`\n\nDefault features include local blob backends (`blob-local`, `blob-memory`) and local software signers (`signer-ed25519`, `signer-p256`, `signer-secp256k1`).\n\n\n## FFI (C ABI)\n\nThe 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.\n\n- Public header: `include/integrity_ffi.h`\n- ABI version functions:\n  - `ig_abi_version_major`\n  - `ig_abi_version_minor`\n  - `ig_abi_version_patch`\n  - `ig_abi_version_string`\n- Runtime and handle model:\n  - Create one runtime with `ig_runtime_new`\n  - Create and reuse opaque handles (signers, blob stores)\n  - Release memory with `ig_string_free`, `ig_error_free`, `ig_bytes_free`\n  - Release handles with their corresponding `*_free` function\n\nThe current ABI version is `0.2.0`.\n\n### Native Artifact Releases\n\nGitHub Actions can publish prebuilt native FFI artifacts for each supported system:\n\n- Linux x86_64 (`libintegrity_ffi.so`)\n- macOS 14 aarch64 (`libintegrity_ffi.dylib`)\n- macOS 15 x86_64 (`libintegrity_ffi.dylib`)\n- macOS 15 aarch64 (`libintegrity_ffi.dylib`)\n\nWorkflow: `.github/workflows/release-native-ffi.yml`\n\n- Push a version tag like `v0.2.0` to build and attach release assets to that GitHub Release.\n- Use `workflow_dispatch` to run the build matrix and collect workflow artifacts without publishing a Release.\n\nBuild native FFI artifacts locally:\n\n```bash\ncargo build -p integrity-ffi --release --locked --features \"blob-all,signer-all\"\n```\n\n# Development\n\nNix flake creates a dev environment with all the dependencies.\n\n`prek` is used for formatting and linting.\n\n## Just Commands\n\nThe project uses [Just](https://github.com/casey/just) for common development tasks.\n\n```present just --list\nAvailable recipes:\n    build                  # Build the project for native target\n    build-wasm             # Build WebAssembly package with wasm-pack\n    ci                     # Run all CI checks (format, build, lint, test)\n    fix                    # Auto-fix clippy warnings where possible\n    fmt                    # Format Rust code using rustfmt\n    fmt-check              # Check if code is formatted correctly without modifying files\n    lint                   # Run clippy lints to check code quality\n    lint-docs              # Check that all public items have documentation\n    pre-commit             # Run all prek pre-commit hooks on all files\n    readme-check           # Check if README.md is up to date with auto-generated content\n    readme-update          # Update README.md with auto-generated content (Justfile commands, etc.)\n    test                   # Run unit tests with cargo\n    test-wasm              # Run WASM tests in Node.js and browsers (Chrome, Firefox) Note: for macOS test Safari with --safari\n    update-static-contexts # Rebuild static JSON-LD context files\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feqtylab%2Fintegrity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feqtylab%2Fintegrity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feqtylab%2Fintegrity/lists"}