rendered paste body/* * Colloquy 2 -- SHA library interface * * Copyright (c) 2005 Rob Kendrick <rjek@rjek.com> * */#include <lauxlib.h>#include "sha2.h"static int l_sha256(lua_State *L) { SHA256_CTX ctx; const char *data = luaL_checkstring(L, 1); const size_t datalen = lua_strlen(L, 1); char md[SHA256_DIGEST_STRING_LENGTH]; SHA256_Init(&ctx); SHA256_Update(&ctx, (unsigned char*)data, datalen); SHA256_End(&ctx, md); lua_pushlstring(L, md, SHA256_DIGEST_STRING_LENGTH); return 1;}static int l_sha384(lua_State *L) { SHA384_CTX ctx; const char *data = luaL_checkstring(L, 1); const size_t datalen = lua_strlen(L, 1); char md[SHA384_DIGEST_STRING_LENGTH]; SHA384_Init(&ctx); SHA384_Update(&ctx, (unsigned char*)data, datalen); SHA384_End(&ctx, md); lua_pushlstring(L, md, SHA384_DIGEST_STRING_LENGTH); return 1;}static int l_sha512(lua_State *L) { SHA512_CTX ctx; const char *data = luaL_checkstring(L, 1); const size_t datalen = lua_strlen(L, 1); char md[SHA512_DIGEST_STRING_LENGTH]; SHA512_Init(&ctx); SHA512_Update(&ctx, (unsigned char*)data, datalen); SHA512_End(&ctx, md); lua_pushlstring(L, md, SHA512_DIGEST_STRING_LENGTH); return 1;}int luaopen_sha(lua_State *L) { lua_pushcfunction(L, l_sha256); lua_setglobal(L, "sha256"); lua_pushcfunction(L, l_sha384); lua_setglobal(L, "sha384"); lua_pushcfunction(L, l_sha512); lua_setglobal(L, "sha512"); return 0;}