aboutsummaryrefslogtreecommitdiff
path: root/src/mint/taler-mint-httpd_validation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mint/taler-mint-httpd_validation.c')
-rw-r--r--src/mint/taler-mint-httpd_validation.c231
1 files changed, 0 insertions, 231 deletions
diff --git a/src/mint/taler-mint-httpd_validation.c b/src/mint/taler-mint-httpd_validation.c
deleted file mode 100644
index 8f8ab415e..000000000
--- a/src/mint/taler-mint-httpd_validation.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2016 GNUnet e.V.
-
- TALER 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, or (at your option) any later version.
-
- TALER 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
- TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
-*/
-
-/**
- * @file taler-mint-httpd_validation.c
- * @brief helpers for calling the wire plugins to validate addresses
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include <gnunet/gnunet_util_lib.h>
-#include "taler-mint-httpd_validation.h"
-#include "taler_wire_plugin.h"
-
-
-/**
- * Information we keep for each plugin.
- */
-struct Plugin
-{
-
- /**
- * We keep plugins in a DLL.
- */
- struct Plugin *next;
-
- /**
- * We keep plugins in a DLL.
- */
- struct Plugin *prev;
-
- /**
- * Type of the wireformat.
- */
- char *type;
-
- /**
- * Pointer to the plugin.
- */
- struct TALER_WIRE_Plugin *plugin;
-
-};
-
-/**
- * Head of DLL of wire plugins.
- */
-static struct Plugin *wire_head;
-
-/**
- * Tail of DLL of wire plugins.
- */
-static struct Plugin *wire_tail;
-
-
-/**
- * Initialize validation subsystem.
- *
- * @param cfg configuration to use
- * @return #GNUNET_OK on success
- */
-int
-TMH_VALIDATION_init (const struct GNUNET_CONFIGURATION_Handle *cfg)
-{
- struct Plugin *p;
- char *wireformats;
- char *lib_name;
- const char *token;
-
- /* Find out list of supported wire formats */
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (cfg,
- "mint",
- "wireformat",
- &wireformats))
- {
- GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
- "mint",
- "wireformat");
- return GNUNET_SYSERR;
- }
- for (token = strtok (wireformats,
- " ");
- NULL != token;
- token = strtok (NULL,
- " "))
- {
- (void) GNUNET_asprintf (&lib_name,
- "libtaler_plugin_wire_%s",
- token);
- p = GNUNET_new (struct Plugin);
- p->type = GNUNET_strdup (token);
- p->plugin = GNUNET_PLUGIN_load (lib_name,
- (void *) cfg);
- if (NULL == p->plugin)
- {
- GNUNET_free (p);
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed to load plugin %s\n",
- lib_name);
- GNUNET_free (lib_name);
- TMH_VALIDATION_done ();
- return GNUNET_SYSERR;
- }
- p->plugin->library_name = lib_name;
- GNUNET_CONTAINER_DLL_insert (wire_head,
- wire_tail,
- p);
- }
- GNUNET_free (wireformats);
- return GNUNET_OK;
-}
-
-
-/**
- * Shutdown validation subsystem.
- */
-void
-TMH_VALIDATION_done ()
-{
- struct Plugin *p;
- char *lib_name;
-
- while (NULL != (p = wire_head))
- {
- GNUNET_CONTAINER_DLL_remove (wire_head,
- wire_tail,
- p);
- lib_name = p->plugin->library_name;
- GNUNET_assert (NULL == GNUNET_PLUGIN_unload (lib_name,
- p->plugin));
- GNUNET_free (lib_name);
- GNUNET_free (p->type);
- GNUNET_free (p);
- }
-}
-
-
-/**
- * Check if the given wire format JSON object is correctly formatted as
- * a wire address.
- *
- * @param wire the JSON wire format object
- * @return #GNUNET_YES if correctly formatted; #GNUNET_NO if not
- */
-int
-TMH_json_validate_wireformat (const json_t *wire)
-{
- const char *stype;
- json_error_t error;
- struct Plugin *p;
-
- if (0 != json_unpack_ex ((json_t *) wire,
- &error, 0,
- "{s:s}",
- "type", &stype))
- {
- GNUNET_break (0);
- return GNUNET_SYSERR;
- }
- for (p=wire_head; NULL != p; p = p->next)
- if (0 == strcasecmp (p->type,
- stype))
- return p->plugin->wire_validate (wire);
- return GNUNET_NO;
-}
-
-
-/**
- * Check if we support the given wire method.
- *
- * @param type type of wire method to check
- * @return #GNUNET_YES if the method is supported
- */
-int
-TMH_VALIDATION_test_method (const char *type)
-{
- struct Plugin *p;
-
- for (p=wire_head;NULL != p;p = p->next)
- if (0 == strcasecmp (type,
- p->type))
- return GNUNET_YES;
- return GNUNET_NO;
-}
-
-
-/**
- * Obtain supported validation methods as a JSON array,
- * and as a hash.
- *
- * @param[out] h set to the hash of the JSON methods
- * @return JSON array with the supported validation methods
- */
-json_t *
-TMH_VALIDATION_get_methods (struct GNUNET_HashCode *h)
-{
- json_t *methods;
- struct GNUNET_HashContext *hc;
- const char *wf;
- struct Plugin *p;
-
- methods = json_array ();
- hc = GNUNET_CRYPTO_hash_context_start ();
- for (p=wire_head;NULL != p;p = p->next)
- {
- wf = p->type;
- json_array_append_new (methods,
- json_string (wf));
- GNUNET_CRYPTO_hash_context_read (hc,
- wf,
- strlen (wf) + 1);
- }
- GNUNET_CRYPTO_hash_context_finish (hc,
- h);
- return methods;
-}
-
-
-/* end of taler-mint-httpd_validation.c */