diff options
author | Florian Dold <florian.dold@gmail.com> | 2014-01-07 00:14:11 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2014-01-07 00:14:11 +0000 |
commit | 6a86f1fc448e219364d547d167d0a655eff2b531 (patch) | |
tree | 681e2a680f33f40da4d2235089946a9e4aa0089a /src/include/gnunet_secretsharing_service.h | |
parent | 4d1b8809fe1df0f2524abc0e65f2f770c88adbdf (diff) |
- profiler actually added to svn
- test for signature segfault with secretsharing
- rudimentary implementation of cooperative decryption
- consensus uses absolute time instead of relative
- working DKG without zero knowledge proofs
Diffstat (limited to 'src/include/gnunet_secretsharing_service.h')
-rw-r--r-- | src/include/gnunet_secretsharing_service.h | 56 |
1 files changed, 27 insertions, 29 deletions
diff --git a/src/include/gnunet_secretsharing_service.h b/src/include/gnunet_secretsharing_service.h index 7eb372ef53..8569e15ea3 100644 --- a/src/include/gnunet_secretsharing_service.h +++ b/src/include/gnunet_secretsharing_service.h @@ -46,6 +46,8 @@ extern "C" * Number of bits for secretsharing keys. * Must be smaller than the Pallier key size used internally * by the secretsharing service. + * When changing this value, other internal parameters must also + * be adjusted. */ #define GNUNET_SECRETSHARING_KEY_BITS 1024 @@ -58,8 +60,8 @@ struct GNUNET_SECRETSHARING_Session; /** * Share of a secret shared with a group of peers. - * Contains both the share and information about the peers that have - * the other parts of the share. + * Contains the secret share itself, the public key, the list of peers, and the + * exponential commitments to the secret shares of the other peers. */ struct GNUNET_SECRETSHARING_Share; @@ -84,7 +86,8 @@ struct GNUNET_SECRETSHARING_PublicKey */ struct GNUNET_SECRETSHARING_Ciphertext { - uint32_t bits[2 * GNUNET_SECRETSHARING_KEY_BITS / 8 / sizeof (uint32_t)]; + uint32_t c1_bits[GNUNET_SECRETSHARING_KEY_BITS / 8 / sizeof (uint32_t)]; + uint32_t c2_bits[GNUNET_SECRETSHARING_KEY_BITS / 8 / sizeof (uint32_t)]; }; @@ -97,7 +100,7 @@ struct GNUNET_SECRETSHARING_Message /** * Value of the message. */ - gcry_mpi_t value; + uint32_t bits[GNUNET_SECRETSHARING_KEY_BITS / 8 / sizeof (uint32_t)]; }; @@ -206,15 +209,19 @@ GNUNET_SECRETSHARING_encrypt (struct GNUNET_SECRETSHARING_PublicKey *public_key, * When the operation is canceled, the decrypt_cb is not called anymore, but the calling * peer may already have irrevocably contributed his share for the decryption of the value. * + * @param cfg configuration to use * @param share our secret share to use for decryption * @param ciphertext ciphertext to publish in order to decrypt it (if enough peers agree) * @param decrypt_cb callback called once the decryption succeeded + * @param deadline By when should the decryption be finished? * @param decrypt_cb_cls closure for @a decrypt_cb * @return handle to cancel the operation */ struct GNUNET_SECRETSHARING_DecryptionHandle * -GNUNET_SECRETSHARING_decrypt (struct GNUNET_SECRETSHARING_Share *share, +GNUNET_SECRETSHARING_decrypt (struct GNUNET_CONFIGURATION_Handle *cfg, + struct GNUNET_SECRETSHARING_Share *share, struct GNUNET_SECRETSHARING_Ciphertext *ciphertext, + struct GNUNET_TIME_Absolute deadline, GNUNET_SECRETSHARING_DecryptCallback decrypt_cb, void *decrypt_cb_cls); @@ -234,41 +241,32 @@ GNUNET_SECRETSHARING_decrypt_cancel (struct GNUNET_SECRETSHARING_DecryptionHandl /** * Read a share from its binary representation. * - * @param data binary representation of the share - * @param len length of @a data - * @return the share, or NULL on error + * @param data Binary representation of the share. + * @param len Length of @a data. + * @param[out] readlen Number of bytes read, + * ignored if NULL. + * @return The share, or NULL on error. */ struct GNUNET_SECRETSHARING_Share * -GNUNET_SECRETSHARING_share_read (void *data, size_t len); +GNUNET_SECRETSHARING_share_read (const void *data, size_t len, size_t *readlen); /** - * Convert a share to its binary representation. Use - * #GNUNET_SECRETSHARING_share_size to get the necessary size for the binary - * representation. + * Convert a share to its binary representation. + * Can be called with a NULL @a buf to get the size of the share. * - * @param share share to write - * @param buf buffer to write to - * @param buflen number of writable bytes in @a buffer - * @param[out] writelen pointer to store number of bytes written, - * ignored if NULL - * @return GNUNET_YES on success, GNUNET_NO on failure + * @param share Share to write. + * @param buf Buffer to write to. + * @param buflen Number of writable bytes in @a buf. + * @param[out] writelen Pointer to store number of bytes written, + * ignored if NULL. + * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure. */ int -GNUNET_SECRETSHARING_share_write (struct GNUNET_SECRETSHARING_Share *share, +GNUNET_SECRETSHARING_share_write (const struct GNUNET_SECRETSHARING_Share *share, void *buf, size_t buflen, size_t *writelen); -/** - * Get the number of bytes necessary to represent the given share. - * - * @param share share - * @return number of bytes necessary to represent @a share - */ -size_t -GNUNET_SECRETSHARING_share_size (struct GNUNET_SECRETSHARING_Share *share); - - #if 0 /* keep Emacsens' auto-indent happy */ { |