X-Git-Url: https://git.siccegge.de//index.cgi?p=software%2FDIPE.git;a=blobdiff_plain;f=doc%2Fsource%2Fapi.rst;fp=doc%2Fsource%2Fapi.rst;h=3bb3d6e0fb7f4f4175f252e195b6ed17f2d17a23;hp=0000000000000000000000000000000000000000;hb=006e87bc592a4e6eabea4f7f9caab8e218ebfd85;hpb=5cb1a82c4ddb3fd578e6b99cce46406e1a6b357f diff --git a/doc/source/api.rst b/doc/source/api.rst new file mode 100644 index 0000000..3bb3d6e --- /dev/null +++ b/doc/source/api.rst @@ -0,0 +1,57 @@ +API Documentation +================= + +Types +----- + +.. c:type:: dipe_param_t + + Stores public parameters used in DIPE. Initialized by :c:func:`dipe_init()` and freed by :c:func:`dipe_free_param` + +.. c:type:: dipe_master_secretkey_t +.. c:type:: dipe_master_publickey_t +.. c:type:: dipe_secretkey_t +.. c:type:: dipe_ctxt_t + +Functions +--------- + +Initialization +~~~~~~~~~~~~~~ + +.. c:function:: void dipe_init(FILE* configfp, dipe_param_t* param) + + initializes public parameters as well as the PBC library + + :param configfp: File structure holding the pairing group definition as understood by PBC + +Key Generation +~~~~~~~~~~~~~~ + +.. c:function:: void dipe_master_keygen(dipe_param_t param, size_t dimension, dipe_master_publickey_t* pk, dipe_master_secretkey_t* sk); + +.. c:function:: void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, element_t* y, dipe_secretkey_t* sk); + + :param cid: Client ID, expected to be 16 bytes + :param y: Policy vector for the secret key that is to be generated. Must match with the dimensions when `msk` was generated + :type y: Array of Zn elements + +En/Decryption +~~~~~~~~~~~~~ + +.. c:function:: void dipe_encrypt(dipe_param_t param, dipe_master_publickey mpk, element_t* x, element_t ptxt, dipe_ctxt_t* ctxt) +.. c:function:: void dipe_decrypt(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t* y, dipe_ctxt_t ctxt, element_t* ptxt) + + :param result: It is the responsibility of the caller to initialize the element to GT and to free it after usage + :type result: :c:type:`element_t` + +Memory Management +~~~~~~~~~~~~~~~~~ + +.. c:function:: void dipe_free_param(dipe_param_t param); +.. c:function:: void dipe_free_master_secretkey(dipe_master_secretkey_t sk); +.. c:function:: void dipe_free_master_publickey(dipe_master_publickey_t pk); +.. c:function:: void dipe_free_secretkey(dipe_secretkey_t sk); + + +