5 typedef struct dipe_param
* dipe_param_t
;
6 typedef struct dipe_master_publickey
* dipe_master_publickey_t
;
7 typedef struct dipe_master_secretkey
* dipe_master_secretkey_t
;
8 typedef struct dipe_secretkey
* dipe_secretkey_t
;
9 typedef struct dipe_ctxt
* dipe_ctxt_t
;
11 void dipe_init(FILE* configfp
, dipe_param_t
* param
);
12 pairing_t
* dipe_get_pairing(dipe_param_t param
);
14 void dipe_master_keygen(dipe_param_t param
, size_t dimension
, dipe_master_publickey_t
* pk
, dipe_master_secretkey_t
* sk
);
15 void dipe_keygen(dipe_param_t param
, dipe_master_secretkey_t msk
, char* cid
, element_t
* y
, dipe_secretkey_t
* sk
);
17 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
);
18 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
);
19 size_t dipe_ciphertext_overhead(dipe_param_t param
, size_t dimension
);
21 void dipe_encap(dipe_param_t param
, dipe_master_publickey_t mpk
, element_t
* x
, element_t ptxt
, dipe_ctxt_t
* ctxt
);
22 void dipe_decap(dipe_param_t param
, dipe_secretkey_t sk
, char* cid
, element_t
* y
, dipe_ctxt_t ctxt
, element_t ptxt
);
24 size_t dipe_serialize_ctxt(dipe_param_t param
, dipe_ctxt_t ctxt
, uint8_t* buffer
);
25 size_t dipe_deserialize_ctxt(dipe_param_t param
, size_t dimension
, dipe_ctxt_t
* ctxt
, uint8_t* buffer
);
27 void dipe_free_param(dipe_param_t param
);
28 void dipe_free_master_secretkey(dipe_master_secretkey_t sk
);
29 void dipe_free_master_publickey(dipe_master_publickey_t pk
);
30 void dipe_free_secretkey(dipe_secretkey_t sk
);
31 void dipe_free_ctxt(dipe_ctxt_t ctxt
);