struct GNUNET_SECRETSHARING_FieldElement
{
/**
- * Value of an element in <elgamal_g>.
+ * Value of an element in <elgamal_g>.
*/
- unsigned char bits[GNUNET_SECRETSHARING_KEY_BITS / 8];
+ unsigned char bits[GNUNET_SECRETSHARING_ELGAMAL_BITS / 8];
};
*/
struct GNUNET_HashCode session_id GNUNET_PACKED;
+ /**
+ * Start time for communication with the other peers.
+ */
+ struct GNUNET_TIME_AbsoluteNBO start;
+
/**
* Deadline for the establishment of the crypto system.
*/
};
+/**
+ * Notify the client that then threshold secret has been
+ * established.
+ */
struct GNUNET_SECRETSHARING_SecretReadyMessage
{
/**
*/
struct GNUNET_MessageHeader header;
+ /**
+ * Until when should the decryption start?
+ */
+ struct GNUNET_TIME_AbsoluteNBO start;
+
/**
* Until when should the decryption be finished?
*/
uint16_t my_peer;
/**
- * Public key. Must correspond to the product of
- * the homomorphic share commitments.
+ * Public key. Computed from the
+ * exponentiated coefficients.
*/
struct GNUNET_SECRETSHARING_PublicKey public_key;
struct GNUNET_SECRETSHARING_FieldElement my_share;
/**
- * Peer identities (includes 'my_peer')
+ * Peer identities (includes 'my_peer')
*/
struct GNUNET_PeerIdentity *peers;
/*
- * Homomorphic commitments to each peer's share (includes 'my_peer')
+ * For each peer, store elgamal_g to the peer's
+ * share.
*/
- struct GNUNET_SECRETSHARING_FieldElement *hom_share_commitments;
+ struct GNUNET_SECRETSHARING_FieldElement *sigmas;
/*
* Original indices of peers from the DKG round.