1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef AUTH_H
30 #define AUTH_H
31
32 #include <sys/types.h>
33 #include <inttypes.h>
34 #include "../public/auth.h"
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 typedef struct {
41 User user;
42 char *authdb;
43 sstr_t *groups;
44 size_t numgroups;
45 char *password;
46 uint32_t ref;
47 } CachedUser;
48
49 typedef struct user_cache_elm UserCacheElm;
50 struct user_cache_elm {
51 CachedUser *user;
52 UserCacheElm *next_user;
53 UcxKey key;
54 size_t slot;
55 UserCacheElm *next_elm;
56 time_t created;
57 };
58
59 typedef struct {
60 UserCacheElm **map;
61 size_t size;
62 size_t count;
63 size_t max_users;
64 UserCacheElm *head;
65 UserCacheElm *trail;
66 } UserCache;
67
68 void auth_cache_init();
69
70 User* auth_cache_get(
char *authdb,
char *user);
71 void auth_cache_add(
72 char *authdb,
73 User *user,
74 char *password,
75 char **groups,
76 size_t numgroups);
77
78 void auth_cache_remove_from_map(UserCacheElm *elm);
79
80 int cached_user_verify_password(CachedUser *user,
char *password);
81 int cached_user_check_group(CachedUser *user,
char *group);
82 void cached_user_unref(CachedUser *user);
83 void cached_user_delete(CachedUser *user);
84
85 #ifdef __cplusplus
86 }
87 #endif
88
89 #endif
90
91