From d3f934f742ae17ed0b2dad577897b5a226e644c2 Mon Sep 17 00:00:00 2001 From: "Schanzenbach, Martin" Date: Tue, 14 Aug 2018 12:23:38 +0200 Subject: [PATCH] start API --- src/include/gnunet_zklaim_lib.h | 131 ++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/include/gnunet_zklaim_lib.h diff --git a/src/include/gnunet_zklaim_lib.h b/src/include/gnunet_zklaim_lib.h new file mode 100644 index 000000000..a1fd1f017 --- /dev/null +++ b/src/include/gnunet_zklaim_lib.h @@ -0,0 +1,131 @@ +/* + This file is part of GNUnet. + Copyright (C) 2001-2018 GNUnet e.V. + + GNUnet is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +/** + * @file include/gnunet_zklaim_lib.h + * @brief ZKlaim functions for GNUnet + * + * @author Martin Schanzenbach + * + * @defgroup zklaim ZKlaim library: Zero-Knowledge Credentials + * + */ +#ifndef GNUNET_ZKLAIM_LIB_H +#define GNUNET_ZKLAIM_LIB_H + +#ifdef __cplusplus +extern "C" +{ +#if 0 /* keep Emacsens' auto-indent happy */ +} +#endif +#endif + +#include "gnunet_common.h" + +/** + * @brief type for ZKlaim context + */ +struct GNUNET_ZKLAIM_Context; + +/** + * @brief type for ZKlaim payload + */ +struct GNUNET_ZKLAIM_Payload; + + +/** + * @ingroup zklaim + * Create a new ZKlaim context. Caller must free return value. + * TODO: parameters: keys etc. + * + * @return fresh context; free using #GNUNET_free + */ +struct GNUNET_ZKLAIM_Context * +GNUNET_ZKLAIM_context_create (void); + +/** + * @ingroup zklaim + * Create a payload. + * TODO: parameters, attributes etc. + * + * @return fresh payload; free using #GNUNET_free + */ +void +GNUNET_ZKLAIM_payload_create (void); + +/** + * @ingroup zklaim + * Create a payload. + * TODO: parameters, attributes etc. + * + * @return GNUNET_OK is successful + */ +int +GNUNET_ZKLAIM_context_add_payload (struct GNUNET_ZKLAIM_Context *ctx, + struct GNUNET_ZKLAIM_Payload* pl); + + +/** + * @ingroup zklaim + * Create a payload. + * TODO: parameters, attributes etc. + * + * @return size needed for serialized context, -1 on error + */ +ssize_t +GNUNET_ZKLAIM_context_serialize_get_size (struct GNUNET_ZKLAIM_Context *ctx); + + +/** + * @ingroup zklaim + * Create a payload. + * TODO: parameters, attributes etc. + * + */ +void +GNUNET_ZKLAIM_context_serialize (struct GNUNET_ZKLAIM_Context *ctx, + char* buf); + + +/** + * @ingroup zklaim + * Create a payload. + * TODO: parameters, attributes etc. + * + * @return fresh payload; free using #GNUNET_free + */ +char * +GNUNET_ZKLAIM_context_to_string (struct GNUNET_ZKLAIM_Context *ctx); + + + + +#if 0 /* keep Emacsens' auto-indent happy */ +{ +#endif +#ifdef __cplusplus +} +#endif + + +/* ifndef GNUNET_ZKLAIM_LIB_H */ +#endif +/* end of gnunet_zklaim_lib.h */ -- 2.25.1