GNUnet 0.21.1
secretsharing_protocol.h
Go to the documentation of this file.
1/*
2 This file is part of GNUnet
3 Copyright (C) 2012 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21
28#ifndef GNUNET_SECRETSHARING_PROTOCOL_H
29#define GNUNET_SECRETSHARING_PROTOCOL_H
30
31#include "platform.h"
32#include "gnunet_common.h"
33#include "gnunet_protocols.h"
34#include "secretsharing.h"
35
36
38
39
44{
66};
67
68
70{
75 /*
76 * Signature purpose for signing the keygen commit data.
77 */
83
84 /* values follow */
85};
86
87
93{
94 /*
95 * Signature over rest of the message.
96 */
98 /*
99 * Signature purpose for signing the keygen commit data.
100 */
129};
130
131
133{
143};
144
146
147#endif
commonly used definitions; globals in this file are exempt from the rule that the module name ("commo...
Constants for network protocols.
#define GNUNET_NETWORK_STRUCT_BEGIN
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32.
#define GNUNET_CRYPTO_PAILLIER_BITS
Size of paillier plain texts and public keys.
#define GNUNET_NETWORK_STRUCT_END
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32;.
#define GNUNET_PACKED
gcc-ism to get packed structs.
#define GNUNET_SECRETSHARING_ELGAMAL_BITS
Number of bits for secretsharing elements.
messages used for the secretsharing api
header of what an ECC signature signs this must be followed by "size - 8" bytes of the actual signed ...
an ECC signature using EdDSA.
A 512-bit hashcode.
The identity of the host (wraps the signing key of the peer).
Data of then element put in consensus for decrypting a value.
struct GNUNET_CRYPTO_EddsaSignature signature
struct GNUNET_SECRETSHARING_FieldElement nizk_commit1
Commitment for the non-interactive zero knowledge proof.
struct GNUNET_CRYPTO_EccSignaturePurpose purpose
struct GNUNET_SECRETSHARING_FieldElement partial_decryption
Partial decryption, computed as .
struct GNUNET_PeerIdentity peer
Peer that inserts this element.
struct GNUNET_SECRETSHARING_Ciphertext ciphertext
Ciphertext we want to decrypt.
struct GNUNET_SECRETSHARING_FieldElement nizk_commit2
Commitment for the non-interactive zero knowledge proof.
struct GNUNET_SECRETSHARING_FieldElement nizk_response
Response to the challenge computed from the protocol transcript.
char t1[GNUNET_SECRETSHARING_ELGAMAL_BITS/8]
char z[GNUNET_SECRETSHARING_ELGAMAL_BITS/8]
char w[GNUNET_CRYPTO_PAILLIER_BITS/8]
struct GNUNET_CRYPTO_PaillierCiphertext c
char h[GNUNET_SECRETSHARING_ELGAMAL_BITS/8]
h = g^x, where x is the fairly encrypted secret.
char t2[GNUNET_CRYPTO_PAILLIER_BITS *2/8]
Consensus element data used in the first round of key generation.
struct GNUNET_PeerIdentity peer
Peer that inserts this element.
struct GNUNET_HashCode commitment
Commitment of 'peer' to its presecret.
struct GNUNET_CRYPTO_PaillierPublicKey pubkey
Ephemeral paillier public key used by 'peer' for this session.
struct GNUNET_CRYPTO_EddsaSignature signature
Signature over the rest of the message.
struct GNUNET_CRYPTO_EccSignaturePurpose purpose
Signature purpose for signing the keygen commit data.
struct GNUNET_CRYPTO_EccSignaturePurpose purpose
struct GNUNET_CRYPTO_EddsaSignature signature
Signature over rest of the message.
struct GNUNET_PeerIdentity peer
Peer that inserts this element.