]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ripemd160.cpp
Change Extensible to use strongly typed entries
[user/henk/code/inspircd.git] / src / modules / m_ripemd160.cpp
index b6fd273444dafc4c1c345dc336485882b8afde5f..963c45f18b8579fda27145c9aea00c3fcd84a01d 100644 (file)
@@ -2,8 +2,8 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
@@ -25,7 +25,7 @@
  *  The RIPEMD-160 software is freely available for use under the terms and
  *  conditions described hereunder, which shall be deemed to be accepted by
  *  any user of the software and applicable on any use of the software:
- * 
+ *
  *  1. K.U.Leuven Department of Electrical Engineering-ESAT/COSIC shall for
  *     all purposes be considered the owner of the RIPEMD-160 software and of
  *     all copyright, trade secret, patent or other intellectual property
@@ -39,9 +39,9 @@
  *     circumstances K.U.Leuven R&D will be held liable for any deficiency,
  *     fault or other mishappening with regard to the use or performance of
  *     the software.
- *  3. User agrees to give due credit to K.U.Leuven in scientific publications 
- *     or communications in relation with the use of the RIPEMD-160 software 
- *     as follows: RIPEMD-160 software written by Antoon Bosselaers, 
+ *  3. User agrees to give due credit to K.U.Leuven in scientific publications
+ *     or communications in relation with the use of the RIPEMD-160 software
+ *     as follows: RIPEMD-160 software written by Antoon Bosselaers,
  *     available at http://www.esat.kuleuven.be/~cosicart/ps/AB-9601/.
  *
  */
@@ -80,12 +80,12 @@ typedef             uint32_t                dword;
 #define ROL(x, n)        (((x) << (n)) | ((x) >> (32-(n))))
 
 /* the five basic functions F(), G() and H() */
-#define F(x, y, z)        ((x) ^ (y) ^ (z)) 
-#define G(x, y, z)        (((x) & (y)) | (~(x) & (z))) 
+#define F(x, y, z)        ((x) ^ (y) ^ (z))
+#define G(x, y, z)        (((x) & (y)) | (~(x) & (z)))
 #define H(x, y, z)        (((x) | ~(y)) ^ (z))
-#define I(x, y, z)        (((x) & (z)) | ((y) & ~(z))) 
+#define I(x, y, z)        (((x) & (z)) | ((y) & ~(z)))
 #define J(x, y, z)        ((x) ^ ((y) | ~(z)))
-  
+
 /* the ten basic operations FF() through III() */
 
 #define FF(a, b, c, d, e, x, s)        {\
