]> git.siccegge.de Git - software/DIPE.git/blobdiff - include/DIPE.h
Add secret sharing
[software/DIPE.git] / include / DIPE.h
index 87ebab808cc0ec8ef473f1a433366e53609a0085..b9889afe33b94dce902315935e2f2c62761eae07 100644 (file)
@@ -7,16 +7,27 @@ extern "C" {
        typedef struct dipe_master_secretkey* dipe_master_secretkey_t;
        typedef struct dipe_secretkey* dipe_secretkey_t;
        typedef struct dipe_ctxt* dipe_ctxt_t;
-       
+
        void dipe_init(FILE* configfp, dipe_param_t* param);
        pairing_t* dipe_get_pairing(dipe_param_t param);
-       
+
        void dipe_master_keygen(dipe_param_t param, size_t dimension, dipe_master_publickey_t* pk, dipe_master_secretkey_t* sk);
        void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, element_t* y, dipe_secretkey_t* sk);
-       
-       void dipe_encrypt(dipe_param_t param, dipe_master_publickey_t mpk, element_t* x, element_t ptxt, dipe_ctxt_t* ctxt);
-       void dipe_decrypt(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t* y, dipe_ctxt_t ctxt, element_t ptxt);
 
+       void dipe_encrypt(dipe_param_t param, dipe_master_publickey_t mpk, element_t* x, size_t ptxt_len, char* ptxt, size_t ctxt_len, char* ctxt);
+       size_t dipe_decrypt(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t* y, size_t ctxt_len, char* ctxt, char* ptxt);
+       size_t dipe_ciphertext_overhead(dipe_param_t param, size_t dimension);
+
+       void dipe_encap(dipe_param_t param, dipe_master_publickey_t mpk, element_t* x, element_t ptxt, dipe_ctxt_t* ctxt);
+       void dipe_decap(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t* y, dipe_ctxt_t ctxt, element_t ptxt);
+
+       void dipe_ss_share(dipe_param_t param, size_t id_size, element_t* ids, size_t fid_size, element_t* fake_ids, size_t share_size, element_t** shares,
+                          element_t* secret, element_t** dummy_shares);
+       void dipe_ss_recover(dipe_param_t param, size_t id_size, element_t* ids, size_t share_size, element_t** shares, element_t* secret);
+
+       size_t dipe_serialize_ctxt(dipe_param_t param, dipe_ctxt_t ctxt, uint8_t* buffer);
+       size_t dipe_deserialize_ctxt(dipe_param_t param, size_t dimension, dipe_ctxt_t* ctxt, uint8_t* buffer);
+       
        void dipe_free_param(dipe_param_t param);
        void dipe_free_master_secretkey(dipe_master_secretkey_t sk);
        void dipe_free_master_publickey(dipe_master_publickey_t pk);