188 releases

new 0.7.27 Jul 24, 2024
0.7.21 Jun 25, 2024
0.7.1 Mar 21, 2024
0.6.7 Dec 14, 2023
0.1.4 Jul 26, 2022

#1649 in Network programming

Download history 303/week @ 2024-04-03 687/week @ 2024-04-10 152/week @ 2024-04-17 304/week @ 2024-04-24 388/week @ 2024-05-01 500/week @ 2024-05-08 860/week @ 2024-05-15 406/week @ 2024-05-22 573/week @ 2024-05-29 390/week @ 2024-06-05 1052/week @ 2024-06-12 530/week @ 2024-06-19 325/week @ 2024-06-26 293/week @ 2024-07-03 300/week @ 2024-07-10 391/week @ 2024-07-17

1,391 downloads per month
Used in divviup-cli

MPL-2.0 license

425KB
10K SLoC

janus_client

Build Status latest version docs badge

janus_client is a self-contained implementation of the Distributed Aggregation Protocol's client role. It is intended for use with Janus and Divvi Up, ISRG's privacy-respecting metrics service. janus_client is published to crates.io by a GitHub Action that runs when a janus release is created.


lib.rs:

A DAP client

This library implements the client role of the DAP-PPM protocol. It uploads measurements to two DAP aggregator servers which in turn compute a statistical aggregate over data from many clients, while preserving the privacy of each client's data.

Examples

use url::Url;
use prio::vdaf::prio3::Prio3Histogram;
use janus_messages::{Duration, TaskId};
use std::str::FromStr;

#[tokio::main]
async fn main() {
    let leader_url = Url::parse("https://leader.example.com/").unwrap();
    let helper_url = Url::parse("https://helper.example.com/").unwrap();
    let vdaf = Prio3Histogram::new_histogram(
        2,
        12,
        4
    ).unwrap();
    let taskid = "rc0jgm1MHH6Q7fcI4ZdNUxas9DAYLcJFK5CL7xUl-gU";
    let task = TaskId::from_str(taskid).unwrap();

    let client = janus_client::Client::new(
        task,
        leader_url,
        helper_url,
        Duration::from_seconds(300),
        vdaf
    )
    .await
    .unwrap();
    client.upload(&5).await.unwrap();
}

Dependencies

~37–52MB
~1M SLoC