-only trigger check config if we actually need it
[oweals/gnunet.git] / src / secretsharing / secretsharing_protocol.h
index 3778ade410b315480b1d57cd829bb29689a66e6f..e5e535738bafb83a3a1ff79e3e82381188a5151b 100644 (file)
@@ -1,6 +1,6 @@
 /*
       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
@@ -14,8 +14,8 @@
 
       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.
 */
 
 
 #include "gnunet_protocols.h"
 #include "secretsharing.h"
 
-/**
- * Bit length used for the Paillier crypto system.
- */
-#define PAILLIER_BITS 2048
-
-/**
- * Big endian representation of the prime field order used
- * for ElGamal.
- */
-#define ELGAMAL_Q_DATA {0x00 /* FIXME */};
-
 
 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.
  */
@@ -88,7 +58,7 @@ 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.
    */
@@ -158,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