2 This file is part of GNUnet
3 Copyright (C) 2012-2013 GNUnet e.V.
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.
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.
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/>.
18 SPDX-License-Identifier: AGPL3.0-or-later
21 * @file credential/credential.h
22 * @brief IPC messages between CREDENTIAL API and CREDENTIAL service
23 * @author Martin Schanzenbach
28 #include "gnunet_credential_service.h"
30 GNUNET_NETWORK_STRUCT_BEGIN
33 * Message from client to Credential service to collect credentials.
38 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
40 struct GNUNET_MessageHeader header;
45 struct GNUNET_CRYPTO_EcdsaPrivateKey subject_key;
50 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
53 * Length of the issuer attribute
55 uint16_t issuer_attribute_len;
58 * Unique identifier for this request (for key collisions).
60 uint32_t id GNUNET_PACKED;
62 /* Followed by the zero-terminated attribute */
68 * Message from client to Credential service to verify attributes.
73 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
75 struct GNUNET_MessageHeader header;
80 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
85 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
88 * Number of credentials
93 * Length of the issuer attribute
95 uint16_t issuer_attribute_len;
98 * Unique identifier for this request (for key collisions).
100 uint32_t id GNUNET_PACKED;
102 /* Followed by the zero-terminated attribute and credentials to look up */
108 * Message from CREDENTIAL service to client: new results.
110 struct DelegationChainResultMessage
113 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY_RESULT
115 struct GNUNET_MessageHeader header;
118 * Unique identifier for this request (for key collisions).
120 uint32_t id GNUNET_PACKED;
123 * Indicates if credential has been found at all
125 uint32_t cred_found GNUNET_PACKED;
128 * The number of delegations in the response
130 uint32_t d_count GNUNET_PACKED;
133 * The number of credentials in the response
135 uint32_t c_count GNUNET_PACKED;
137 /* followed by ad_count GNUNET_CREDENTIAL_RecordData structs*/
141 struct DelegationRecordData
146 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
151 uint32_t subject_attribute_len GNUNET_PACKED;
160 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
165 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
170 uint32_t issuer_attribute_len GNUNET_PACKED;
175 uint32_t subject_attribute_len GNUNET_PACKED;
179 struct CredentialEntry
183 * The signature for this credential by the issuer
185 struct GNUNET_CRYPTO_EcdsaSignature signature;
190 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
193 * Public key of the issuer
195 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
198 * Public key of the subject this credential was issued to
200 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
203 * Expiration time of this credential
205 uint64_t expiration GNUNET_PACKED;
208 * Issuer attribute length
210 uint32_t issuer_attribute_len;
213 * Followed by the attribute string
218 GNUNET_NETWORK_STRUCT_END