Fix up the AGI doc dump CLI command and update the AGI commands tex file to not
[asterisk/asterisk.git] / res / res_crypto.c
index d7c74d7..73a54ba 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
  * \brief Provide Cryptographic Signature capability
  *
  * \author Mark Spencer <markster@digium.com> 
+ *
+ * \extref Uses the OpenSSL library, available at
+ *     http://www.openssl.org/
  */
 
+/*** MODULEINFO
+       <depend>ssl</depend>
+ ***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
 #include <sys/types.h>
 #include <openssl/ssl.h>
 #include <openssl/err.h>
 #include <unistd.h>
 #include <fcntl.h>
 
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
 #include "asterisk/file.h"
 #include "asterisk/channel.h"
 #include "asterisk/logger.h"
@@ -251,8 +258,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
                        key->ktype &= ~KEY_NEEDS_PASSCODE;
                        if (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3 "Loaded %s key '%s'\n", key->ktype == AST_KEY_PUBLIC ? "PUBLIC" : "PRIVATE", key->name);
-                       if (option_debug)
-                               ast_log(LOG_DEBUG, "Key '%s' loaded OK\n", key->name);
+                       ast_debug(1, "Key '%s' loaded OK\n", key->name);
                        key->delme = 0;
                } else
                        ast_log(LOG_NOTICE, "Key '%s' is not expected size.\n", key->name);
@@ -429,7 +435,7 @@ static int __ast_check_signature_bin(struct ast_key *key, const char *msg, int m
        res = RSA_verify(NID_sha1, digest, sizeof(digest), (unsigned char *)dsig, 128, key->rsa);
        
        if (!res) {
-               ast_log(LOG_DEBUG, "Key failed verification: %s\n", key->name);
+               ast_debug(1, "Key failed verification: %s\n", key->name);
                return -1;
        }
        /* Pass */
@@ -483,7 +489,7 @@ static void crypto_load(int ifd, int ofd)
        while(key) {
                nkey = key->next;
                if (key->delme) {
-                       ast_log(LOG_DEBUG, "Deleting key %s type %d\n", key->name, key->ktype);
+                       ast_debug(1, "Deleting key %s type %d\n", key->name, key->ktype);
                        /* Do the delete */
                        if (last)
                                last->next = nkey;
@@ -549,26 +555,29 @@ static int init_keys(int fd, int argc, char *argv[])
        return RESULT_SUCCESS;
 }
 
-static char show_key_usage[] =
-"Usage: show keys\n"
+static const char show_key_usage[] =
+"Usage: keys show\n"
 "       Displays information about RSA keys known by Asterisk\n";
 
-static char init_keys_usage[] =
-"Usage: init keys\n"
+static const char init_keys_usage[] =
+"Usage: keys init\n"
 "       Initializes private keys (by reading in pass code from the user)\n";
 
-static struct ast_cli_entry cli_show_keys = 
-{ { "show", "keys", NULL }, show_keys, "Displays RSA key information", show_key_usage };
+static struct ast_cli_entry cli_crypto[] = {
+       { { "keys", "show", NULL },
+       show_keys, "Displays RSA key information",
+       show_key_usage },
 
-static struct ast_cli_entry cli_init_keys = 
-{ { "init", "keys", NULL }, init_keys, "Initialize RSA key passcodes", init_keys_usage };
+       { { "keys", "init", NULL },
+       init_keys, "Initialize RSA key passcodes",
+       init_keys_usage },
+};
 
 static int crypto_init(void)
 {
        SSL_library_init();
        ERR_load_crypto_strings();
-       ast_cli_register(&cli_show_keys);
-       ast_cli_register(&cli_init_keys);
+       ast_cli_register_multiple(cli_crypto, sizeof(cli_crypto) / sizeof(struct ast_cli_entry));
 
        /* Install ourselves into stubs */
        ast_key_get = __ast_key_get;
@@ -581,13 +590,13 @@ static int crypto_init(void)
        return 0;
 }
 
-static int reload(void *mod)
+static int reload(void)
 {
        crypto_load(-1, -1);
        return 0;
 }
 
-static int load_module(void *mod)
+static int load_module(void)
 {
        crypto_init();
        if (ast_opt_init_keys)
@@ -597,19 +606,15 @@ static int load_module(void *mod)
        return 0;
 }
 
-static int unload_module(void *mod)
+static int unload_module(void)
 {
        /* Can't unload this once we're loaded */
        return -1;
 }
 
-static const char *description(void)
-{
-       return "Cryptographic Digital Signatures";
-}
-
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
-}
-STD_MOD(MOD_0 | NO_USECOUNT | NO_UNLOAD, reload, NULL, NULL);
+/* needs usecount semantics defined */
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Cryptographic Digital Signatures",
+               .load = load_module,
+               .unload = unload_module,
+               .reload = reload
+       );