92 lines
2.1 KiB
C
92 lines
2.1 KiB
C
#define STRDEF(s, d) (s && (s)[0] != '\0')?(s):(d)
|
|
|
|
#define LIST_HEAD(name, type) \
|
|
struct name { \
|
|
struct type *lh_first; /* first element */ \
|
|
}
|
|
|
|
#define LIST_ENTRY(type) \
|
|
struct { \
|
|
struct type *le_next; /* next element */ \
|
|
struct type **le_prev; /* address of previous next element */ \
|
|
}
|
|
|
|
#define LIST_INIT(head) { \
|
|
(head)->lh_first = NULL; \
|
|
}
|
|
|
|
#define LIST_INSERT_HEAD(head, elm, field) { \
|
|
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
|
|
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
|
|
(head)->lh_first = (elm); \
|
|
(elm)->field.le_prev = &(head)->lh_first; \
|
|
}
|
|
|
|
#define LIST_REMOVE(elm, field) { \
|
|
if ((elm)->field.le_next != NULL) \
|
|
(elm)->field.le_next->field.le_prev = \
|
|
(elm)->field.le_prev; \
|
|
*(elm)->field.le_prev = (elm)->field.le_next; \
|
|
}
|
|
|
|
struct name_list {
|
|
LIST_ENTRY(name_list) list;
|
|
LPTSTR name;
|
|
};
|
|
typedef struct name_list name_list_t;
|
|
#define NewNameList() \
|
|
(name_list_t *)calloc(sizeof(name_list_t), 1)
|
|
|
|
struct krb5_realm {
|
|
LIST_ENTRY(krb5_realm) list;
|
|
LIST_HEAD(kdc, name_list) kdc;
|
|
LIST_HEAD(kpasswd, name_list) kpasswd;
|
|
LIST_HEAD(altname, name_list) altname;
|
|
DWORD realm_flags;
|
|
DWORD ap_req_chksum;
|
|
DWORD preauth_type;
|
|
TCHAR name[1];
|
|
};
|
|
typedef struct krb5_realm krb5_realm_t;
|
|
#define NewRealm(l) (krb5_realm_t *)calloc(sizeof(krb5_realm_t) + (l*sizeof(TCHAR)), 1)
|
|
|
|
struct krb5_rgy {
|
|
LIST_HEAD(realms, krb5_realm) realms;
|
|
};
|
|
typedef struct krb5_rgy krb5_rgy_t;
|
|
|
|
struct enctype_entry
|
|
{
|
|
const struct enctype_lookup_entry *ktt;
|
|
BOOL used;
|
|
};
|
|
typedef struct enctype_entry enctype_entry_t;
|
|
|
|
|
|
#define REGKEY TEXT("system\\currentcontrolset\\control\\lsa\\kerberos")
|
|
|
|
#ifndef REG_SZ
|
|
#define REG_SZ 0x0001
|
|
#endif
|
|
|
|
#ifndef REG_BINARY
|
|
#define REG_BINARY 0x0003
|
|
#endif
|
|
|
|
#ifndef REG_DWORD
|
|
#define REG_DWORD 0x0004
|
|
#endif
|
|
|
|
#ifndef REG_MULTI_SZ
|
|
#define REG_MULTI_SZ 0x0007
|
|
#endif
|
|
|
|
#ifndef HKEY_LOCAL_MACHINE
|
|
#define HKEY_LOCAL_MACHINE 0x80000002
|
|
#define HKEY_DYN_DATA 0x80000006
|
|
#endif
|
|
|
|
UINT Krb5NdiCreate(void);
|
|
UINT Krb5NdiInstall(krb5_rgy_t*);
|
|
UINT Krb5NdiDestroy(krb5_rgy_t*);
|