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