Rework LuCI build system
[project/luci.git] / libs / luci-lib-nixio / src / nixio-tls.h
1 #ifndef NIXIO_TLS_H_
2 #define NIXIO_TLS_H_
3
4 #include "nixio.h"
5 #include <sys/types.h>
6
7 #ifndef WITHOUT_OPENSSL
8 #include <openssl/ssl.h>
9 #include <openssl/md5.h>
10 #include <openssl/sha.h>
11 #endif
12
13 #define NIXIO_TLS_CTX_META "nixio.tls.ctx"
14 #define NIXIO_TLS_SOCK_META "nixio.tls.sock"
15
16 typedef struct nixio_tls_socket {
17         SSL             *socket;
18 #ifdef WITH_AXTLS
19         char    connected;
20         size_t  pbufsiz;
21         char    *pbufpos;
22         char    *pbuffer;
23 #endif
24 } nixio_tls_sock;
25
26 #define NIXIO_CRYPTO_HASH_META "nixio.crypto.hash"
27 #define NIXIO_DIGEST_SIZE 64
28 #define NIXIO_CRYPTO_BLOCK_SIZE 64
29
30 #define NIXIO_HASH_NONE 0
31 #define NIXIO_HASH_MD5  0x01
32 #define NIXIO_HASH_SHA1 0x02
33
34 #define NIXIO_HMAC_BIT  0x40
35
36 typedef int(*nixio_hash_initcb)(void *);
37 typedef int(*nixio_hash_updatecb)(void *, const void *, unsigned long);
38 typedef int(*nixio_hash_finalcb)(unsigned char *, void *);
39
40 typedef struct nixio_hash_obj {
41         uint                            type;
42         unsigned char           digest[NIXIO_DIGEST_SIZE];
43         size_t                          digest_size;
44         unsigned char           key[NIXIO_CRYPTO_BLOCK_SIZE];
45         size_t                          key_size;
46         size_t                          block_size;
47         void                            *ctx;
48         nixio_hash_initcb       init;
49         nixio_hash_updatecb     update;
50         nixio_hash_finalcb      final;
51 } nixio_hash;
52
53 #endif /* NIXIO_TLS_H_ */