123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- /*
- This file is part of GNUnet.
- Copyright (C) 2013 GNUnet e.V.
- GNUnet is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero 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
- Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- SPDX-License-Identifier: AGPL3.0-or-later
- */
- /**
- * @author Christian Grothoff
- * @file identity/identity.h
- *
- * @brief Common type definitions for the identity
- * service and API.
- */
- #ifndef IDENTITY_H
- #define IDENTITY_H
- #include "gnunet_common.h"
- GNUNET_NETWORK_STRUCT_BEGIN
- /**
- * Answer from service to client about last operation;
- * GET_DEFAULT maybe answered with this message on failure;
- * CREATE and RENAME will always be answered with this message.
- */
- struct ResultCodeMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_RESULT_CODE
- */
- struct GNUNET_MessageHeader header;
- /**
- * Status code for the last operation, in NBO.
- * (currently not used).
- */
- uint32_t result_code GNUNET_PACKED;
- /* followed by 0-terminated error message (on error) */
- };
- /**
- * Client informs service about desire to lookup a (single) pseudonym.
- */
- struct LookupMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_LOOKUP or
- * #GNUNET_MESSAGE_TYPE_IDENTITY_LOOKUP_BY_SUFFIX
- */
- struct GNUNET_MessageHeader header;
- /* followed by 0-terminated ego name */
- };
- /**
- * Service informs client about status of a pseudonym.
- */
- struct UpdateMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of bytes in ego name string including 0-termination, in NBO;
- * 0 if the ego was deleted.
- */
- uint16_t name_len GNUNET_PACKED;
- /**
- * Usually #GNUNET_NO, #GNUNET_YES to signal end of list.
- */
- uint16_t end_of_list GNUNET_PACKED;
- /**
- * The private key
- */
- struct GNUNET_CRYPTO_EcdsaPrivateKey private_key;
- /* followed by 0-terminated ego name */
- };
- /**
- * Client requests knowledge about default identity for
- * a subsystem from identity service.
- */
- struct GetDefaultMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_GET_DEFAULT
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of bytes in service name string including 0-termination, in NBO.
- */
- uint16_t name_len GNUNET_PACKED;
- /**
- * Always zero.
- */
- uint16_t reserved GNUNET_PACKED;
- /* followed by 0-terminated service name */
- };
- /**
- * Used from service to client as a result to the GET_DEFAULT
- * message, used from client to service to SET_DEFAULT.
- */
- struct SetDefaultMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_SET_DEFAULT
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of bytes in service name string including 0-termination, in NBO.
- */
- uint16_t name_len GNUNET_PACKED;
- /**
- * Always zero.
- */
- uint16_t reserved GNUNET_PACKED;
- /**
- * The private key
- */
- struct GNUNET_CRYPTO_EcdsaPrivateKey private_key;
- /* followed by 0-terminated service name */
- };
- /**
- * Client requests creation of an identity. Service
- * will respond with a result code.
- */
- struct CreateRequestMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_CREATE
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of bytes in identity name string including 0-termination, in NBO.
- */
- uint16_t name_len GNUNET_PACKED;
- /**
- * Always zero.
- */
- uint16_t reserved GNUNET_PACKED;
- /**
- * The private key
- */
- struct GNUNET_CRYPTO_EcdsaPrivateKey private_key;
- /* followed by 0-terminated identity name */
- };
- /**
- * Client requests renaming of an identity. Service
- * will respond with a result code.
- */
- struct RenameMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_RENAME
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of characters in the old name including 0-termination, in NBO.
- */
- uint16_t old_name_len GNUNET_PACKED;
- /**
- * Number of characters in the new name including 0-termination, in NBO.
- */
- uint16_t new_name_len GNUNET_PACKED;
- /* followed by 0-terminated old name */
- /* followed by 0-terminated new name */
- };
- /**
- * Client requests deletion of an identity. Service
- * will respond with a result code.
- */
- struct DeleteMessage
- {
- /**
- * Type: #GNUNET_MESSAGE_TYPE_IDENTITY_DELETE
- */
- struct GNUNET_MessageHeader header;
- /**
- * Number of characters in the name including 0-termination, in NBO.
- */
- uint16_t name_len GNUNET_PACKED;
- /**
- * Always zero.
- */
- uint16_t reserved GNUNET_PACKED;
- /* followed by 0-terminated name */
- };
- GNUNET_NETWORK_STRUCT_END
- /**
- * Handle for an ego.
- */
- struct GNUNET_IDENTITY_Ego
- {
- /**
- * Private key associated with this ego.
- */
- struct GNUNET_CRYPTO_EcdsaPrivateKey *pk;
- /**
- * Current name associated with this ego.
- */
- char *name;
- /**
- * Client context associated with this ego.
- */
- void *ctx;
- /**
- * Hash of the public key of this ego.
- */
- struct GNUNET_HashCode id;
- };
- #endif
|