/*
This file is part of GNUnet
- (C) 2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2013 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
- * @file include/gnunet_secretsharing_service.h
- * @brief verifiable additive secret sharing and cooperative decryption
* @author Florian Dold
+ *
+ * @file
+ * Verifiable additive secret sharing and cooperative decryption
+ *
+ * @defgroup secretsharing Secret Sharing service
+ * Verifiable additive secret sharing and cooperative decryption.
+ * @{
*/
#ifndef GNUNET_SECRETSHARING_SERVICE_H
#endif
#endif
-#include "platform.h"
#include "gnunet_common.h"
#include "gnunet_time_lib.h"
#include "gnunet_configuration_lib.h"
* @param ready_peers peers that successfuly participated in establishing
* the shared secret
*/
-typedef void (*GNUNET_SECRETSHARING_SecretReadyCallback) (void *cls,
- struct GNUNET_SECRETSHARING_Share *my_share,
- struct GNUNET_SECRETSHARING_PublicKey *public_key,
- unsigned int num_ready_peers,
- struct GNUNET_PeerIdentity *ready_peers);
+typedef void
+(*GNUNET_SECRETSHARING_SecretReadyCallback) (void *cls,
+ struct GNUNET_SECRETSHARING_Share *my_share,
+ struct GNUNET_SECRETSHARING_PublicKey *public_key,
+ unsigned int num_ready_peers,
+ const struct GNUNET_PeerIdentity *ready_peers);
/**
* @param data decrypted value
* @param data_size number of bytes in @a data
*/
-typedef void (*GNUNET_SECRETSHARING_DecryptCallback) (void *cls,
- const struct GNUNET_SECRETSHARING_Plaintext *plaintext);
+typedef void
+(*GNUNET_SECRETSHARING_DecryptCallback) (void *cls,
+ const struct GNUNET_SECRETSHARING_Plaintext *plaintext);
/**
* with the other peers.
*
* @param cfg configuration to use
- * @param num_peers number of peers in 'peers'
+ * @param num_peers number of peers in @a peers
* @param peers array of peers that we will share secrets with, can optionally contain the local peer
* @param session_id unique session id
+ * @param start When should all peers be available for sharing the secret?
+ * Random number generation can take place before the start time.
* @param deadline point in time where the session must be established; taken as hint
* by underlying consensus sessions
* @param threshold minimum number of peers that must cooperate to decrypt a value
* @param cb called when the secret has been established
- * @param cls closure for cb
+ * @param cls closure for @a cb
*/
struct GNUNET_SECRETSHARING_Session *
GNUNET_SECRETSHARING_create_session (const struct GNUNET_CONFIGURATION_Handle *cfg,
unsigned int num_peers,
const struct GNUNET_PeerIdentity *peers,
const struct GNUNET_HashCode *session_id,
+ struct GNUNET_TIME_Absolute start,
struct GNUNET_TIME_Absolute deadline,
unsigned int threshold,
GNUNET_SECRETSHARING_SecretReadyCallback cb,
* Destroy a secret sharing session.
* The secret ready callback will not be called.
*
- * @param session session to destroy
+ * @param s session to destroy
*/
void
-GNUNET_SECRETSHARING_session_destroy (struct GNUNET_SECRETSHARING_Session *session);
+GNUNET_SECRETSHARING_session_destroy (struct GNUNET_SECRETSHARING_Session *s);
/**
* @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 start By when should the cooperation for decryption start?
* @param deadline By when should the decryption be finished?
* @param decrypt_cb_cls closure for @a decrypt_cb
* @return handle to cancel the operation
GNUNET_SECRETSHARING_decrypt (const struct GNUNET_CONFIGURATION_Handle *cfg,
struct GNUNET_SECRETSHARING_Share *share,
const struct GNUNET_SECRETSHARING_Ciphertext *ciphertext,
+ struct GNUNET_TIME_Absolute start,
struct GNUNET_TIME_Absolute deadline,
GNUNET_SECRETSHARING_DecryptCallback decrypt_cb,
void *decrypt_cb_cls);
* 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 decryption_handle decryption to cancel
+ * @param dh to cancel
*/
void
-GNUNET_SECRETSHARING_decrypt_cancel (struct GNUNET_SECRETSHARING_DecryptionHandle *decryption_handle);
+GNUNET_SECRETSHARING_decrypt_cancel (struct GNUNET_SECRETSHARING_DecryptionHandle *dh);
/**
int64_t exponent);
-
-
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif
#endif
#endif
+
+/** @} */ /* end of group */