#ifndef _KRB5_KTFILE
#define _KRB5_KTFILE
#include <stdio.h>
#include <sys/mman.h>
#define IGNORE_VNO 0
#define IGNORE_ENCTYPE 0
#define KRB5_KT_VNO_1 0x0501
#define KRB5_KT_VNO 0x0502
#define KRB5_KT_DEFAULT_VNO KRB5_KT_VNO
typedef struct _krb5_ktfile_data {
char *name;
char *datap;
int version;
offset_t offset;
size_t filesize;
size_t bufsize;
uchar_t writable:1;
} krb5_ktfile_data;
#define KTPRIVATE(id) ((krb5_ktfile_data *)(id)->data)
#define KTFILENAME(id) (((krb5_ktfile_data *)(id)->data)->name)
#define KTDATAP(id) (((krb5_ktfile_data *)(id)->data)->datap)
#define KTVERSION(id) (((krb5_ktfile_data *)(id)->data)->version)
#define KTOFFSET(id) (((krb5_ktfile_data *)(id)->data)->offset)
extern struct _krb5_kt_ops krb5_ktf_ops;
extern struct _krb5_kt_ops krb5_ktf_writable_ops;
krb5_error_code KRB5_CALLCONV krb5_ktfile_resolve
(krb5_context,
const char *,
krb5_keytab *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_wresolve
(krb5_context,
const char *,
krb5_keytab *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_get_name
(krb5_context,
krb5_keytab,
char *,
int);
krb5_error_code KRB5_CALLCONV krb5_ktfile_close
(krb5_context,
krb5_keytab);
krb5_error_code KRB5_CALLCONV krb5_ktfile_get_entry
(krb5_context,
krb5_keytab,
krb5_const_principal,
krb5_kvno,
krb5_enctype,
krb5_keytab_entry *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_start_seq_get
(krb5_context,
krb5_keytab,
krb5_kt_cursor *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_get_next
(krb5_context,
krb5_keytab,
krb5_keytab_entry *,
krb5_kt_cursor *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_end_get
(krb5_context,
krb5_keytab,
krb5_kt_cursor *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_add
(krb5_context,
krb5_keytab,
krb5_keytab_entry *);
krb5_error_code KRB5_CALLCONV krb5_ktfile_remove
(krb5_context,
krb5_keytab,
krb5_keytab_entry *);
krb5_error_code krb5_ktfileint_openr
(krb5_context,
krb5_keytab);
krb5_error_code krb5_ktfileint_openw
(krb5_context,
krb5_keytab);
krb5_error_code krb5_ktfileint_close
(krb5_context,
krb5_keytab);
krb5_error_code krb5_ktfileint_read_entry
(krb5_context,
krb5_keytab,
krb5_keytab_entry *);
krb5_error_code krb5_ktfileint_write_entry
(krb5_context,
krb5_keytab,
krb5_keytab_entry *);
krb5_error_code krb5_ktfileint_delete_entry
(krb5_context,
krb5_keytab,
krb5_int32);
krb5_error_code krb5_ktfileint_internal_read_entry
(krb5_context,
krb5_keytab,
krb5_keytab_entry *,
krb5_int32 *);
krb5_error_code krb5_ktfileint_size_entry
(krb5_context,
krb5_keytab_entry *,
krb5_int32 *);
krb5_error_code krb5_ktfileint_find_slot
(krb5_context,
krb5_keytab,
krb5_int32 *,
krb5_int32 *);
#endif