libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

gnunet_chat_ticket_intern.c (1741B)


      1 /*
      2    This file is part of GNUnet.
      3    Copyright (C) 2024--2026 GNUnet e.V.
      4 
      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.
      9 
     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.
     14 
     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/>.
     17 
     18    SPDX-License-Identifier: AGPL3.0-or-later
     19  */
     20 /*
     21  * @author Tobias Frisch
     22  * @file gnunet_chat_ticket_intern.c
     23  */
     24 
     25 #include "gnunet_chat_ticket.h"
     26 
     27 #include <gnunet/gnunet_common.h>
     28 #include <gnunet/gnunet_reclaim_lib.h>
     29 
     30 #define GNUNET_UNUSED __attribute__ ((unused))
     31 
     32 void
     33 cb_ticket_consume_attribute (void *cls,
     34                              const struct GNUNET_CRYPTO_BlindablePublicKey *identity,
     35                              const struct GNUNET_RECLAIM_Attribute *attribute,
     36                              const struct GNUNET_RECLAIM_Presentation *presentation)
     37 {
     38   GNUNET_assert(cls);
     39 
     40   struct GNUNET_CHAT_Ticket *ticket = (
     41     (struct GNUNET_CHAT_Ticket*) cls
     42   );
     43 
     44   if (!attribute)
     45   {
     46     ticket->op = NULL;
     47     return;
     48   }
     49 
     50   char *value = GNUNET_RECLAIM_attribute_value_to_string(
     51     attribute->type,
     52     attribute->data,
     53     attribute->data_size
     54   );
     55 
     56   if (ticket->callback)
     57     ticket->callback(ticket->closure, ticket->issuer, attribute->name, value);
     58 
     59   if (value)
     60     GNUNET_free(value);
     61 }