]>
jfr.im git - irc/quakenet/newserv.git/blob - lua/luacrypto.c
2 #include "../lib/sha1.h"
3 #include "../lib/sha2.h"
5 static int crypto_sha1(lua_State
*ps
) {
6 unsigned char digestbuf
[20];
7 char hexbuf
[sizeof(digestbuf
) * 2 + 1];
10 char *s
= (char *)lua_tostring(ps
, 1);
11 int len
= lua_strlen(ps
, 1);
14 SHA1Update(&c
, (unsigned char *)s
, len
);
15 SHA1Final(digestbuf
, &c
);
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]);
20 lua_pushstring(ps
, hexbuf
);
24 static int crypto_sha256(lua_State
*ps
) {
25 unsigned char digestbuf
[32];
26 char hexbuf
[sizeof(digestbuf
) * 2 + 1];
29 char *s
= (char *)lua_tostring(ps
, 1);
30 int len
= lua_strlen(ps
, 1);
33 SHA256_Update(&c
, (unsigned char *)s
, len
);
34 SHA256_Final(digestbuf
, &c
);
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]);
39 lua_pushstring(ps
, hexbuf
);
43 static int crypto_sha384(lua_State
*ps
) {
44 unsigned char digestbuf
[48];
45 char hexbuf
[sizeof(digestbuf
) * 2 + 1];
48 char *s
= (char *)lua_tostring(ps
, 1);
49 int len
= lua_strlen(ps
, 1);
52 SHA384_Update(&c
, (unsigned char *)s
, len
);
53 SHA384_Final(digestbuf
, &c
);
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]);
58 lua_pushstring(ps
, hexbuf
);
62 static int crypto_sha512(lua_State
*ps
) {
63 unsigned char digestbuf
[64];
64 char hexbuf
[sizeof(digestbuf
) * 2 + 1];
67 char *s
= (char *)lua_tostring(ps
, 1);
68 int len
= lua_strlen(ps
, 1);
71 SHA512_Update(&c
, (unsigned char *)s
, len
);
72 SHA512_Final(digestbuf
, &c
);
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]);
77 lua_pushstring(ps
, hexbuf
);
81 void 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
);