]> jfr.im git - irc/quakenet/newserv.git/blame - nterface/library.h
Merge.
[irc/quakenet/newserv.git] / nterface / library.h
CommitLineData
18f8bd28
CP
1/*
2 nterface library functions
3 Copyright (C) 2003-2004 Chris Porter.
4*/
5
6#ifndef __nterface_library_H
7#define __nterface_library_H
8
9#include "../core/error.h"
10
1ac1d43c
CP
11#include "../lib/sha2.h"
12
18f8bd28
CP
13#define RE_OK 0x00
14#define RE_MEM_ERROR 0x01
15#define RE_BAD_LINE 0x02
16#define RE_REQUEST_REJECTED 0x03
17#define RE_SERVICE_NOT_FOUND 0x04
18#define RE_CONNECTION_CLOSED 0x05
19#define RE_TRANSPORT_NOT_FOUND 0x06
20#define RE_COMMAND_NOT_FOUND 0x07
21#define RE_WRONG_ARG_COUNT 0x08
22#define RE_TOO_MANY_ARGS 0x09
23#define RE_SERVICER_NOT_FOUND 0x0A
5757e1ef 24#define RE_SOCKET_ERROR 0x0B
18f8bd28
CP
25
26#define snc(err, f) strncpy(err, f, sizeof(err) - 1)
27#define TwentyByteHex(output, buf) snprintf(output, sizeof(output), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15], buf[16], buf[17], buf[18], buf[19]);
1ac1d43c
CP
28#define SixteenByteHex(output, buf) snprintf(output, sizeof(output), "%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]);
29#define ThirtyTwoByteHex(output, buf) snprintf(output, sizeof(output), "%.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", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15], buf[16], buf[17], buf[18], buf[19], buf[20], buf[21], buf[22], buf[23], buf[24], buf[25], buf[26], buf[27], buf[28], buf[29], buf[30], buf[31]);
18f8bd28
CP
30
31#define MemError() Error("nterface", ERR_FATAL, "Memory allocation error, file: %s line: %d", __FILE__, __LINE__);
32
1ac1d43c 33#define RANDOM_LOCATION "/dev/urandom"
18f8bd28
CP
34
35#define MemCheck(x) \
36 if(!x) { \
37 MemError(); \
38 return; \
39 }
40
41#define MemCheckR(x, y) \
42 if(!x) { \
43 MemError(); \
44 return y; \
45 }
46
47int getcopyconfigitemint(char *section, char *key, int def, int *value);
48int getcopyconfigitemintpositive(char *section, char *key, int def);
49int protected_atoi(char *buf, int *value);
50int positive_atoi(char *data);
51char *challenge_response(char *challenge, char *password);
18f8bd28 52char *request_error(int errn);
1ac1d43c 53int get_entropy(unsigned char *data, int bytes);
18f8bd28
CP
54int generate_nonce(unsigned char *nonce, int nterfacer);
55char *int_to_hex(unsigned char *input, char *buf, int len);
56int hex_to_int(char *input, unsigned char *buf, int buflen);
57
1ac1d43c
CP
58typedef struct {
59 unsigned char prevblock[16];
60 unsigned char scratch[16];
61 int nrounds;
62 unsigned long *rk;
63} rijndaelcbc;
64
1ac1d43c
CP
65unsigned char *rijndaelcbc_decrypt(rijndaelcbc *c, unsigned char *ctblock);
66unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock);
67void rijndaelcbc_free(rijndaelcbc *c);
68rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt);
69
18f8bd28 70#endif