Expand description
This crate implements the apple/google proximity contact tracing.
The version of this implementation is the initial reference spec from April 2020.
§Features
chrono: Adds timestamp operations to all structs (on by default)serde: Adds serde support (impliesbase64)base64: Adds base64 encoding/decoding throughDisplayandFromStr
§Broadcast Example
To broadcast one needs a tracing key and the rolling proximity identifier (RPI) for a given time. The RPI is normally created from the daily tracing key but there is a shortcut to derive it automatically:
use contact_tracing::{TracingKey, DailyTracingKey, Rpi};
let tkey = TracingKey::unique();
let rpi = Rpi::for_now(&tkey);§Infection Checking Example
Infection checking uses the daily tracing keys directly:
use contact_tracing::{TracingKey, DailyTracingKey, Rpi};
// normally these would come from the internet somewhere
let tkey = TracingKey::unique();
let dtkey = DailyTracingKey::for_today(&tkey);
for (tin, rpi) in dtkey.iter_rpis().enumerate() {
// check your database of contacts against the TIN and RPIs generated
// for each daily tracing key downloaded. The TIN should be within
// some reasonable window of the timestamp you captured.
}Structs§
- Daily
Tracing Key - A compact representation of contact numbers.
- Invalid
Daily Tracing Key - Returned if a daily tracing key is invalid.
- Invalid
Rpi - Raised if a RPI is invalid.
- Invalid
Tracing Key - Raised if a tracing key is invalid.
- Rpi
- A Rolling Proximity Identifier.
- Tracing
Key - A compact representation of contact numbers.
Functions§
- day_
number_ for_ timestamp - Returns the day number for a timestamp.
- tin_
for_ timestamp - Returns the TIN for a timestamp.
- tin_
for_ timestamp_ checked - Returns the TIN for a timestamp in a day.