ftbfs
[oweals/gnunet.git] / src / secretsharing / secretsharing.h
index 2327214109015670c1cd7b45d1833c1db4349459..d3f054919b0867679d3dc59f545f95276d8f7dc7 100644 (file)
@@ -1,21 +1,21 @@
 /*
      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
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-     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.
+     SPDX-License-Identifier: AGPL3.0-or-later
 */
 
 /**
@@ -38,9 +38,9 @@ GNUNET_NETWORK_STRUCT_BEGIN
 struct GNUNET_SECRETSHARING_FieldElement
 {
   /**
-   * Value of an element in <elgamal_g>.
+   * Value of an element in &lt;elgamal_g&gt;.
    */
-  unsigned char bits[GNUNET_SECRETSHARING_KEY_BITS / 8];
+  unsigned char bits[GNUNET_SECRETSHARING_ELGAMAL_BITS / 8];
 };
 
 
@@ -56,6 +56,11 @@ struct GNUNET_SECRETSHARING_CreateMessage
    */
   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.
    */
@@ -107,6 +112,10 @@ struct GNUNET_SECRETSHARING_ShareHeaderNBO
 };
 
 
+/**
+ * Notify the client that then threshold secret has been
+ * established.
+ */
 struct GNUNET_SECRETSHARING_SecretReadyMessage
 {
   /**
@@ -126,6 +135,11 @@ struct GNUNET_SECRETSHARING_DecryptRequestMessage
    */
   struct GNUNET_MessageHeader header;
 
+  /**
+   * Until when should the decryption start?
+   */
+  struct GNUNET_TIME_AbsoluteNBO start;
+
   /**
    * Until when should the decryption be finished?
    */
@@ -143,7 +157,7 @@ struct GNUNET_SECRETSHARING_DecryptRequestMessage
 struct GNUNET_SECRETSHARING_DecryptResponseMessage
 {
   /**
-   * Type: GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_DECRYPT_DONE
+   * Type: #GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_DECRYPT_DONE
    */
   struct GNUNET_MessageHeader header;
 
@@ -151,7 +165,7 @@ struct GNUNET_SECRETSHARING_DecryptResponseMessage
    * Zero if decryption failed, non-zero if decryption succeeded.
    * If the decryption failed, plaintext is also zero.
    */
-  uint32_t success;
+  uint32_t success GNUNET_PACKED;
 
   /**
    * Decrypted plaintext.
@@ -184,8 +198,8 @@ struct GNUNET_SECRETSHARING_Share
   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;
 
@@ -195,14 +209,15 @@ struct GNUNET_SECRETSHARING_Share
   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.