mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
Merge 0.11->trunk
This commit is contained in:
commit
70bbc77e68
1 changed files with 11 additions and 17 deletions
|
@ -25,6 +25,7 @@ typedef unsigned __int32 uint32_t;
|
|||
#include "lauxlib.h"
|
||||
#include <openssl/sha.h>
|
||||
#include <openssl/md5.h>
|
||||
#include <openssl/hmac.h>
|
||||
|
||||
#if (LUA_VERSION_NUM == 501)
|
||||
#define luaL_setfuncs(L, R, N) luaL_register(L, NULL, R)
|
||||
|
@ -112,35 +113,28 @@ static void hmac(struct hash_desc *desc, const char *key, size_t key_len,
|
|||
desc->Final(result, desc->ctxo);
|
||||
}
|
||||
|
||||
#define MAKE_HMAC_FUNCTION(myFunc, func, size, type) \
|
||||
#define MAKE_HMAC_FUNCTION(myFunc, evp, size, type) \
|
||||
static int myFunc(lua_State *L) { \
|
||||
type ctx, ctxo; \
|
||||
unsigned char hash[size], result[2*size]; \
|
||||
size_t key_len, msg_len; \
|
||||
unsigned int out_len; \
|
||||
const char *key = luaL_checklstring(L, 1, &key_len); \
|
||||
const char *msg = luaL_checklstring(L, 2, &msg_len); \
|
||||
const int hex_out = lua_toboolean(L, 3); \
|
||||
struct hash_desc desc; \
|
||||
desc.Init = (int (*)(void*))func##_Init; \
|
||||
desc.Update = (int (*)(void*, const void *, size_t))func##_Update; \
|
||||
desc.Final = (int (*)(unsigned char*, void*))func##_Final; \
|
||||
desc.digestLength = size; \
|
||||
desc.ctx = &ctx; \
|
||||
desc.ctxo = &ctxo; \
|
||||
hmac(&desc, key, key_len, msg, msg_len, hash); \
|
||||
HMAC(evp(), key, key_len, (const unsigned char*)msg, msg_len, (unsigned char*)hash, &out_len); \
|
||||
if (hex_out) { \
|
||||
toHex(hash, size, result); \
|
||||
lua_pushlstring(L, (char*)result, size*2); \
|
||||
toHex(hash, out_len, result); \
|
||||
lua_pushlstring(L, (char*)result, out_len*2); \
|
||||
} else { \
|
||||
lua_pushlstring(L, (char*)hash, size); \
|
||||
lua_pushlstring(L, (char*)hash, out_len); \
|
||||
} \
|
||||
return 1; \
|
||||
}
|
||||
|
||||
MAKE_HMAC_FUNCTION(Lhmac_sha1, SHA1, SHA_DIGEST_LENGTH, SHA_CTX)
|
||||
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)
|
||||
MAKE_HMAC_FUNCTION(Lhmac_sha1, EVP_sha1, SHA_DIGEST_LENGTH, SHA_CTX)
|
||||
MAKE_HMAC_FUNCTION(Lhmac_sha256, EVP_sha256, SHA256_DIGEST_LENGTH, SHA256_CTX)
|
||||
MAKE_HMAC_FUNCTION(Lhmac_sha512, EVP_sha512, SHA512_DIGEST_LENGTH, SHA512_CTX)
|
||||
MAKE_HMAC_FUNCTION(Lhmac_md5, EVP_md5, MD5_DIGEST_LENGTH, MD5_CTX)
|
||||
|
||||
static int LscramHi(lua_State *L) {
|
||||
union xory {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue