certmanager: Fix compat for MattJs old LuaSec fork
[prosody.git] / util-src / hashes.c
index 8f7d7140836f1ca030d08f33e728fefdc47bdb35..459f75ac870538c4207ff67b03ab38e5e54cd952 100644 (file)
 
 #include <string.h>
 #include <stdlib.h>
+
+#ifdef _MSC_VER
+typedef unsigned __int32 uint32_t;
+#else
 #include <inttypes.h>
+#endif
 
 #include "lua.h"
 #include "lauxlib.h"
 #include <openssl/sha.h>
 #include <openssl/md5.h>
 
+#if (LUA_VERSION_NUM == 502)
+#define luaL_register(L, N, R) luaL_setfuncs(L, R, 0)
+#endif
+
 #define HMAC_IPAD 0x36363636
 #define HMAC_OPAD 0x5c5c5c5c
 
@@ -74,13 +83,13 @@ static void hmac(struct hash_desc *desc, const char *key, size_t key_len,
        };
 
        int i;
-       char hashedKey[64]; /* Maximum used digest length */
+       unsigned char hashedKey[64]; /* Maximum used digest length */
        union xory k_ipad, k_opad;
 
        if (key_len > 64) {
                desc->Init(desc->ctx);
                desc->Update(desc->ctx, key, key_len);
-               desc->Final(desc->ctx, hashedKey);
+               desc->Final(hashedKey, desc->ctx);
                key = (const char*)hashedKey;
                key_len = desc->digestLength;
        }
@@ -198,9 +207,9 @@ static const luaL_Reg Reg[] =
 
 LUALIB_API int luaopen_util_hashes(lua_State *L)
 {
-       luaL_register(L, "hashes", Reg);
-       lua_pushliteral(L, "version");                  /** version */
+       lua_newtable(L);
+       luaL_register(L, NULL, Reg);
        lua_pushliteral(L, "-3.14");
-       lua_settable(L,-3);
+       lua_setfield(L, -2, "version");
        return 1;
 }