libgnunetchat

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

gnunet_chat_ticket_intern.c (1711B)


      1 /*
      2    This file is part of GNUnet.
      3    Copyright (C) 2024--2025 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/gnunet_common.h>
     26 #include <gnunet/gnunet_reclaim_lib.h>
     27 
     28 #define GNUNET_UNUSED __attribute__ ((unused))
     29 
     30 void
     31 cb_ticket_consume_attribute (void *cls, 
     32                              const struct GNUNET_CRYPTO_BlindablePublicKey *identity, 
     33                              const struct GNUNET_RECLAIM_Attribute *attribute, 
     34                              const struct GNUNET_RECLAIM_Presentation *presentation)
     35 {
     36   GNUNET_assert(cls);
     37 
     38   struct GNUNET_CHAT_Ticket *ticket = (
     39     (struct GNUNET_CHAT_Ticket*) cls
     40   );
     41 
     42   if (!attribute)
     43   {
     44     ticket->op = NULL;
     45     return;
     46   }
     47 
     48   char *value = GNUNET_RECLAIM_attribute_value_to_string(
     49     attribute->type,
     50     attribute->data,
     51     attribute->data_size
     52   );
     53 
     54   if (ticket->callback)
     55     ticket->callback(ticket->closure, ticket->issuer, attribute->name, value);
     56 
     57   if (value)
     58     GNUNET_free(value);
     59 }