func_sha1.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "asterisk.h"
00028
00029 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 89521 $")
00030
00031 #include "asterisk/module.h"
00032 #include "asterisk/pbx.h"
00033
00034 static int sha1(struct ast_channel *chan, const char *cmd, char *data,
00035 char *buf, size_t len)
00036 {
00037 *buf = '\0';
00038
00039 if (ast_strlen_zero(data)) {
00040 ast_log(LOG_WARNING, "Syntax: SHA1(<data>) - missing argument!\n");
00041 return -1;
00042 }
00043
00044 if (len >= 41)
00045 ast_sha1_hash(buf, data);
00046 else {
00047 ast_log(LOG_ERROR,
00048 "Insufficient space to produce SHA1 hash result (%d < 41)\n",
00049 (int) len);
00050 }
00051
00052 return 0;
00053 }
00054
00055 static struct ast_custom_function sha1_function = {
00056 .name = "SHA1",
00057 .synopsis = "Computes a SHA1 digest",
00058 .syntax = "SHA1(<data>)",
00059 .read = sha1,
00060 .desc = "Generate a SHA1 digest via the SHA1 algorythm.\n"
00061 " Example: Set(sha1hash=${SHA1(junky)})\n"
00062 " Sets the asterisk variable sha1hash to the string '60fa5675b9303eb62f99a9cd47f9f5837d18f9a0'\n"
00063 " which is known as his hash\n",
00064 };
00065
00066 static int unload_module(void)
00067 {
00068 return ast_custom_function_unregister(&sha1_function);
00069 }
00070
00071 static int load_module(void)
00072 {
00073 return ast_custom_function_register(&sha1_function);
00074 }
00075
00076 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "SHA-1 computation dialplan function");