X-Git-Url: https://git.siccegge.de//index.cgi?a=blobdiff_plain;f=include%2FDIPE.h;h=a983fc2f7cde4ce9d1ac064bcf4c480dc606dde8;hb=5611c662936ee7c02b5b4d6e7ede3cbde8dfde92;hp=87ebab808cc0ec8ef473f1a433366e53609a0085;hpb=006e87bc592a4e6eabea4f7f9caab8e218ebfd85;p=software%2FDIPE.git diff --git a/include/DIPE.h b/include/DIPE.h index 87ebab8..a983fc2 100644 --- a/include/DIPE.h +++ b/include/DIPE.h @@ -7,16 +7,29 @@ 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_keygen(dipe_param_t param, dipe_master_secretkey_t msk, const char* cid, element_t* y, dipe_secretkey_t* sk); + void dipe_encrypt(dipe_param_t param, size_t mpkcount, dipe_master_publickey_t* mpk, size_t threshold, element_t* x, size_t ptxt_len, char* ptxt, size_t ctxt_len, char* ctxt); + size_t dipe_decrypt(dipe_param_t param, size_t skcount, dipe_secretkey_t* sk, const 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, size_t shares); + + void dipe_encap(dipe_param_t param, size_t mpkcount, dipe_master_publickey_t* mpk, size_t threshold, element_t* x, + element_t ptxt, dipe_ctxt_t* ctxt); + void dipe_decap(dipe_param_t param, size_t skcount, dipe_secretkey_t* sk, const 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, size_t shares, 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);