+.. c:function:: void dipe_master_keygen(dipe_param_t param, size_t dimension, dipe_master_publickey_t* pk, dipe_master_secretkey_t* sk)
+
+ Generate a keypair for an authority. The `dimension` is supposed to
+ be a system parameter and needs to be consistently used for all
+ operations. The function allocates data for the `pk` and `sk`
+ structures that need to be freed with
+ :c:func:`dipe_free_master_publickey` and
+ :c:func:`dipe_free_master_secretkey` respectively.
+
+ :param dipe_param_t param: Public parameters
+ :param size_t dimension: Size of the vector used for inner-product policy
+ :param dipe_master_publickey_t* pk: Pointer to the public-key structure to be generated
+ :param dipe_master_secretkey_t* sk: Pointer to the secret-key structure to be generated
+
+.. c:function:: void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, element_t* y, dipe_secretkey_t* sk)
+
+ Issues a secretkey for a used identified by the 16-bit string
+ `cid`. The element vector `y` is expected to be an array of
+ `dimension` many elements. The function allocates data for the `sk`
+ structure that need to be freed with :c:func:`dipe_free_secretkey`.
+
+ :param char* cid: Client ID, expected to be 16 bytes