summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/keytab/file/ktfile.h
blob: 155f24603699537dc3c905881f68d1be63774da4 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*
 * lib/krb5/keytab/file/ktfile.h
 *
 * Copyright 1990 by the Massachusetts Institute of Technology.
 * All Rights Reserved.
 *
 * Export of this software from the United States of America may
 *   require a specific license from the United States Government.
 *   It is the responsibility of any person or organization contemplating
 *   export to obtain such a license before exporting.
 * 
 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
 * distribute this software and its documentation for any purpose and
 * without fee is hereby granted, provided that the above copyright
 * notice appear in all copies and that both that copyright notice and
 * this permission notice appear in supporting documentation, and that
 * the name of M.I.T. not be used in advertising or publicity pertaining
 * to distribution of the software without specific, written prior
 * permission.  M.I.T. makes no representations about the suitability of
 * this software for any purpose.  It is provided "as is" without express
 * or implied warranty.
 * 
 *
 * This header file contains information needed by internal routines
 * of the file-based ticket cache implementation.
 */


#ifndef KRB5_KTFILE__
#define KRB5_KTFILE__

#include <stdio.h>

/*
 * Constants
 */
#define IGNORE_VNO 0
#define IGNORE_ENCTYPE 0

#define KRB5_KT_VNO_1	0x0501	/* krb v5, keytab version 1 (DCE compat) */
#define KRB5_KT_VNO	0x0502	/* krb v5, keytab version 2 (standard)  */

#define KRB5_KT_DEFAULT_VNO KRB5_KT_VNO

/* 
 * Types
 */
typedef struct _krb5_ktfile_data {
    char *name;			/* Name of the file */
    FILE *openf;		/* open file, if any. */
    int	version;		/* Version number of keytab */
} krb5_ktfile_data;

/*
 * Macros
 */
#define KTPRIVATE(id) ((krb5_ktfile_data *)(id)->data)
#define KTFILENAME(id) (((krb5_ktfile_data *)(id)->data)->name)
#define KTFILEP(id) (((krb5_ktfile_data *)(id)->data)->openf)
#define KTVERSION(id) (((krb5_ktfile_data *)(id)->data)->version)

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 
	PROTOTYPE((krb5_context,
		   const char *,
		   krb5_keytab *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_wresolve 
	PROTOTYPE((krb5_context,
		   const char *,
		   krb5_keytab *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_get_name 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   char *,
		   int));

krb5_error_code KRB5_CALLCONV krb5_ktfile_close 
	PROTOTYPE((krb5_context,
		   krb5_keytab));

krb5_error_code KRB5_CALLCONV krb5_ktfile_get_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_principal,
		   krb5_kvno,
		   krb5_enctype,
		   krb5_keytab_entry *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_start_seq_get 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_kt_cursor *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_get_next 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *,
		   krb5_kt_cursor *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_end_get 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_kt_cursor *));

/* routines to be included on extended version (write routines) */
krb5_error_code KRB5_CALLCONV krb5_ktfile_add 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *));

krb5_error_code KRB5_CALLCONV krb5_ktfile_remove 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *));

krb5_error_code krb5_ktfileint_openr 
	PROTOTYPE((krb5_context,
		   krb5_keytab));

krb5_error_code krb5_ktfileint_openw 
	PROTOTYPE((krb5_context,
		   krb5_keytab));

krb5_error_code krb5_ktfileint_close 
	PROTOTYPE((krb5_context,
		   krb5_keytab));

krb5_error_code krb5_ktfileint_read_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *));

krb5_error_code krb5_ktfileint_write_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *));

krb5_error_code krb5_ktfileint_delete_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
                   krb5_int32));

krb5_error_code krb5_ktfileint_internal_read_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
		   krb5_keytab_entry *,
                   krb5_int32 *));

krb5_error_code krb5_ktfileint_size_entry 
	PROTOTYPE((krb5_context,
		   krb5_keytab_entry *,
                   krb5_int32 *));

krb5_error_code krb5_ktfileint_find_slot 
	PROTOTYPE((krb5_context,
		   krb5_keytab,
                   krb5_int32 *,
                   krb5_int32 *));


#endif /* KRB5_KTFILE__ */