|
|
- From 5be7a51b0980909719670953c938ee724627ad90 Mon Sep 17 00:00:00 2001
- From: Daniel Golle <daniel@makrotopia.org>
- Date: Thu, 28 Feb 2019 15:30:26 +0100
- Subject: [PATCH] credential: include headers in dist sources
-
- ---
- src/credential/Makefile.am | 3 +++
- src/include/Makefile.am | 4 ++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
- --- a/src/credential/Makefile.am
- +++ b/src/credential/Makefile.am
- @@ -68,8 +68,11 @@ gnunet_service_credential_LDADD = \
-
-
- libgnunetcredential_la_SOURCES = \
- + credential.h \
- credential_api.c \
- + credential_serialization.h \
- credential_serialization.c \
- + credential_misc.h \
- credential_misc.c
- libgnunetcredential_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la $(XLIB)
- --- a/src/include/Makefile.am
- +++ b/src/include/Makefile.am
- @@ -47,7 +47,7 @@ gnunetinclude_HEADERS = \
- gnunet_container_lib.h \
- gnunet_conversation_service.h \
- gnunet_core_service.h \
- - gnunet_credential_service.h \
- + gnunet_credential_service.h \
- gnunet_crypto_lib.h \
- gnunet_curl_lib.h \
- gnunet_datacache_lib.h \
- @@ -107,7 +107,7 @@ gnunetinclude_HEADERS = \
- gnunet_regex_service.h \
- gnunet_rest_lib.h \
- gnunet_rest_plugin.h \
- - gnunet_rps_service.h \
- + gnunet_rps_service.h \
- gnunet_revocation_service.h \
- gnunet_scalarproduct_service.h \
- gnunet_scheduler_lib.h \
- --- /dev/null
- +++ b/src/credential/credential.h
- @@ -0,0 +1,221 @@
- +/*
- + This file is part of GNUnet
- + Copyright (C) 2012-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
- + */
- +/**
- + * @file credential/credential.h
- + * @brief IPC messages between CREDENTIAL API and CREDENTIAL service
- + * @author Martin Schanzenbach
- + */
- +#ifndef CREDENTIAL_H
- +#define CREDENTIAL_H
- +
- +#include "gnunet_credential_service.h"
- +
- +GNUNET_NETWORK_STRUCT_BEGIN
- +
- +/**
- + * Message from client to Credential service to collect credentials.
- + */
- +struct CollectMessage
- +{
- + /**
- + * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
- + */
- + struct GNUNET_MessageHeader header;
- +
- + /**
- + * Subject public key
- + */
- + struct GNUNET_CRYPTO_EcdsaPrivateKey subject_key;
- +
- + /**
- + * Trust anchor
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
- +
- + /**
- + * Length of the issuer attribute
- + */
- + uint16_t issuer_attribute_len;
- +
- + /**
- + * Unique identifier for this request (for key collisions).
- + */
- + uint32_t id GNUNET_PACKED;
- +
- + /* Followed by the zero-terminated attribute */
- +
- +};
- +
- +
- +/**
- + * Message from client to Credential service to verify attributes.
- + */
- +struct VerifyMessage
- +{
- + /**
- + * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
- + */
- + struct GNUNET_MessageHeader header;
- +
- + /**
- + * Subject public key
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
- +
- + /**
- + * Trust anchor
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
- +
- + /**
- + * Number of credentials
- + */
- + uint32_t c_count;
- +
- + /**
- + * Length of the issuer attribute
- + */
- + uint16_t issuer_attribute_len;
- +
- + /**
- + * Unique identifier for this request (for key collisions).
- + */
- + uint32_t id GNUNET_PACKED;
- +
- + /* Followed by the zero-terminated attribute and credentials to look up */
- +
- +};
- +
- +
- +/**
- + * Message from CREDENTIAL service to client: new results.
- + */
- +struct DelegationChainResultMessage
- +{
- + /**
- + * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY_RESULT
- + */
- + struct GNUNET_MessageHeader header;
- +
- + /**
- + * Unique identifier for this request (for key collisions).
- + */
- + uint32_t id GNUNET_PACKED;
- +
- + /**
- + * Indicates if credential has been found at all
- + */
- + uint32_t cred_found GNUNET_PACKED;
- +
- + /**
- + * The number of delegations in the response
- + */
- + uint32_t d_count GNUNET_PACKED;
- +
- + /**
- + * The number of credentials in the response
- + */
- + uint32_t c_count GNUNET_PACKED;
- +
- + /* followed by ad_count GNUNET_CREDENTIAL_RecordData structs*/
- +
- +};
- +
- +struct DelegationRecordData
- +{
- + /**
- + * Subject key
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
- +
- + /**
- + * Subject attributes
- + */
- + uint32_t subject_attribute_len GNUNET_PACKED;
- +};
- +
- +
- +struct ChainEntry
- +{
- + /**
- + * Issuer key
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
- +
- + /**
- + * Subject key
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
- +
- + /**
- + * Issuer attributes
- + */
- + uint32_t issuer_attribute_len GNUNET_PACKED;
- +
- + /**
- + * Subject attributes
- + */
- + uint32_t subject_attribute_len GNUNET_PACKED;
- +};
- +
- +
- +struct CredentialEntry
- +{
- +
- + /**
- + * The signature for this credential by the issuer
- + */
- + struct GNUNET_CRYPTO_EcdsaSignature signature;
- +
- + /**
- + * Signature meta
- + */
- + struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
- +
- + /**
- + * Public key of the issuer
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
- +
- + /**
- + * Public key of the subject this credential was issued to
- + */
- + struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
- +
- + /**
- + * Expiration time of this credential
- + */
- + uint64_t expiration GNUNET_PACKED;
- +
- + /**
- + * Issuer attribute length
- + */
- + uint32_t issuer_attribute_len;
- +
- + /**
- + * Followed by the attribute string
- + */
- +};
- +
- +
- +GNUNET_NETWORK_STRUCT_END
- +
- +#endif
- +
- --- /dev/null
- +++ b/src/credential/credential_misc.h
- @@ -0,0 +1,35 @@
- +/*
- + This file is part of GNUnet
- + Copyright (C) 2012-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
- + */
- +/**
- + * @file credential/credential_misc.h
- + * @brief Credential helper functions
- + */
- +#ifndef CREDENTIAL_MISC_H
- +#define CREDENTIAL_MISC_H
- +
- +
- +
- +char*
- +GNUNET_CREDENTIAL_credential_to_string (const struct GNUNET_CREDENTIAL_Credential *cred);
- +
- +struct GNUNET_CREDENTIAL_Credential*
- +GNUNET_CREDENTIAL_credential_from_string (const char* str);
- +
- +#endif
- --- /dev/null
- +++ b/src/credential/credential_serialization.h
- @@ -0,0 +1,159 @@
- +/*
- + This file is part of GNUnet.
- + Copyright (C) 2009-2013, 2016 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
- +*/
- +
- +
- +/**
- + * @file credential/credential_serialization.h
- + * @brief API to serialize and deserialize delegation chains
- + * and credentials
- + * @author Martin Schanzenbach
- + */
- +#ifndef CREDENTIAL_SERIALIZATION_H
- +#define CREDENTIAL_SERIALIZATION_H
- +
- +#include "platform.h"
- +#include "gnunet_util_lib.h"
- +#include "gnunet_constants.h"
- +#include "gnunet_credential_service.h"
- +
- +/**
- + * Calculate how many bytes we will need to serialize
- + * the given delegation record
- + *
- + * @param ds_count number of delegation chain entries
- + * @param dsr array of #GNUNET_CREDENTIAL_Delegation
- + * @return the required size to serialize
- + */
- +size_t
- +GNUNET_CREDENTIAL_delegation_set_get_size (unsigned int ds_count,
- + const struct GNUNET_CREDENTIAL_DelegationSet *dsr);
- +
- +/**
- + * Serizalize the given delegation record entries
- + *
- + * @param d_count number of delegation chain entries
- + * @param dsr array of #GNUNET_CREDENTIAL_Delegation
- + * @param dest_size size of the destination
- + * @param dest where to store the result
- + * @return the size of the data, -1 on failure
- + */
- +ssize_t
- +GNUNET_CREDENTIAL_delegation_set_serialize (unsigned int d_count,
- + const struct GNUNET_CREDENTIAL_DelegationSet *dsr,
- + size_t dest_size,
- + char *dest);
- +
- +
- +/**
- + * Deserialize the given destination
- + *
- + * @param len size of the serialized delegation recird
- + * @param src the serialized data
- + * @param d_count the number of delegation chain entries
- + * @param dsr where to put the delegation chain entries
- + * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
- + */
- +int
- +GNUNET_CREDENTIAL_delegation_set_deserialize (size_t len,
- + const char *src,
- + unsigned int d_count,
- + struct GNUNET_CREDENTIAL_DelegationSet *dsr);
- +
- + /**
- + * Calculate how many bytes we will need to serialize
- + * the given delegation chain and credential
- + *
- + * @param d_count number of delegation chain entries
- + * @param dd array of #GNUNET_CREDENTIAL_Delegation
- + * @param c_count number of credential entries
- + * @param cd a #GNUNET_CREDENTIAL_Credential
- + * @return the required size to serialize
- + */
- + size_t
- + GNUNET_CREDENTIAL_delegation_chain_get_size (unsigned int d_count,
- + const struct GNUNET_CREDENTIAL_Delegation *dd,
- + unsigned int c_count,
- + const struct GNUNET_CREDENTIAL_Credential *cd);
- +
- + /**
- + * Serizalize the given delegation chain entries and credential
- + *
- + * @param d_count number of delegation chain entries
- + * @param dd array of #GNUNET_CREDENTIAL_Delegation
- + * @param c_count number of credential entries
- + * @param cd a #GNUNET_CREDENTIAL_Credential
- + * @param dest_size size of the destination
- + * @param dest where to store the result
- + * @return the size of the data, -1 on failure
- + */
- + ssize_t
- + GNUNET_CREDENTIAL_delegation_chain_serialize (unsigned int d_count,
- + const struct GNUNET_CREDENTIAL_Delegation *dd,
- + unsigned int c_count,
- + const struct GNUNET_CREDENTIAL_Credential *cd,
- + size_t dest_size,
- + char *dest);
- +
- +
- + /**
- + * Deserialize the given destination
- + *
- + * @param len size of the serialized delegation chain and cred
- + * @param src the serialized data
- + * @param d_count the number of delegation chain entries
- + * @param dd where to put the delegation chain entries
- + * @param c_count number of credential entries
- + * @param cd where to put the credential data
- + * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
- + */
- + int
- + GNUNET_CREDENTIAL_delegation_chain_deserialize (size_t len,
- + const char *src,
- + unsigned int d_count,
- + struct GNUNET_CREDENTIAL_Delegation *dd,
- + unsigned int c_count,
- + struct GNUNET_CREDENTIAL_Credential *cd);
- + size_t
- + GNUNET_CREDENTIAL_credentials_get_size (unsigned int c_count,
- + const struct GNUNET_CREDENTIAL_Credential *cd);
- +
- +ssize_t
- +GNUNET_CREDENTIAL_credentials_serialize (unsigned int c_count,
- + const struct GNUNET_CREDENTIAL_Credential *cd,
- + size_t dest_size,
- + char *dest);
- +
- +
- +int
- +GNUNET_CREDENTIAL_credentials_deserialize (size_t len,
- + const char *src,
- + unsigned int c_count,
- + struct GNUNET_CREDENTIAL_Credential *cd);
- +
- +
- +int
- +GNUNET_CREDENTIAL_credential_serialize (struct GNUNET_CREDENTIAL_Credential *cred,
- + char **data);
- +
- +struct GNUNET_CREDENTIAL_Credential*
- +GNUNET_CREDENTIAL_credential_deserialize (const char* data,
- + size_t data_size);
- +#endif
- +/* end of credential_serialization.h */
- --- a/src/credential/Makefile.in
- +++ b/src/credential/Makefile.in
- @@ -714,8 +714,11 @@ gnunet_service_credential_LDADD = \
- $(GN_LIBINTL)
-
- libgnunetcredential_la_SOURCES = \
- + credential.h \
- credential_api.c \
- + credential_serialization.h \
- credential_serialization.c \
- + credential_misc.h \
- credential_misc.c
-
- libgnunetcredential_la_LIBADD = \
|