private.h revision 102644
155682Smarkm/*
272445Sassar * Copyright (c) 1997-2000 Kungliga Tekniska H�gskolan
355682Smarkm * (Royal Institute of Technology, Stockholm, Sweden).
455682Smarkm * All rights reserved.
555682Smarkm *
655682Smarkm * Redistribution and use in source and binary forms, with or without
755682Smarkm * modification, are permitted provided that the following conditions
855682Smarkm * are met:
955682Smarkm *
1055682Smarkm * 1. Redistributions of source code must retain the above copyright
1155682Smarkm *    notice, this list of conditions and the following disclaimer.
1255682Smarkm *
1355682Smarkm * 2. Redistributions in binary form must reproduce the above copyright
1455682Smarkm *    notice, this list of conditions and the following disclaimer in the
1555682Smarkm *    documentation and/or other materials provided with the distribution.
1655682Smarkm *
1755682Smarkm * 3. Neither the name of the Institute nor the names of its contributors
1855682Smarkm *    may be used to endorse or promote products derived from this software
1955682Smarkm *    without specific prior written permission.
2055682Smarkm *
2155682Smarkm * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
2255682Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2355682Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2455682Smarkm * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
2555682Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2655682Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2755682Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2855682Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2955682Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3055682Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3155682Smarkm * SUCH DAMAGE.
3255682Smarkm */
3355682Smarkm
34102644Snectar/* $Id: private.h,v 1.15 2002/08/16 20:57:44 joda Exp $ */
3555682Smarkm
36102644Snectar#ifndef __kadm5_privatex_h__
37102644Snectar#define __kadm5_privatex_h__
3855682Smarkm
3955682Smarkmstruct kadm_func {
4055682Smarkm    kadm5_ret_t (*chpass_principal) (void *, krb5_principal, char*);
4155682Smarkm    kadm5_ret_t (*create_principal) (void*, kadm5_principal_ent_t,
4255682Smarkm				     u_int32_t, char*);
4355682Smarkm    kadm5_ret_t (*delete_principal) (void*, krb5_principal);
4455682Smarkm    kadm5_ret_t (*destroy) (void*);
4555682Smarkm    kadm5_ret_t (*flush) (void*);
4655682Smarkm    kadm5_ret_t (*get_principal) (void*, krb5_principal,
4755682Smarkm				  kadm5_principal_ent_t, u_int32_t);
4855682Smarkm    kadm5_ret_t (*get_principals) (void*, const char*, char***, int*);
4955682Smarkm    kadm5_ret_t (*get_privs) (void*, u_int32_t*);
5055682Smarkm    kadm5_ret_t (*modify_principal) (void*, kadm5_principal_ent_t, u_int32_t);
5155682Smarkm    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;
7655682Smarkm    u_int32_t version;
7755682Smarkm    struct sockaddr_un socket_name;
7855682Smarkm    int socket_fd;
7955682Smarkm} kadm5_log_context;
8055682Smarkm
8155682Smarkmtypedef struct kadm5_server_context {
8255682Smarkm    krb5_context context;
8355682Smarkm    krb5_boolean my_context;
8455682Smarkm    struct kadm_func funcs;
8555682Smarkm    /* */
8655682Smarkm    kadm5_config_params config;
8755682Smarkm    HDB *db;
8855682Smarkm    krb5_principal caller;
8955682Smarkm    unsigned acl_flags;
9055682Smarkm    kadm5_log_context log_context;
9172445Sassar} kadm5_server_context;
9255682Smarkm
9355682Smarkmtypedef struct kadm5_client_context {
9455682Smarkm    krb5_context context;
9555682Smarkm    krb5_boolean my_context;
9655682Smarkm    struct kadm_func funcs;
9755682Smarkm    /* */
9855682Smarkm    krb5_auth_context ac;
9955682Smarkm    char *realm;
10055682Smarkm    char *admin_server;
10155682Smarkm    int kadmind_port;
10255682Smarkm    int sock;
10372445Sassar    char *client_name;
10472445Sassar    char *service_name;
10572445Sassar    krb5_prompter_fct prompter;
10672445Sassar    const char *keytab;
10772445Sassar    krb5_ccache ccache;
10872445Sassar    kadm5_config_params *realm_params;
10955682Smarkm}kadm5_client_context;
11055682Smarkm
11155682Smarkmenum kadm_ops {
11255682Smarkm    kadm_get,
11355682Smarkm    kadm_delete,
11455682Smarkm    kadm_create,
11555682Smarkm    kadm_rename,
11655682Smarkm    kadm_chpass,
11755682Smarkm    kadm_modify,
11855682Smarkm    kadm_randkey,
11955682Smarkm    kadm_get_privs,
12072445Sassar    kadm_get_princs,
12172445Sassar    kadm_chpass_with_key,
12272445Sassar    kadm_nop
12355682Smarkm};
12455682Smarkm
12555682Smarkm#define KADMIN_APPL_VERSION "KADM0.1"
12655682Smarkm#define KADMIN_OLD_APPL_VERSION "KADM0.0"
12755682Smarkm
12855682Smarkm#define KADM5_LOG_SIGNAL HDB_DB_DIR "/signal"
12955682Smarkm
13072445Sassar#include "kadm5-private.h"
13155682Smarkm
132102644Snectar#endif /* __kadm5_privatex_h__ */
133