X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=include%2Fcontrac%2Fcontrac.h;h=e9a059e00ca04545a577e55735c6810674f8c35b;hb=f8c83387f5abffa94e59332382441a71f5b95545;hp=48f5e642747fbd8f6f9a8950de7a91f9ca88a72d;hpb=79942abab927241b65a29a8a30d71b8efe6b6d94;p=libcontrac.git diff --git a/include/contrac/contrac.h b/include/contrac/contrac.h index 48f5e64..e9a059e 100644 --- a/include/contrac/contrac.h +++ b/include/contrac/contrac.h @@ -1,26 +1,88 @@ -/** \ingroup contrac +/** \ingroup KeyGeneration * @file - * @author David Llewellyn-Jones + * @author David Llewellyn-Jones * @version $(VERSION) * * @section LICENSE * + * Copyright David Llewellyn-Jones, 2020 + * Released under the GPLv2. * - * - * @brief + * @brief Core Contact Tracing functionality * @section DESCRIPTION * + * This class provides the core Contact Tracing functionality. It provides an + * interfaces for: + * 1. Generating a random Tracing Key. + * 2. Generating a Daily Tracing Key based on the current day number. + * 3. Generating a Rolling Proximity Identifier based on the current time + * interval number. * + * Values can be extracted and set in binary or base64 format. * */ +/** \addtogroup KeyGeneration + * @{ + */ + #ifndef __CONTRAC_H #define __CONTRAC_H +// Includes + +#include +#include + +// Defines + +// Data sizes in bytes + +/** + * The size in bytes of a Tracing Key in binary format + */ +#define TK_SIZE (32) + +/** + * The size in bytes of a Tracing Key in base64 format + */ +#define TK_SIZE_BASE64 (44) + +// Structures + +/** + * An opaque structure for storing the main state. + * + * The internal structure can be found in contrac.c + */ typedef struct _Contrac Contrac; +// Function prototypes + Contrac * contrac_new(); void contrac_delete(Contrac * data); +bool contrac_generate_tracing_key(Contrac * data); +bool contrac_set_day_number(Contrac * data, uint32_t day_number); +bool contrac_set_time_interval_number(Contrac * data, uint8_t time_interval_number); +bool contrac_update_current_time(Contrac * data); +bool contrac_get_initialised(Contrac const * data); + +unsigned char const * contrac_get_tracing_key(Contrac const * data); +void contrac_get_tracing_key_base64(Contrac const * data, char * base64); + +void contrac_set_tracing_key(Contrac * data, unsigned char const * tracing_key); +bool contrac_set_tracing_key_base64(Contrac * data, char const * tracing_key); + +unsigned char const * contrac_get_daily_key(Contrac const * data); +void contrac_get_daily_key_base64(Contrac const * data, char * base64); + +unsigned char const * contrac_get_proximity_id(Contrac const * data); +void contrac_get_proximity_id_base64(Contrac const * data, char * base64); + +// Function definitions + #endif // __CONTRAC_H +/** @} addtogroup KeyGeneration */ +