]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sha256.cpp
Add sanity checks to the ssl modules so that theres no possibility of an out of range...
[user/henk/code/inspircd.git] / src / modules / m_sha256.cpp
index c5df2aad37972cff4a7a7c5a484b78eace411b24..1be4551c80c93860581e47479743e62a848e5bcf 100644 (file)
@@ -2,12 +2,9 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *                <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
 /* $ModDesc: Allows for SHA-256 encrypted oper passwords */
 /* $ModDep: m_hash.h */
 
-#include "inspircd_config.h"
+#include "inspircd.h"
 #ifdef HAS_STDINT
 #include <stdint.h>
 #endif
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-#include "inspircd.h"
-
 #include "m_hash.h"
 
 #ifndef HAS_STDINT
@@ -142,7 +134,7 @@ uint32_t sha256_k[64] =
 
 class ModuleSHA256 : public Module
 {
-       void SHA256Init(struct SHA256Context *ctx, const unsigned int* key)
+       void SHA256Init(SHA256Context *ctx, const unsigned int* key)
        {
                if (key)
                {
@@ -158,7 +150,7 @@ class ModuleSHA256 : public Module
                ctx->tot_len = 0;
        }
 
-       void SHA256Transform(struct SHA256Context *ctx, unsigned char *message, unsigned int block_nb)
+       void SHA256Transform(SHA256Context *ctx, unsigned char *message, unsigned int block_nb)
        {
                uint32_t w[64];
                uint32_t wv[8];
@@ -192,7 +184,7 @@ class ModuleSHA256 : public Module
                }
        }
        
-       void SHA256Update(struct SHA256Context *ctx, unsigned char *message, unsigned int len)
+       void SHA256Update(SHA256Context *ctx, unsigned char *message, unsigned int len)
        {
                unsigned int rem_len = SHA256_BLOCK_SIZE - ctx->len;
                memcpy(&ctx->block[ctx->len], message, rem_len);
@@ -212,7 +204,7 @@ class ModuleSHA256 : public Module
                ctx->tot_len += (block_nb + 1) << 6;
        }
        
-       void SHA256Final(struct SHA256Context *ctx, unsigned char *digest)
+       void SHA256Final(SHA256Context *ctx, unsigned char *digest)
        {
                unsigned int block_nb = (1 + ((SHA256_BLOCK_SIZE - 9) < (ctx->len % SHA256_BLOCK_SIZE)));
                unsigned int len_b = (ctx->tot_len + ctx->len) << 3;
@@ -229,7 +221,7 @@ class ModuleSHA256 : public Module
        {
                // Generate the hash
                unsigned char bytehash[SHA256_DIGEST_SIZE];
-               struct SHA256Context ctx;
+               SHA256Context ctx;
                SHA256Init(&ctx, key);
                SHA256Update(&ctx, (unsigned char *)src, (unsigned int)len);
                SHA256Final(&ctx, bytehash);
@@ -247,14 +239,14 @@ class ModuleSHA256 : public Module
 
  public:
 
-       ModuleSHA256(InspIRCd* Me) : Module::Module(Me), key(NULL), chars(NULL)
+       ModuleSHA256(InspIRCd* Me) : Module(Me), key(NULL), chars(NULL)
        {
-               ServerInstance->PublishInterface("HashRequest", this);
+               ServerInstance->Modules->PublishInterface("HashRequest", this);
        }
 
        virtual ~ModuleSHA256()
        {
-               ServerInstance->UnpublishInterface("HashRequest", this);
+               ServerInstance->Modules->UnpublishInterface("HashRequest", this);
        }
 
        void Implements(char *List)
@@ -279,6 +271,10 @@ class ModuleSHA256 : public Module
                        SHA256((const char*)SHA->GetHashData(), data, strlen(SHA->GetHashData()), chars ? chars : "0123456789abcdef", key);
                        return data;
                }
+               else if (strcmp("NAME", request->GetId()) == 0)
+               {
+                       return "sha256";
+               }
                else if (strcmp("RESET", request->GetId()) == 0)
                {
                        this->chars = NULL;
@@ -289,30 +285,8 @@ class ModuleSHA256 : public Module
 
        virtual Version GetVersion()
        {
-               return Version(1, 1, 0, 1, VF_VENDOR, API_VERSION);
+               return Version(1, 1, 0, 1, VF_VENDOR|VF_SERVICEPROVIDER, API_VERSION);
        }
 };
 
-
-class ModuleSHA256Factory : public ModuleFactory
-{
-public:
-       ModuleSHA256Factory()
-       {
-       }
-
-       ~ModuleSHA256Factory()
-       {
-       }
-
-       virtual Module *CreateModule(InspIRCd* Me)
-       {
-               return new ModuleSHA256(Me);
-       }
-
-};
-
-extern "C" void * init_module( void )
-{
-       return new ModuleSHA256Factory;
-}
+MODULE_INIT(ModuleSHA256)