/*
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 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.
-
- 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.
+ Affero General Public License for more details.
*/
#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.
*/
* 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.
*/
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