All pastes #215109 Raw Edit

Miscellany

public c v1 · immutable
#215109 ·published 2006-10-22 11:52 UTC
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;}