@@ -156,6 +156,7 @@ class ModuleRIPEMD160 : public Module
        {
                if (key)
                {
+                       ServerInstance->Logs->Log("m_ripemd160.so", DEBUG, "initialize with custom mdbuf");
                        MDbuf[0] = key[0];
                        MDbuf[1] = key[1];
                        MDbuf[2] = key[2];
@@ -164,6 +165,7 @@ class ModuleRIPEMD160 : public Module
                }
                else
                {
+                       ServerInstance->Logs->Log("m_ripemd160.so", DEBUG, "initialize with default mdbuf");
                        MDbuf[0] = 0x67452301UL;
                        MDbuf[1] = 0xefcdab89UL;
                        MDbuf[2] = 0x98badcfeUL;
@@ -198,7 +200,7 @@ class ModuleRIPEMD160 : public Module
                FF(cc, dd, ee, aa, bb, X[13],  7);
                FF(bb, cc, dd, ee, aa, X[14],  9);
                FF(aa, bb, cc, dd, ee, X[15],  8);
-                             
+
                /* round 2 */
                GG(ee, aa, bb, cc, dd, X[ 7],  7);
                GG(dd, ee, aa, bb, cc, X[ 4],  6);
@@ -216,7 +218,7 @@ class ModuleRIPEMD160 : public Module
                GG(bb, cc, dd, ee, aa, X[14],  7);
                GG(aa, bb, cc, dd, ee, X[11], 13);
                GG(ee, aa, bb, cc, dd, X[ 8], 12);
-       
+
                /* round 3 */
                HH(dd, ee, aa, bb, cc, X[ 3], 11);
                HH(cc, dd, ee, aa, bb, X[10], 13);
@@ -234,7 +236,7 @@ class ModuleRIPEMD160 : public Module
                HH(aa, bb, cc, dd, ee, X[11], 12);
                HH(ee, aa, bb, cc, dd, X[ 5],  7);
                HH(dd, ee, aa, bb, cc, X[12],  5);
-               
+
                /* round 4 */
                II(cc, dd, ee, aa, bb, X[ 1], 11);
                II(bb, cc, dd, ee, aa, X[ 9], 12);
@@ -290,7 +292,7 @@ class ModuleRIPEMD160 : public Module
                JJJ(aaa, bbb, ccc, ddd, eee, X[12],  6);
 
                /* parallel round 2 */
-               III(eee, aaa, bbb, ccc, ddd, X[ 6],  9); 
+               III(eee, aaa, bbb, ccc, ddd, X[ 6],  9);
                III(ddd, eee, aaa, bbb, ccc, X[11], 13);
                III(ccc, ddd, eee, aaa, bbb, X[ 3], 15);
                III(bbb, ccc, ddd, eee, aaa, X[ 7],  7);
@@ -325,7 +327,7 @@ class ModuleRIPEMD160 : public Module
                HHH(eee, aaa, bbb, ccc, ddd, X[ 4],  7);
                HHH(ddd, eee, aaa, bbb, ccc, X[13],  5);
 
-               /* parallel round 4 */   
+               /* parallel round 4 */
                GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15);
                GGG(bbb, ccc, ddd, eee, aaa, X[ 6],  5);
                GGG(aaa, bbb, ccc, ddd, eee, X[ 4],  8);
@@ -377,7 +379,7 @@ class ModuleRIPEMD160 : public Module
                unsigned int i;                                 /* counter       */
                dword        X[16];                             /* message words */
 
-               memset(X, 0, 16*sizeof(dword));
+               memset(X, 0, sizeof(X));
 
                /* put bytes from strptr into X */
                for (i=0; i<(lswlen&63); i++) {
@@ -391,7 +393,7 @@ class ModuleRIPEMD160 : public Module
                if ((lswlen & 63) > 55) {
                        /* length goes to next block */
                        compress(MDbuf, X);
-                       memset(X, 0, 16*sizeof(dword));
+                       memset(X, 0, sizeof(X));
                }
 
                /* append length in bits*/
@@ -404,6 +406,7 @@ class ModuleRIPEMD160 : public Module
 
        byte *RMD(byte *message, dword length, unsigned int* key)
        {
+               ServerInstance->Logs->Log("m_ripemd160", DEBUG, "RMD: '%s' length=%u", (const char*)message, length);
                dword         MDbuf[RMDsize/32];   /* contains (A, B, C, D(, E))   */
                static byte   hashcode[RMDsize/8]; /* for final hash-value         */
                dword         X[16];               /* current 16-word chunk        */
@@ -466,13 +469,15 @@ class ModuleRIPEMD160 : public Module
                else if (strcmp("SUM", request->GetId()) == 0)
                {
                        static char output[MAXBUF];
-                       char* data = (char*)RMD((byte *)SHA->GetHashData().data(),SHA->GetHashData().length(), currkey);
-                       for (int i = 0, j = 0; i < RMDsize / 8; i++)
+                       unsigned char* data = (unsigned char*)RMD((byte *)SHA->GetHashData().data(),SHA->GetHashData().length(), currkey);
+                       int j = 0;
+                       for (int i = 0; i < RMDsize / 8; i++)
                        {
                                output[j++] = chars[data[i] / 16];
                                output[j++] = chars[data[i] % 16];
-                               output[j] = '\0';
+                               ServerInstance->Logs->Log("m_ripemd160", DEBUG, "Hash: %02x", data[i]);
                        }
+                       output[j] = '\0';
                        return output;
                }
                else if (strcmp("NAME", request->GetId()) == 0)
@@ -489,7 +494,7 @@ class ModuleRIPEMD160 : public Module
 
        virtual Version GetVersion()
        {
-               return Version(1, 2, 0, 1, VF_VENDOR|VF_SERVICEPROVIDER, API_VERSION);
+               return Version("$Id$", VF_VENDOR|VF_SERVICEPROVIDER, API_VERSION);
        }
 
 };