ftbfs
[oweals/gnunet.git] / src / secretsharing / secretsharing_protocol.h
index b8904ca242d321e0fc65f2a0ccfe093269edc31d..f05d27e29f873b1462c1bb2df9dcfa9cb8aef93d 100644 (file)
@@ -1,21 +1,21 @@
 /*
       This file is part of GNUnet
-      (C) 2012 Christian Grothoff (and other contributing authors)
+      Copyright (C) 2012 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
 */
 
 
 #include "gnunet_protocols.h"
 #include "secretsharing.h"
 
-/**
- * Bit length used for the Paillier crypto system.
- */
-#define PAILLIER_BITS 2048
 
 GNUNET_NETWORK_STRUCT_BEGIN
 
 
-/**
- * Public key for the Paillier crypto system.
- */
-struct PaillierPublicKey
-{
-  /**
-   * Network order representation of the
-   * g-component.
-   */
-  uint32_t g[PAILLIER_BITS / 8 / sizeof (uint32_t)];
-
-  /**
-   * Network order representation of the
-   * n-component.
-   */
-  uint32_t n[PAILLIER_BITS / 8 / sizeof (uint32_t)];
-};
-
-
 /**
  * Consensus element data used in the first round of key generation.
  */
@@ -81,9 +58,9 @@ struct GNUNET_SECRETSHARING_KeygenCommitData
    * Ephemeral paillier public key used by 'peer' for
    * this session.
    */
-  struct PaillierPublicKey pubkey GNUNET_PACKED;
+  struct GNUNET_CRYPTO_PaillierPublicKey pubkey;
   /**
-   * Commitment of 'peer' to his presecret.
+   * Commitment of 'peer' to its presecret.
    */
   struct GNUNET_HashCode commitment GNUNET_PACKED;
 };
@@ -151,6 +128,20 @@ struct GNUNET_SECRETSHARING_DecryptData
   struct GNUNET_SECRETSHARING_FieldElement nizk_response;
 };
 
+
+struct GNUNET_SECRETSHARING_FairEncryption
+{
+  struct GNUNET_CRYPTO_PaillierCiphertext c;
+  /**
+   * h = g^x, where x is the fairly encrypte secret.
+   */
+  char h[GNUNET_SECRETSHARING_ELGAMAL_BITS / 8];
+  char t1[GNUNET_SECRETSHARING_ELGAMAL_BITS / 8];
+  char t2[GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8];
+  char z[GNUNET_SECRETSHARING_ELGAMAL_BITS / 8];
+  char w[GNUNET_CRYPTO_PAILLIER_BITS / 8];
+};
+
 GNUNET_NETWORK_STRUCT_END
 
 #endif