]>
jfr.im git - irc/quakenet/newserv.git/blob - nterface/library.h
2 nterface library functions
3 Copyright (C) 2003-2004 Chris Porter.
6 #ifndef __nterface_library_H
7 #define __nterface_library_H
9 #include "../core/error.h"
11 #include "../lib/sha2.h"
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
24 #define RE_SOCKET_ERROR 0x0B
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]);
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]);
31 #define MemError() Error("nterface", ERR_FATAL, "Memory allocation error, file: %s line: %d", __FILE__, __LINE__);
33 #define RANDOM_LOCATION "/dev/urandom"
41 #define MemCheckR(x, y) \
47 int getcopyconfigitemint(char *section
, char *key
, int def
, int *value
);
48 int getcopyconfigitemintpositive(char *section
, char *key
, int def
);
49 int protected_atoi(char *buf
, int *value
);
50 int positive_atoi(char *data
);
51 char *challenge_response(char *challenge
, char *password
);
52 char *request_error(int errn
);
53 int get_entropy(unsigned char *data
, int bytes
);
54 int generate_nonce(unsigned char *nonce
, int nterfacer
);
55 char *int_to_hex(unsigned char *input
, char *buf
, int len
);
56 int hex_to_int(char *input
, unsigned char *buf
, int buflen
);
59 unsigned char prevblock
[16];
60 unsigned char scratch
[16];
66 SHA256_CTX outer
, inner
;
69 void hmacsha256_final(hmacsha256
*c
, unsigned char *digest
);
70 void hmacsha256_update(hmacsha256
*c
, unsigned char *message
, int messagelen
);
71 void hmacsha256_init(hmacsha256
*c
, unsigned char *key
, int keylen
);
72 unsigned char *rijndaelcbc_decrypt(rijndaelcbc
*c
, unsigned char *ctblock
);
73 unsigned char *rijndaelcbc_encrypt(rijndaelcbc
*c
, unsigned char *ptblock
);
74 void rijndaelcbc_free(rijndaelcbc
*c
);
75 rijndaelcbc
*rijndaelcbc_init(unsigned char *key
, int keybits
, unsigned char *iv
, int decrypt
);