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.
16 * @file credential/credential.h
17 * @brief IPC messages between CREDENTIAL API and CREDENTIAL service
18 * @author Martin Schanzenbach
23 #include "gnunet_credential_service.h"
25 GNUNET_NETWORK_STRUCT_BEGIN
28 * Message from client to Credential service to collect credentials.
33 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
35 struct GNUNET_MessageHeader header;
40 struct GNUNET_CRYPTO_EcdsaPrivateKey subject_key;
45 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
48 * Length of the issuer attribute
50 uint16_t issuer_attribute_len;
53 * Unique identifier for this request (for key collisions).
55 uint32_t id GNUNET_PACKED;
57 /* Followed by the zero-terminated attribute */
63 * Message from client to Credential service to verify attributes.
68 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
70 struct GNUNET_MessageHeader header;
75 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
80 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
83 * Number of credentials
88 * Length of the issuer attribute
90 uint16_t issuer_attribute_len;
93 * Unique identifier for this request (for key collisions).
95 uint32_t id GNUNET_PACKED;
97 /* Followed by the zero-terminated attribute and credentials to look up */
103 * Message from CREDENTIAL service to client: new results.
105 struct DelegationChainResultMessage
108 * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY_RESULT
110 struct GNUNET_MessageHeader header;
113 * Unique identifier for this request (for key collisions).
115 uint32_t id GNUNET_PACKED;
118 * Indicates if credential has been found at all
120 uint32_t cred_found GNUNET_PACKED;
123 * The number of delegations in the response
125 uint32_t d_count GNUNET_PACKED;
128 * The number of credentials in the response
130 uint32_t c_count GNUNET_PACKED;
132 /* followed by ad_count GNUNET_CREDENTIAL_RecordData structs*/
136 struct DelegationRecordData
141 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
146 uint32_t subject_attribute_len GNUNET_PACKED;
155 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
160 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
165 uint32_t issuer_attribute_len GNUNET_PACKED;
170 uint32_t subject_attribute_len GNUNET_PACKED;
174 struct CredentialEntry
178 * The signature for this credential by the issuer
180 struct GNUNET_CRYPTO_EcdsaSignature signature;
185 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
188 * Public key of the issuer
190 struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
193 * Public key of the subject this credential was issued to
195 struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
198 * Expiration time of this credential
200 uint64_t expiration GNUNET_PACKED;
203 * Issuer attribute length
205 uint32_t issuer_attribute_len;
208 * Followed by the attribute string
213 GNUNET_NETWORK_STRUCT_END