Skip to content

divviup/libprio-rs

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2e5b823 · Oct 23, 2023
Sep 5, 2023
Sep 8, 2023
Sep 12, 2023
Jul 5, 2022
Oct 5, 2023
Oct 23, 2023
Sep 6, 2023
Oct 5, 2021
Oct 10, 2023
Oct 10, 2023
Mar 31, 2021
Sep 13, 2023

Repository files navigation

libprio-rs

Build Status Latest Version Docs badge

Pure Rust implementation of Prio, a system for Private, Robust, and Scalable Computation of Aggregate Statistics.

Exposure Notifications Private Analytics

This crate was used in the Exposure Notifications Private Analytics system. This is referred to in various places as Prio v2. See prio-server or the ENPA whitepaper for more details.

Verifiable Distributed Aggregation Function

This crate also implements a Verifiable Distributed Aggregation Function (VDAF) called "Prio3", implemented in the vdaf module, allowing Prio to be used in the Distributed Aggregation Protocol protocol being developed in the PPM working group at the IETF. This support is still evolving along with the DAP and VDAF specifications.

Draft versions and release branches

The main branch is under continuous development and will usually be partway between VDAF drafts. libprio uses stable release branches to maintain implementations of different VDAF draft versions. Crate prio version x.y.z is released from a corresponding release/x.y branch. We try to maintain Rust SemVer compatibility, meaning that API breaks only happen on minor version increases (e.g., 0.10 to 0.11).

Crate version Git branch VDAF draft version DAP draft version Conforms to specification? Status
0.8 release/0.8 draft-irtf-cfrg-vdaf-01 draft-ietf-ppm-dap-01 Yes Unmaintained as of March 28, 2023
0.9 release/0.9 draft-irtf-cfrg-vdaf-03 draft-ietf-ppm-dap-02 and draft-ietf-ppm-dap-03 Yes Unmaintained as of September 22, 2022
0.10 release/0.10 draft-irtf-cfrg-vdaf-03 draft-ietf-ppm-dap-02 and draft-ietf-ppm-dap-03 Yes Supported
0.11 release/0.11 draft-irtf-cfrg-vdaf-04 N/A Yes Unmaintained
0.12 release/0.12 draft-irtf-cfrg-vdaf-05 draft-ietf-ppm-dap-04 Yes Supported
0.13 release/0.13 draft-irtf-cfrg-vdaf-06 draft-ietf-ppm-dap-05 Yes Unmaintained
0.14 release/0.14 draft-irtf-cfrg-vdaf-06 draft-ietf-ppm-dap-05 Yes Unmaintained
0.15 main draft-irtf-cfrg-vdaf-07 draft-ietf-ppm-dap-06 Yes Supported

Cargo Features

This crate defines the following feature flags:

Name Default feature? Description
crypto-dependencies Yes Enables dependencies on various RustCrypto crates, and uses them to implement XofShake128 to support VDAFs.
experimental No Certain experimental APIs are guarded by this feature. They may undergo breaking changes in future patch releases, as an exception to semantic versioning.
multithreaded No Enables certain Prio3 VDAF implementations that use rayon for parallelization of gadget evaluations.
prio2 No Enables the Prio v2 API, and a VDAF based on the Prio2 system.