155682Smarkm/*
2233294Sstas * Copyright (c) 1997-2000 Kungliga Tekniska H��gskolan
3233294Sstas * (Royal Institute of Technology, Stockholm, Sweden).
4233294Sstas * All rights reserved.
555682Smarkm *
6233294Sstas * Redistribution and use in source and binary forms, with or without
7233294Sstas * modification, are permitted provided that the following conditions
8233294Sstas * are met:
955682Smarkm *
10233294Sstas * 1. Redistributions of source code must retain the above copyright
11233294Sstas *    notice, this list of conditions and the following disclaimer.
1255682Smarkm *
13233294Sstas * 2. Redistributions in binary form must reproduce the above copyright
14233294Sstas *    notice, this list of conditions and the following disclaimer in the
15233294Sstas *    documentation and/or other materials provided with the distribution.
1655682Smarkm *
17233294Sstas * 3. Neither the name of the Institute nor the names of its contributors
18233294Sstas *    may be used to endorse or promote products derived from this software
19233294Sstas *    without specific prior written permission.
2055682Smarkm *
21233294Sstas * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22233294Sstas * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23233294Sstas * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24233294Sstas * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25233294Sstas * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26233294Sstas * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27233294Sstas * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28233294Sstas * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29233294Sstas * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30233294Sstas * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31233294Sstas * SUCH DAMAGE.
3255682Smarkm */
3355682Smarkm
34233294Sstas/* $Id$ */
3555682Smarkm
36102644Snectar#ifndef __kadm5_privatex_h__
37102644Snectar#define __kadm5_privatex_h__
3855682Smarkm
3955682Smarkmstruct kadm_func {
40178825Sdfr    kadm5_ret_t (*chpass_principal) (void *, krb5_principal, const char*);
41233294Sstas    kadm5_ret_t (*create_principal) (void*, kadm5_principal_ent_t,
42178825Sdfr				     uint32_t, const char*);
4355682Smarkm    kadm5_ret_t (*delete_principal) (void*, krb5_principal);
4455682Smarkm    kadm5_ret_t (*destroy) (void*);
4555682Smarkm    kadm5_ret_t (*flush) (void*);
46233294Sstas    kadm5_ret_t (*get_principal) (void*, krb5_principal,
47178825Sdfr				  kadm5_principal_ent_t, uint32_t);
4855682Smarkm    kadm5_ret_t (*get_principals) (void*, const char*, char***, int*);
49178825Sdfr    kadm5_ret_t (*get_privs) (void*, uint32_t*);
50178825Sdfr    kadm5_ret_t (*modify_principal) (void*, kadm5_principal_ent_t, uint32_t);
51233294Sstas    kadm5_ret_t (*randkey_principal) (void*, krb5_principal,
5255682Smarkm				      krb5_keyblock**, int*);
5355682Smarkm    kadm5_ret_t (*rename_principal) (void*, krb5_principal, krb5_principal);
5472445Sassar    kadm5_ret_t (*chpass_principal_with_key) (void *, krb5_principal,
5572445Sassar					      int, krb5_key_data *);
5655682Smarkm};
5755682Smarkm
5855682Smarkm/* XXX should be integrated */
5955682Smarkmtypedef struct kadm5_common_context {
6055682Smarkm    krb5_context context;
6155682Smarkm    krb5_boolean my_context;
6255682Smarkm    struct kadm_func funcs;
6355682Smarkm    void *data;
6455682Smarkm}kadm5_common_context;
6555682Smarkm
6655682Smarkmtypedef struct kadm5_log_peer {
6755682Smarkm    int fd;
6855682Smarkm    char *name;
6955682Smarkm    krb5_auth_context ac;
7055682Smarkm    struct kadm5_log_peer *next;
7155682Smarkm} kadm5_log_peer;
7255682Smarkm
7355682Smarkmtypedef struct kadm5_log_context {
7455682Smarkm    char *log_file;
7555682Smarkm    int log_fd;
76178825Sdfr    uint32_t version;
77233294Sstas#ifndef NO_UNIX_SOCKETS
7855682Smarkm    struct sockaddr_un socket_name;
79233294Sstas#else
80233294Sstas    struct addrinfo *socket_info;
81233294Sstas#endif
82233294Sstas    krb5_socket_t socket_fd;
8355682Smarkm} kadm5_log_context;
8455682Smarkm
8555682Smarkmtypedef struct kadm5_server_context {
8655682Smarkm    krb5_context context;
8755682Smarkm    krb5_boolean my_context;
8855682Smarkm    struct kadm_func funcs;
8955682Smarkm    /* */
9055682Smarkm    kadm5_config_params config;
9155682Smarkm    HDB *db;
9255682Smarkm    krb5_principal caller;
9355682Smarkm    unsigned acl_flags;
9455682Smarkm    kadm5_log_context log_context;
9572445Sassar} kadm5_server_context;
9655682Smarkm
9755682Smarkmtypedef struct kadm5_client_context {
9855682Smarkm    krb5_context context;
9955682Smarkm    krb5_boolean my_context;
10055682Smarkm    struct kadm_func funcs;
10155682Smarkm    /* */
10255682Smarkm    krb5_auth_context ac;
10355682Smarkm    char *realm;
10455682Smarkm    char *admin_server;
10555682Smarkm    int kadmind_port;
10655682Smarkm    int sock;
10772445Sassar    char *client_name;
10872445Sassar    char *service_name;
10972445Sassar    krb5_prompter_fct prompter;
11072445Sassar    const char *keytab;
11172445Sassar    krb5_ccache ccache;
11272445Sassar    kadm5_config_params *realm_params;
11355682Smarkm}kadm5_client_context;
11455682Smarkm
115178825Sdfrtypedef struct kadm5_ad_context {
116178825Sdfr    krb5_context context;
117178825Sdfr    krb5_boolean my_context;
118178825Sdfr    struct kadm_func funcs;
119178825Sdfr    /* */
120178825Sdfr    kadm5_config_params config;
121178825Sdfr    krb5_principal caller;
122178825Sdfr    krb5_ccache ccache;
123178825Sdfr    char *client_name;
124178825Sdfr    char *realm;
125178825Sdfr    void *ldap_conn;
126178825Sdfr    char *base_dn;
127178825Sdfr} kadm5_ad_context;
128178825Sdfr
12955682Smarkmenum kadm_ops {
13055682Smarkm    kadm_get,
13155682Smarkm    kadm_delete,
13255682Smarkm    kadm_create,
13355682Smarkm    kadm_rename,
13455682Smarkm    kadm_chpass,
13555682Smarkm    kadm_modify,
13655682Smarkm    kadm_randkey,
13755682Smarkm    kadm_get_privs,
13872445Sassar    kadm_get_princs,
13972445Sassar    kadm_chpass_with_key,
14072445Sassar    kadm_nop
14155682Smarkm};
14255682Smarkm
14355682Smarkm#define KADMIN_APPL_VERSION "KADM0.1"
14455682Smarkm#define KADMIN_OLD_APPL_VERSION "KADM0.0"
14555682Smarkm
14672445Sassar#include "kadm5-private.h"
14755682Smarkm
148102644Snectar#endif /* __kadm5_privatex_h__ */
149