4 #pragma ident "%Z%%M% %I% %E% SMI"
16 #define KDB_MAX_DB_NAME 128
17 #define KDB_REALM_SECTION "realms"
18 #define KDB_MODULE_POINTER "database_module"
19 #define KDB_MODULE_DEF_SECTION "dbdefaults"
20 #define KDB_MODULE_SECTION "dbmodules"
21 #define KDB_LIB_POINTER "db_library"
22 #define KDB_DATABASE_CONF_FILE DEFAULT_SECURE_PROFILE_PATH
23 #define KDB_DATABASE_ENV_PROF KDC_PROFILE_ENV
25 #define KRB5_DB_GET_DB_CONTEXT(kcontext) (((kdb5_dal_handle*) (kcontext)->db_context)->db_context)
26 #define KRB5_DB_GET_PROFILE(kcontext) ((kcontext)->profile)
27 #define KRB5_DB_GET_REALM(kcontext) ((kcontext)->default_realm)
29 typedef struct _kdb_vftabl
{
34 krb5_error_code (*init_library
)();
35 krb5_error_code (*fini_library
)();
36 krb5_error_code (*init_module
) (krb5_context kcontext
,
41 krb5_error_code (*fini_module
) (krb5_context kcontext
);
43 krb5_error_code (*db_create
) (krb5_context kcontext
,
47 krb5_error_code (*db_destroy
) (krb5_context kcontext
,
51 krb5_error_code (*db_get_age
) (krb5_context kcontext
,
55 krb5_error_code (*db_set_option
) (krb5_context kcontext
,
59 krb5_error_code (*db_lock
) (krb5_context kcontext
,
62 krb5_error_code (*db_unlock
) (krb5_context kcontext
);
64 krb5_error_code (*db_get_principal
) (krb5_context kcontext
,
65 krb5_const_principal search_for
,
66 krb5_db_entry
*entries
,
70 krb5_error_code (*db_get_principal_nolock
) (krb5_context kcontext
,
71 krb5_const_principal search_for
,
72 krb5_db_entry
*entries
,
76 krb5_error_code (*db_free_principal
) (krb5_context kcontext
,
80 krb5_error_code (*db_put_principal
) (krb5_context kcontext
,
81 krb5_db_entry
*entries
,
85 krb5_error_code (*db_delete_principal
) (krb5_context kcontext
,
86 krb5_const_principal search_for
,
89 /* Solaris Kerberos: adding support for db_args */
90 krb5_error_code (*db_iterate
) (krb5_context kcontext
,
92 int (*func
) (krb5_pointer
, krb5_db_entry
*),
93 krb5_pointer func_arg
,
96 krb5_error_code (*db_create_policy
) (krb5_context kcontext
,
97 osa_policy_ent_t policy
);
99 krb5_error_code (*db_get_policy
) (krb5_context kcontext
,
101 osa_policy_ent_t
*policy
,
104 krb5_error_code (*db_put_policy
) (krb5_context kcontext
,
105 osa_policy_ent_t policy
);
107 krb5_error_code (*db_iter_policy
) (krb5_context kcontext
,
109 osa_adb_iter_policy_func func
,
113 krb5_error_code (*db_delete_policy
) (krb5_context kcontext
,
116 void (*db_free_policy
) (krb5_context kcontext
,
117 osa_policy_ent_t val
);
119 krb5_error_code (*db_supported_realms
) (krb5_context kcontext
,
122 krb5_error_code (*db_free_supported_realms
) (krb5_context kcontext
,
126 const char * (*errcode_2_string
) (krb5_context kcontext
,
128 void (*release_errcode_string
) (krb5_context kcontext
, const char *msg
);
130 void * (*db_alloc
) (krb5_context kcontext
, void *ptr
, size_t size
);
131 void (*db_free
) (krb5_context kcontext
, void *ptr
);
135 /* optional functions */
136 krb5_error_code (*set_master_key
) (krb5_context kcontext
,
140 krb5_error_code (*get_master_key
) (krb5_context kcontext
,
141 krb5_keyblock
**key
);
144 krb5_error_code (*setup_master_key_name
) (krb5_context kcontext
,
148 krb5_principal
*principal
);
150 krb5_error_code (*store_master_key
) (krb5_context kcontext
,
152 krb5_principal mname
,
156 krb5_error_code (*fetch_master_key
) (krb5_context kcontext
,
157 krb5_principal mname
,
162 krb5_error_code (*verify_master_key
) (krb5_context kcontext
,
163 krb5_principal mprinc
,
164 krb5_keyblock
*mkey
);
166 krb5_error_code (*dbe_search_enctype
) (krb5_context kcontext
,
167 krb5_db_entry
*dbentp
,
172 krb5_key_data
**kdatap
);
176 (*db_change_pwd
) (krb5_context context
,
177 krb5_keyblock
* master_key
,
178 krb5_key_salt_tuple
* ks_tuple
,
182 krb5_boolean keepold
,
183 krb5_db_entry
* db_entry
);
185 /* Promote a temporary database to be the live one. */
186 krb5_error_code (*promote_db
) (krb5_context context
,
192 typedef struct _db_library
{
193 char name
[KDB_MAX_DB_NAME
];
195 struct plugin_dir_handle dl_dir_handle
;
197 struct _db_library
*next
, *prev
;
200 typedef struct _kdb5_dal_handle
202 /* Helps us to change db_library without affecting modules to some
205 db_library lib_handle
;
208 #endif /* end of _KRB5_KDB5_H_ */