]> jfr.im git - irc/quakenet/newserv.git/blame - lua/luacrypto.c
LUA: port luadb to dbapi2 to drop postgres dependency
[irc/quakenet/newserv.git] / lua / luacrypto.c
CommitLineData
3cf6947a
CP
1#include "lua.h"
2#include "../lib/sha1.h"
3#include "../lib/sha2.h"
4
5static int crypto_sha1(lua_State *ps) {
6 unsigned char digestbuf[20];
0b5a8dd3 7 char hexbuf[sizeof(digestbuf) * 2 + 1];
3cf6947a
CP
8 SHA1_CTX c;
9
10 char *s = (char *)lua_tostring(ps, 1);
11 int len = lua_strlen(ps, 1);
12
13 SHA1Init(&c);
0b5a8dd3 14 SHA1Update(&c, (unsigned char *)s, len);
3cf6947a
CP
15 SHA1Final(digestbuf, &c);
16
17 /* hah */
18 snprintf(hexbuf, sizeof(hexbuf), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", digestbuf[0], digestbuf[1], digestbuf[2], digestbuf[3], digestbuf[4], digestbuf[5], digestbuf[6], digestbuf[7], digestbuf[8], digestbuf[9], digestbuf[10], digestbuf[11], digestbuf[12], digestbuf[13], digestbuf[14], digestbuf[15], digestbuf[16], digestbuf[17], digestbuf[18], digestbuf[19]);
19
20 lua_pushstring(ps, hexbuf);
21 return 1;
22}
23
24static int crypto_sha256(lua_State *ps) {
25 unsigned char digestbuf[32];
0b5a8dd3 26 char hexbuf[sizeof(digestbuf) * 2 + 1];
3cf6947a
CP
27 SHA256_CTX c;
28
29 char *s = (char *)lua_tostring(ps, 1);
30 int len = lua_strlen(ps, 1);
31
32 SHA256_Init(&c);
0b5a8dd3 33 SHA256_Update(&c, (unsigned char *)s, len);
3cf6947a
CP
34 SHA256_Final(digestbuf, &c);
35
36 /* hahahaha */
37 snprintf(hexbuf, sizeof(hexbuf), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", digestbuf[0], digestbuf[1], digestbuf[2], digestbuf[3], digestbuf[4], digestbuf[5], digestbuf[6], digestbuf[7], digestbuf[8], digestbuf[9], digestbuf[10], digestbuf[11], digestbuf[12], digestbuf[13], digestbuf[14], digestbuf[15], digestbuf[16], digestbuf[17], digestbuf[18], digestbuf[19], digestbuf[20], digestbuf[21], digestbuf[22], digestbuf[23], digestbuf[24], digestbuf[25], digestbuf[26], digestbuf[27], digestbuf[28], digestbuf[29], digestbuf[30], digestbuf[31]);
38
39 lua_pushstring(ps, hexbuf);
40 return 1;
41}
42
43static int crypto_sha384(lua_State *ps) {
44 unsigned char digestbuf[48];
0b5a8dd3 45 char hexbuf[sizeof(digestbuf) * 2 + 1];
3cf6947a
CP
46 SHA384_CTX c;
47
48 char *s = (char *)lua_tostring(ps, 1);
49 int len = lua_strlen(ps, 1);
50
51 SHA384_Init(&c);
0b5a8dd3 52 SHA384_Update(&c, (unsigned char *)s, len);
3cf6947a
CP
53 SHA384_Final(digestbuf, &c);
54
55 /* hahahahahahahahaa */
56 snprintf(hexbuf, sizeof(hexbuf), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", digestbuf[0], digestbuf[1], digestbuf[2], digestbuf[3], digestbuf[4], digestbuf[5], digestbuf[6], digestbuf[7], digestbuf[8], digestbuf[9], digestbuf[10], digestbuf[11], digestbuf[12], digestbuf[13], digestbuf[14], digestbuf[15], digestbuf[16], digestbuf[17], digestbuf[18], digestbuf[19], digestbuf[20], digestbuf[21], digestbuf[22], digestbuf[23], digestbuf[24], digestbuf[25], digestbuf[26], digestbuf[27], digestbuf[28], digestbuf[29], digestbuf[30], digestbuf[31], digestbuf[32], digestbuf[33], digestbuf[34], digestbuf[35], digestbuf[36], digestbuf[37], digestbuf[38], digestbuf[39], digestbuf[40], digestbuf[41], digestbuf[42], digestbuf[43], digestbuf[44], digestbuf[45], digestbuf[46], digestbuf[47]);
57
58 lua_pushstring(ps, hexbuf);
59 return 1;
60}
61
62static int crypto_sha512(lua_State *ps) {
63 unsigned char digestbuf[64];
0b5a8dd3 64 char hexbuf[sizeof(digestbuf) * 2 + 1];
3cf6947a
CP
65 SHA512_CTX c;
66
67 char *s = (char *)lua_tostring(ps, 1);
68 int len = lua_strlen(ps, 1);
69
70 SHA512_Init(&c);
0b5a8dd3 71 SHA512_Update(&c, (unsigned char *)s, len);
3cf6947a
CP
72 SHA512_Final(digestbuf, &c);
73
74 /* MUHAHAHAHAHAHAHAHAHAHAAHAHAHAHAHAHHAHAHAAH */
75 snprintf(hexbuf, sizeof(hexbuf), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", digestbuf[0], digestbuf[1], digestbuf[2], digestbuf[3], digestbuf[4], digestbuf[5], digestbuf[6], digestbuf[7], digestbuf[8], digestbuf[9], digestbuf[10], digestbuf[11], digestbuf[12], digestbuf[13], digestbuf[14], digestbuf[15], digestbuf[16], digestbuf[17], digestbuf[18], digestbuf[19], digestbuf[20], digestbuf[21], digestbuf[22], digestbuf[23], digestbuf[24], digestbuf[25], digestbuf[26], digestbuf[27], digestbuf[28], digestbuf[29], digestbuf[30], digestbuf[31], digestbuf[32], digestbuf[33], digestbuf[34], digestbuf[35], digestbuf[36], digestbuf[37], digestbuf[38], digestbuf[39], digestbuf[40], digestbuf[41], digestbuf[42], digestbuf[43], digestbuf[44], digestbuf[45], digestbuf[46], digestbuf[47], digestbuf[48], digestbuf[49], digestbuf[50], digestbuf[51], digestbuf[52], digestbuf[53], digestbuf[54], digestbuf[55], digestbuf[56], digestbuf[57], digestbuf[58], digestbuf[59], digestbuf[60], digestbuf[61], digestbuf[62], digestbuf[63]);
76
77 lua_pushstring(ps, hexbuf);
78 return 1;
79}
80
81void lua_registercryptocommands(lua_State *l) {
82 lua_register(l, "crypto_sha1", crypto_sha1);
83 lua_register(l, "crypto_sha256", crypto_sha256);
84 lua_register(l, "crypto_sha384", crypto_sha384);
85 lua_register(l, "crypto_sha512", crypto_sha512);
86}