1/*
2 * Copyright (c) 1997-2001 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the Institute nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34/* $Id$ */
35
36#ifndef __HDB_LOCL_H__
37#define __HDB_LOCL_H__
38
39#include <assert.h>
40#include <heimbase.h>
41
42#include <config.h>
43
44#include <stdio.h>
45#include <string.h>
46#include <stdlib.h>
47#include <errno.h>
48#ifdef HAVE_SYS_TYPES_H
49#include <sys/types.h>
50#endif
51#ifdef HAVE_UNISTD_H
52#include <unistd.h>
53#endif
54#ifdef HAVE_FCNTL_H
55#include <fcntl.h>
56#endif
57#ifdef HAVE_SYS_FILE_H
58#include <sys/file.h>
59#endif
60#ifdef HAVE_LIMITS_H
61#include <limits.h>
62#endif
63#include <roken.h>
64
65struct krb5_dh_moduli;
66struct AlgorithmIdentifier;
67struct _krb5_krb_auth_data;
68struct _krb5_key_data;
69struct _krb5_key_type;
70struct _krb5_checksum_type;
71struct _krb5_encryption_type;
72struct _krb5_srv_query_ctx;
73struct krb5_fast_state;
74struct _krb5_srp_group;
75struct _krb5_srp;
76
77#include "crypto-headers.h"
78#include <heimbase.h>
79#include <hx509.h>
80#include <krb5.h>
81#include <krb5-private.h>
82#include <hdb.h>
83#include <hdb-private.h>
84
85krb5_error_code hdb_od_create(krb5_context, HDB **, const char *);
86krb5_error_code hdb_keytab_create(krb5_context, HDB **, const char *);
87krb5_error_code _hdb_keytab2hdb_entry(krb5_context, const krb5_keytab_entry *, hdb_entry_ex *);
88
89#ifdef __APPLE__
90#define HDB_DEFAULT_DB "od:/Local/Default"
91#else
92#define HDB_DEFAULT_DB HDB_DB_DIR "/heimdal"
93#endif
94
95#define HDB_DB_FORMAT_ENTRY "hdb/db-format"
96
97#define KRB5_KDB_DISALLOW_POSTDATED	0x00000001
98#define KRB5_KDB_DISALLOW_FORWARDABLE	0x00000002
99#define KRB5_KDB_DISALLOW_TGT_BASED	0x00000004
100#define KRB5_KDB_DISALLOW_RENEWABLE	0x00000008
101#define KRB5_KDB_DISALLOW_PROXIABLE	0x00000010
102#define KRB5_KDB_DISALLOW_DUP_SKEY	0x00000020
103#define KRB5_KDB_DISALLOW_ALL_TIX	0x00000040
104#define KRB5_KDB_REQUIRES_PRE_AUTH	0x00000080
105#define KRB5_KDB_REQUIRES_HW_AUTH	0x00000100
106#define KRB5_KDB_REQUIRES_PWCHANGE	0x00000200
107#define KRB5_KDB_DISALLOW_SVR		0x00001000
108#define KRB5_KDB_PWCHANGE_SERVICE	0x00002000
109#define KRB5_KDB_SUPPORT_DESMD5		0x00004000
110#define KRB5_KDB_NEW_PRINC		0x00008000
111
112#undef ALLOC
113#define ALLOC(X) ((X) = calloc(1, sizeof(*(X))))
114#undef ALLOC_SEQ
115#define ALLOC_SEQ(X, N) do { (X)->len = (N); \
116(X)->val = calloc((X)->len, sizeof(*(X)->val)); } while(0)
117
118#endif /* __HDB_LOCL_H__ */
119