Merge 0.10->trunk
[prosody.git] / util-src / hashes.c
index 459f75ac870538c4207ff67b03ab38e5e54cd952..ecab2e328e892833d8d5780066e6afaf8c8f88c8 100644 (file)
@@ -1,7 +1,7 @@
 /* Prosody IM
 -- Copyright (C) 2009-2010 Matthew Wild
 -- Copyright (C) 2009-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
 --
@@ -27,19 +27,20 @@ typedef unsigned __int32 uint32_t;
 #include <openssl/sha.h>
 #include <openssl/md5.h>
 
-#if (LUA_VERSION_NUM == 502)
-#define luaL_register(L, N, R) luaL_setfuncs(L, R, 0)
+#if (LUA_VERSION_NUM == 501)
+#define luaL_setfuncs(L, R, N) luaL_register(L, NULL, R)
 #endif
 
 #define HMAC_IPAD 0x36363636
 #define HMAC_OPAD 0x5c5c5c5c
 
-const char *hex_tab = "0123456789abcdef";
-void toHex(const unsigned char *in, int length, unsigned char *out) {
+const charhex_tab = "0123456789abcdef";
+void toHex(const unsigned char* in, int length, unsigned char* out) {
        int i;
-       for (i = 0; i < length; i++) {
-               out[i*2] = hex_tab[(in[i] >> 4) & 0xF];
-               out[i*2+1] = hex_tab[(in[i]) & 0xF];
+
+       for(i = 0; i < length; i++) {
+               out[i * 2] = hex_tab[(in[i] >> 4) & 0xF];
+               out[i * 2 + 1] = hex_tab[(in[i]) & 0xF];
        }
 }
 
@@ -68,15 +69,14 @@ MAKE_HASH_FUNCTION(Lmd5, MD5, MD5_DIGEST_LENGTH)
 
 struct hash_desc {
        int (*Init)(void*);
-       int (*Update)(void*, const void *, size_t);
+       int (*Update)(void*, const void*, size_t);
        int (*Final)(unsigned char*, void*);
        size_t digestLength;
-       void *ctx, *ctxo;
+       voidctx, *ctxo;
 };
 
-static void hmac(struct hash_desc *desc, const char *key, size_t key_len,
-    const char *msg, size_t msg_len, unsigned char *result)
-{
+static void hmac(struct hash_desc* desc, const char* key, size_t key_len,
+                 const char* msg, size_t msg_len, unsigned char* result) {
        union xory {
                unsigned char bytes[64];
                uint32_t quadbytes[16];
@@ -86,7 +86,7 @@ static void hmac(struct hash_desc *desc, const char *key, size_t key_len,
        unsigned char hashedKey[64]; /* Maximum used digest length */
        union xory k_ipad, k_opad;
 
-       if (key_len > 64) {
+       if(key_len > 64) {
                desc->Init(desc->ctx);
                desc->Update(desc->ctx, key, key_len);
                desc->Final(hashedKey, desc->ctx);
@@ -98,7 +98,7 @@ static void hmac(struct hash_desc *desc, const char *key, size_t key_len,
        memset(k_ipad.bytes + key_len, 0, 64 - key_len);
        memcpy(k_opad.bytes, k_ipad.bytes, 64);
 
-       for (i = 0; i < 16; i++) {
+       for(i = 0; i < 16; i++) {
                k_ipad.quadbytes[i] ^= HMAC_IPAD;
                k_opad.quadbytes[i] ^= HMAC_OPAD;
        }
@@ -143,10 +143,10 @@ MAKE_HMAC_FUNCTION(Lhmac_sha256, SHA256, SHA256_DIGEST_LENGTH, SHA256_CTX)
 MAKE_HMAC_FUNCTION(Lhmac_sha512, SHA512, SHA512_DIGEST_LENGTH, SHA512_CTX)
 MAKE_HMAC_FUNCTION(Lhmac_md5, MD5, MD5_DIGEST_LENGTH, MD5_CTX)
 
-static int LscramHi(lua_State *L) {
+static int LscramHi(lua_StateL) {
        union xory {
                unsigned char bytes[SHA_DIGEST_LENGTH];
-               uint32_t quadbytes[SHA_DIGEST_LENGTH/4];
+               uint32_t quadbytes[SHA_DIGEST_LENGTH / 4];
        };
        int i;
        SHA_CTX ctx, ctxo;
@@ -155,32 +155,39 @@ static int LscramHi(lua_State *L) {
        union xory res;
        size_t str_len, salt_len;
        struct hash_desc desc;
-       const char *str = luaL_checklstring(L, 1, &str_len);
-       const char *salt = luaL_checklstring(L, 2, &salt_len);
-       char *salt2;
+       const charstr = luaL_checklstring(L, 1, &str_len);
+       const charsalt = luaL_checklstring(L, 2, &salt_len);
+       charsalt2;
        const int iter = luaL_checkinteger(L, 3);
 
        desc.Init = (int (*)(void*))SHA1_Init;
-       desc.Update = (int (*)(void*, const void *, size_t))SHA1_Update;
+       desc.Update = (int (*)(void*, const void*, size_t))SHA1_Update;
        desc.Final = (int (*)(unsigned char*, void*))SHA1_Final;
        desc.digestLength = SHA_DIGEST_LENGTH;
        desc.ctx = &ctx;
        desc.ctxo = &ctxo;
 
        salt2 = malloc(salt_len + 4);
-       if (salt2 == NULL)
-               luaL_error(L, "Out of memory in scramHi");
+
+       if(salt2 == NULL) {
+               return luaL_error(L, "Out of memory in scramHi");
+       }
+
        memcpy(salt2, salt, salt_len);
        memcpy(salt2 + salt_len, "\0\0\0\1", 4);
        hmac(&desc, str, str_len, salt2, salt_len + 4, Ust);
        free(salt2);
 
        memcpy(res.bytes, Ust, sizeof(res));
-       for (i = 1; i < iter; i++) {
+
+       for(i = 1; i < iter; i++) {
                int j;
                hmac(&desc, str, str_len, (char*)Ust, sizeof(Ust), Und.bytes);
-               for (j = 0; j < SHA_DIGEST_LENGTH/4; j++)
+
+               for(j = 0; j < SHA_DIGEST_LENGTH / 4; j++) {
                        res.quadbytes[j] ^= Und.quadbytes[j];
+               }
+
                memcpy(Ust, Und.bytes, sizeof(Ust));
        }
 
@@ -189,8 +196,7 @@ static int LscramHi(lua_State *L) {
        return 1;
 }
 
-static const luaL_Reg Reg[] =
-{
+static const luaL_Reg Reg[] = {
        { "sha1",               Lsha1           },
        { "sha224",             Lsha224         },
        { "sha256",             Lsha256         },
@@ -205,10 +211,9 @@ static const luaL_Reg Reg[] =
        { NULL,                 NULL            }
 };
 
-LUALIB_API int luaopen_util_hashes(lua_State *L)
-{
+LUALIB_API int luaopen_util_hashes(lua_State* L) {
        lua_newtable(L);
-       luaL_register(L, NULL, Reg);
+       luaL_setfuncs(L, Reg, 0);;
        lua_pushliteral(L, "-3.14");
        lua_setfield(L, -2, "version");
        return 1;