]> git.siccegge.de Git - software/DIPE.git/blobdiff - doc/source/api.rst
Code drop
[software/DIPE.git] / doc / source / api.rst
diff --git a/doc/source/api.rst b/doc/source/api.rst
new file mode 100644 (file)
index 0000000..3bb3d6e
--- /dev/null
@@ -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);
+
+
+