#ifndef KRB5_GENERAL__
#define KRB5_GENERAL__
#ifndef KRB5_DEPRECATED
#define KRB5_DEPRECATED 0
#endif
#if defined(__MACH__) && defined(__APPLE__)
# include <TargetConditionals.h>
# if TARGET_RT_MAC_CFM
# error "Use KfM 4.0 SDK headers for CFM compilation."
# endif
#endif
#if defined(_MSDOS) || defined(_WIN32)
#include <win-mac.h>
#endif
#ifndef KRB5_CONFIG__
#ifndef KRB5_CALLCONV
#define KRB5_CALLCONV
#define KRB5_CALLCONV_C
#endif
#endif
#ifndef KRB5_CALLCONV_WRONG
#define KRB5_CALLCONV_WRONG
#endif
#ifndef THREEPARAMOPEN
#define THREEPARAMOPEN(x,y,z) open(x,y,z)
#endif
#define KRB5_OLD_CRYPTO
#include <stdlib.h>
#include <limits.h>
#include <stdarg.h>
#ifndef KRB5INT_BEGIN_DECLS
#if defined(__cplusplus)
#define KRB5INT_BEGIN_DECLS extern "C" {
#define KRB5INT_END_DECLS }
#else
#define KRB5INT_BEGIN_DECLS
#define KRB5INT_END_DECLS
#endif
#endif
KRB5INT_BEGIN_DECLS
#if TARGET_OS_MAC
# pragma pack(push,2)
#endif
#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 30203
# define KRB5_ATTR_DEPRECATED __attribute__((deprecated))
#elif defined _WIN32
# define KRB5_ATTR_DEPRECATED __declspec(deprecated)
#else
# define KRB5_ATTR_DEPRECATED
#endif
struct _profile_t;
typedef unsigned char krb5_octet;
#if INT_MAX == 0x7fff
typedef int krb5_int16;
typedef unsigned int krb5_ui_2;
#elif SHRT_MAX == 0x7fff
typedef short krb5_int16;
typedef unsigned short krb5_ui_2;
#else
#error undefined 16 bit type
#endif
#if INT_MAX == 0x7fffffffL
typedef int krb5_int32;
typedef unsigned int krb5_ui_4;
#elif LONG_MAX == 0x7fffffffL
typedef long krb5_int32;
typedef unsigned long krb5_ui_4;
#elif SHRT_MAX == 0x7fffffffL
typedef short krb5_int32;
typedef unsigned short krb5_ui_4;
#else
#error: undefined 32 bit type
#endif
#define VALID_INT_BITS INT_MAX
#define VALID_UINT_BITS UINT_MAX
#define KRB5_INT32_MAX 2147483647
#define KRB5_INT32_MIN (-KRB5_INT32_MAX-1)
#define KRB5_INT16_MAX 65535
#define KRB5_INT16_MIN (-KRB5_INT16_MAX-1)
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
typedef unsigned int krb5_boolean;
typedef unsigned int krb5_msgtype;
typedef unsigned int krb5_kvno;
typedef krb5_int32 krb5_addrtype;
typedef krb5_int32 krb5_enctype;
typedef krb5_int32 krb5_cksumtype;
typedef krb5_int32 krb5_authdatatype;
typedef krb5_int32 krb5_keyusage;
typedef krb5_int32 krb5_preauthtype;
typedef krb5_int32 krb5_flags;
typedef krb5_int32 krb5_timestamp;
typedef krb5_int32 krb5_error_code;
typedef krb5_int32 krb5_deltat;
typedef krb5_error_code krb5_magic;
typedef struct _krb5_data {
krb5_magic magic;
unsigned int length;
char *data;
} krb5_data;
typedef struct _krb5_octet_data {
krb5_magic magic;
unsigned int length;
krb5_octet *data;
} krb5_octet_data;
#define SALT_TYPE_AFS_LENGTH UINT_MAX
#define SALT_TYPE_NO_LENGTH UINT_MAX
typedef void * krb5_pointer;
typedef void const * krb5_const_pointer;
typedef struct krb5_principal_data {
krb5_magic magic;
krb5_data realm;
krb5_data *data;
krb5_int32 length;
krb5_int32 type;
} krb5_principal_data;
typedef krb5_principal_data * krb5_principal;
#define KRB5_NT_UNKNOWN 0
#define KRB5_NT_PRINCIPAL 1
#define KRB5_NT_SRV_INST 2
#define KRB5_NT_SRV_HST 3
#define KRB5_NT_SRV_XHST 4
#define KRB5_NT_UID 5
typedef const krb5_principal_data *krb5_const_principal;
#define krb5_princ_realm(context, princ) (&(princ)->realm)
#define krb5_princ_set_realm(context, princ,value) ((princ)->realm = *(value))
#define krb5_princ_set_realm_length(context, princ,value) (princ)->realm.length = (value)
#define krb5_princ_set_realm_data(context, princ,value) (princ)->realm.data = (value)
#define krb5_princ_size(context, princ) (princ)->length
#define krb5_princ_type(context, princ) (princ)->type
#define krb5_princ_name(context, princ) (princ)->data
#define krb5_princ_component(context, princ,i) \
(((i) < krb5_princ_size(context, princ)) \
? (princ)->data + (i) \
: NULL)
#define KRB5_REFERRAL_REALM ""
krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const krb5_data *);
typedef struct _krb5_address {
krb5_magic magic;
krb5_addrtype addrtype;
unsigned int length;
krb5_octet *contents;
} krb5_address;
#define ADDRTYPE_INET 0x0002
#define ADDRTYPE_CHAOS 0x0005
#define ADDRTYPE_XNS 0x0006
#define ADDRTYPE_ISO 0x0007
#define ADDRTYPE_DDP 0x0010
#define ADDRTYPE_INET6 0x0018
#define ADDRTYPE_ADDRPORT 0x0100
#define ADDRTYPE_IPPORT 0x0101
#define ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000)
struct _krb5_context;
typedef struct _krb5_context * krb5_context;
struct _krb5_auth_context;
typedef struct _krb5_auth_context * krb5_auth_context;
struct _krb5_cryptosystem_entry;
typedef struct _krb5_keyblock {
krb5_magic magic;
krb5_enctype enctype;
unsigned int length;
krb5_octet *contents;
} krb5_keyblock;
#ifdef KRB5_OLD_CRYPTO
typedef struct _krb5_encrypt_block {
krb5_magic magic;
krb5_enctype crypto_entry;
krb5_keyblock *key;
} krb5_encrypt_block;
#endif
typedef struct _krb5_checksum {
krb5_magic magic;
krb5_cksumtype checksum_type;
unsigned int length;
krb5_octet *contents;
} krb5_checksum;
typedef struct _krb5_enc_data {
krb5_magic magic;
krb5_enctype enctype;
krb5_kvno kvno;
krb5_data ciphertext;
} krb5_enc_data;
#define ENCTYPE_NULL 0x0000
#define ENCTYPE_DES_CBC_CRC 0x0001
#define ENCTYPE_DES_CBC_MD4 0x0002
#define ENCTYPE_DES_CBC_MD5 0x0003
#define ENCTYPE_DES_CBC_RAW 0x0004
#define ENCTYPE_DES3_CBC_SHA 0x0005
#define ENCTYPE_DES3_CBC_RAW 0x0006
#define ENCTYPE_DES_HMAC_SHA1 0x0008
#define ENCTYPE_DSA_SHA1_CMS 0x0009
#define ENCTYPE_MD5_RSA_CMS 0x000a
#define ENCTYPE_SHA1_RSA_CMS 0x000b
#define ENCTYPE_RC2_CBC_ENV 0x000c
#define ENCTYPE_RSA_ENV 0x000d
#define ENCTYPE_RSA_ES_OAEP_ENV 0x000e
#define ENCTYPE_DES3_CBC_ENV 0x000f
#define ENCTYPE_DES3_CBC_SHA1 0x0010
#define ENCTYPE_AES128_CTS_HMAC_SHA1_96 0x0011
#define ENCTYPE_AES256_CTS_HMAC_SHA1_96 0x0012
#define ENCTYPE_ARCFOUR_HMAC 0x0017
#define ENCTYPE_ARCFOUR_HMAC_EXP 0x0018
#define ENCTYPE_UNKNOWN 0x01ff
#define CKSUMTYPE_CRC32 0x0001
#define CKSUMTYPE_RSA_MD4 0x0002
#define CKSUMTYPE_RSA_MD4_DES 0x0003
#define CKSUMTYPE_DESCBC 0x0004
#define CKSUMTYPE_RSA_MD5 0x0007
#define CKSUMTYPE_RSA_MD5_DES 0x0008
#define CKSUMTYPE_NIST_SHA 0x0009
#define CKSUMTYPE_HMAC_SHA1_DES3 0x000c
#define CKSUMTYPE_HMAC_SHA1_96_AES128 0x000f
#define CKSUMTYPE_HMAC_SHA1_96_AES256 0x0010
#define CKSUMTYPE_HMAC_MD5_ARCFOUR -138
enum {
KRB5_C_RANDSOURCE_OLDAPI = 0,
KRB5_C_RANDSOURCE_OSRAND = 1,
KRB5_C_RANDSOURCE_TRUSTEDPARTY = 2,
KRB5_C_RANDSOURCE_TIMING = 3,
KRB5_C_RANDSOURCE_EXTERNAL_PROTOCOL = 4,
KRB5_C_RANDSOURCE_MAX = 5
};
#ifndef krb5_roundup
#define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
#endif
#if 1
#define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
#define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
#else
#define krb5_x(ptr,args) ((*(ptr)) args)
#define krb5_xc(ptr,args) ((*(ptr)) args)
#endif
krb5_error_code KRB5_CALLCONV
krb5_c_encrypt
(krb5_context context, const krb5_keyblock *key,
krb5_keyusage usage, const krb5_data *cipher_state,
const krb5_data *input, krb5_enc_data *output);
krb5_error_code KRB5_CALLCONV
krb5_c_decrypt
(krb5_context context, const krb5_keyblock *key,
krb5_keyusage usage, const krb5_data *cipher_state,
const krb5_enc_data *input, krb5_data *output);
krb5_error_code KRB5_CALLCONV
krb5_c_encrypt_length
(krb5_context context, krb5_enctype enctype,
size_t inputlen, size_t *length);
krb5_error_code KRB5_CALLCONV
krb5_c_block_size
(krb5_context context, krb5_enctype enctype,
size_t *blocksize);
krb5_error_code KRB5_CALLCONV
krb5_c_keylengths
(krb5_context context, krb5_enctype enctype,
size_t *keybytes, size_t *keylength);
krb5_error_code KRB5_CALLCONV
krb5_c_init_state
(krb5_context context,
const krb5_keyblock *key, krb5_keyusage usage,
krb5_data *new_state);
krb5_error_code KRB5_CALLCONV
krb5_c_free_state
(krb5_context context, const krb5_keyblock *key, krb5_data *state);
krb5_error_code KRB5_CALLCONV
krb5_c_prf (krb5_context, const krb5_keyblock *,
krb5_data *in, krb5_data *out);
krb5_error_code KRB5_CALLCONV
krb5_c_prf_length (krb5_context, krb5_enctype, size_t *outlen);
krb5_error_code KRB5_CALLCONV
krb5_c_make_random_key
(krb5_context context, krb5_enctype enctype,
krb5_keyblock *k5_random_key);
krb5_error_code KRB5_CALLCONV
krb5_c_random_to_key
(krb5_context context, krb5_enctype enctype,
krb5_data *random_data, krb5_keyblock *k5_random_key);
krb5_error_code KRB5_CALLCONV
krb5_c_random_add_entropy
(krb5_context context, unsigned int randsource_id, const krb5_data *data);
krb5_error_code KRB5_CALLCONV
krb5_c_random_make_octets
(krb5_context context, krb5_data *data);
krb5_error_code KRB5_CALLCONV
krb5_c_random_os_entropy
(krb5_context context, int strong, int *success);
krb5_error_code KRB5_CALLCONV
krb5_c_random_seed
(krb5_context context, krb5_data *data);
krb5_error_code KRB5_CALLCONV
krb5_c_string_to_key
(krb5_context context, krb5_enctype enctype,
const krb5_data *string, const krb5_data *salt,
krb5_keyblock *key);
krb5_error_code KRB5_CALLCONV
krb5_c_string_to_key_with_params(krb5_context context,
krb5_enctype enctype,
const krb5_data *string,
const krb5_data *salt,
const krb5_data *params,
krb5_keyblock *key);
krb5_error_code KRB5_CALLCONV
krb5_c_enctype_compare
(krb5_context context, krb5_enctype e1, krb5_enctype e2,
krb5_boolean *similar);
krb5_error_code KRB5_CALLCONV
krb5_c_make_checksum
(krb5_context context, krb5_cksumtype cksumtype,
const krb5_keyblock *key, krb5_keyusage usage,
const krb5_data *input, krb5_checksum *cksum);
krb5_error_code KRB5_CALLCONV
krb5_c_verify_checksum
(krb5_context context,
const krb5_keyblock *key, krb5_keyusage usage,
const krb5_data *data,
const krb5_checksum *cksum,
krb5_boolean *valid);
krb5_error_code KRB5_CALLCONV
krb5_c_checksum_length
(krb5_context context, krb5_cksumtype cksumtype,
size_t *length);
krb5_error_code KRB5_CALLCONV
krb5_c_keyed_checksum_types
(krb5_context context, krb5_enctype enctype,
unsigned int *count, krb5_cksumtype **cksumtypes);
#define KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS 1
#define KRB5_KEYUSAGE_KDC_REP_TICKET 2
#define KRB5_KEYUSAGE_AS_REP_ENCPART 3
#define KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY 4
#define KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY 5
#define KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM 6
#define KRB5_KEYUSAGE_TGS_REQ_AUTH 7
#define KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY 8
#define KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY 9
#define KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM 10
#define KRB5_KEYUSAGE_AP_REQ_AUTH 11
#define KRB5_KEYUSAGE_AP_REP_ENCPART 12
#define KRB5_KEYUSAGE_KRB_PRIV_ENCPART 13
#define KRB5_KEYUSAGE_KRB_CRED_ENCPART 14
#define KRB5_KEYUSAGE_KRB_SAFE_CKSUM 15
#define KRB5_KEYUSAGE_APP_DATA_ENCRYPT 16
#define KRB5_KEYUSAGE_APP_DATA_CKSUM 17
#define KRB5_KEYUSAGE_KRB_ERROR_CKSUM 18
#define KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM 19
#define KRB5_KEYUSAGE_AD_MTE 20
#define KRB5_KEYUSAGE_AD_ITE 21
#define KRB5_KEYUSAGE_GSS_TOK_MIC 22
#define KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG 23
#define KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV 24
#define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM 25
#define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID 26
#define KRB5_KEYUSAGE_PA_SAM_RESPONSE 27
#define KRB5_KEYUSAGE_PA_REFERRAL 26
krb5_boolean KRB5_CALLCONV krb5_c_valid_enctype
(krb5_enctype ktype);
krb5_boolean KRB5_CALLCONV krb5_c_valid_cksumtype
(krb5_cksumtype ctype);
krb5_boolean KRB5_CALLCONV krb5_c_is_coll_proof_cksum
(krb5_cksumtype ctype);
krb5_boolean KRB5_CALLCONV krb5_c_is_keyed_cksum
(krb5_cksumtype ctype);
#ifdef KRB5_OLD_CRYPTO
krb5_error_code KRB5_CALLCONV krb5_encrypt
(krb5_context context,
krb5_const_pointer inptr,
krb5_pointer outptr,
size_t size,
krb5_encrypt_block * eblock,
krb5_pointer ivec);
krb5_error_code KRB5_CALLCONV krb5_decrypt
(krb5_context context,
krb5_const_pointer inptr,
krb5_pointer outptr,
size_t size,
krb5_encrypt_block * eblock,
krb5_pointer ivec);
krb5_error_code KRB5_CALLCONV krb5_process_key
(krb5_context context,
krb5_encrypt_block * eblock,
const krb5_keyblock * key);
krb5_error_code KRB5_CALLCONV krb5_finish_key
(krb5_context context,
krb5_encrypt_block * eblock);
krb5_error_code KRB5_CALLCONV krb5_string_to_key
(krb5_context context,
const krb5_encrypt_block * eblock,
krb5_keyblock * keyblock,
const krb5_data * data,
const krb5_data * salt);
krb5_error_code KRB5_CALLCONV krb5_init_random_key
(krb5_context context,
const krb5_encrypt_block * eblock,
const krb5_keyblock * keyblock,
krb5_pointer * ptr);
krb5_error_code KRB5_CALLCONV krb5_finish_random_key
(krb5_context context,
const krb5_encrypt_block * eblock,
krb5_pointer * ptr);
krb5_error_code KRB5_CALLCONV krb5_random_key
(krb5_context context,
const krb5_encrypt_block * eblock,
krb5_pointer ptr,
krb5_keyblock ** keyblock);
krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
(krb5_context context,
const krb5_encrypt_block * eblock);
krb5_error_code KRB5_CALLCONV krb5_use_enctype
(krb5_context context,
krb5_encrypt_block * eblock,
krb5_enctype enctype);
size_t KRB5_CALLCONV krb5_encrypt_size
(size_t length,
krb5_enctype crypto);
size_t KRB5_CALLCONV krb5_checksum_size
(krb5_context context,
krb5_cksumtype ctype);
krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
(krb5_context context,
krb5_cksumtype ctype,
krb5_const_pointer in, size_t in_length,
krb5_const_pointer seed, size_t seed_length,
krb5_checksum * outcksum);
krb5_error_code KRB5_CALLCONV krb5_verify_checksum
(krb5_context context,
krb5_cksumtype ctype,
const krb5_checksum * cksum,
krb5_const_pointer in, size_t in_length,
krb5_const_pointer seed, size_t seed_length);
#endif
#define KDC_OPT_FORWARDABLE 0x40000000
#define KDC_OPT_FORWARDED 0x20000000
#define KDC_OPT_PROXIABLE 0x10000000
#define KDC_OPT_PROXY 0x08000000
#define KDC_OPT_ALLOW_POSTDATE 0x04000000
#define KDC_OPT_POSTDATED 0x02000000
#define KDC_OPT_RENEWABLE 0x00800000
#define KDC_OPT_REQUEST_ANONYMOUS 0x00020000
#define KDC_OPT_CANONICALIZE 0x00010000
#define KDC_OPT_DISABLE_TRANSITED_CHECK 0x00000020
#define KDC_OPT_RENEWABLE_OK 0x00000010
#define KDC_OPT_ENC_TKT_IN_SKEY 0x00000008
#define KDC_OPT_RENEW 0x00000002
#define KDC_OPT_VALIDATE 0x00000001
#define KDC_TKT_COMMON_MASK 0x54800000
#define AP_OPTS_RESERVED 0x80000000
#define AP_OPTS_USE_SESSION_KEY 0x40000000
#define AP_OPTS_MUTUAL_REQUIRED 0x20000000
#define AP_OPTS_USE_SUBKEY 0x00000001
#define AP_OPTS_WIRE_MASK 0xfffffff0
#define AD_TYPE_RESERVED 0x8000
#define AD_TYPE_EXTERNAL 0x4000
#define AD_TYPE_REGISTERED 0x2000
#define AD_TYPE_FIELD_TYPE_MASK 0x1fff
#define TKT_FLG_FORWARDABLE 0x40000000
#define TKT_FLG_FORWARDED 0x20000000
#define TKT_FLG_PROXIABLE 0x10000000
#define TKT_FLG_PROXY 0x08000000
#define TKT_FLG_MAY_POSTDATE 0x04000000
#define TKT_FLG_POSTDATED 0x02000000
#define TKT_FLG_INVALID 0x01000000
#define TKT_FLG_RENEWABLE 0x00800000
#define TKT_FLG_INITIAL 0x00400000
#define TKT_FLG_PRE_AUTH 0x00200000
#define TKT_FLG_HW_AUTH 0x00100000
#define TKT_FLG_TRANSIT_POLICY_CHECKED 0x00080000
#define TKT_FLG_OK_AS_DELEGATE 0x00040000
#define TKT_FLG_ANONYMOUS 0x00020000
#define LR_TYPE_THIS_SERVER_ONLY 0x8000
#define LR_TYPE_INTERPRETATION_MASK 0x7fff
#define AD_TYPE_EXTERNAL 0x4000
#define AD_TYPE_REGISTERED 0x2000
#define AD_TYPE_FIELD_TYPE_MASK 0x1fff
#define AD_TYPE_INTERNAL_MASK 0x3fff
#define MSEC_DIRBIT 0x8000
#define MSEC_VAL_MASK 0x7fff
#define KRB5_PVNO 5
#define KRB5_AS_REQ ((krb5_msgtype)10)
#define KRB5_AS_REP ((krb5_msgtype)11)
#define KRB5_TGS_REQ ((krb5_msgtype)12)
#define KRB5_TGS_REP ((krb5_msgtype)13)
#define KRB5_AP_REQ ((krb5_msgtype)14)
#define KRB5_AP_REP ((krb5_msgtype)15)
#define KRB5_SAFE ((krb5_msgtype)20)
#define KRB5_PRIV ((krb5_msgtype)21)
#define KRB5_CRED ((krb5_msgtype)22)
#define KRB5_ERROR ((krb5_msgtype)30)
#define KRB5_LRQ_NONE 0
#define KRB5_LRQ_ALL_LAST_TGT 1
#define KRB5_LRQ_ONE_LAST_TGT (-1)
#define KRB5_LRQ_ALL_LAST_INITIAL 2
#define KRB5_LRQ_ONE_LAST_INITIAL (-2)
#define KRB5_LRQ_ALL_LAST_TGT_ISSUED 3
#define KRB5_LRQ_ONE_LAST_TGT_ISSUED (-3)
#define KRB5_LRQ_ALL_LAST_RENEWAL 4
#define KRB5_LRQ_ONE_LAST_RENEWAL (-4)
#define KRB5_LRQ_ALL_LAST_REQ 5
#define KRB5_LRQ_ONE_LAST_REQ (-5)
#define KRB5_LRQ_ALL_PW_EXPTIME 6
#define KRB5_LRQ_ONE_PW_EXPTIME (-6)
#define KRB5_PADATA_NONE 0
#define KRB5_PADATA_AP_REQ 1
#define KRB5_PADATA_TGS_REQ KRB5_PADATA_AP_REQ
#define KRB5_PADATA_ENC_TIMESTAMP 2
#define KRB5_PADATA_PW_SALT 3
#if 0
#define KRB5_PADATA_ENC_ENCKEY 4
#endif
#define KRB5_PADATA_ENC_UNIX_TIME 5
#define KRB5_PADATA_ENC_SANDIA_SECURID 6
#define KRB5_PADATA_SESAME 7
#define KRB5_PADATA_OSF_DCE 8
#define KRB5_CYBERSAFE_SECUREID 9
#define KRB5_PADATA_AFS3_SALT 10
#define KRB5_PADATA_ETYPE_INFO 11
#define KRB5_PADATA_SAM_CHALLENGE 12
#define KRB5_PADATA_SAM_RESPONSE 13
#define KRB5_PADATA_PK_AS_REQ_OLD 14
#define KRB5_PADATA_PK_AS_REP_OLD 15
#define KRB5_PADATA_PK_AS_REQ 16
#define KRB5_PADATA_PK_AS_REP 17
#define KRB5_PADATA_ETYPE_INFO2 19
#define KRB5_PADATA_USE_SPECIFIED_KVNO 20
#define KRB5_PADATA_SAM_REDIRECT 21
#define KRB5_PADATA_GET_FROM_TYPED_DATA 22
#define KRB5_PADATA_REFERRAL 25
#define KRB5_PADATA_SAM_CHALLENGE_2 30
#define KRB5_PADATA_SAM_RESPONSE_2 31
#define KRB5_PADATA_PK_AS_09_BINDING 132
#define KRB5_SAM_USE_SAD_AS_KEY 0x80000000
#define KRB5_SAM_SEND_ENCRYPTED_SAD 0x40000000
#define KRB5_SAM_MUST_PK_ENCRYPT_SAD 0x20000000
#define KRB5_PADATA_DASS 16
#define KRB5_DOMAIN_X500_COMPRESS 1
#define KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE 64
#define KRB5_AUTHDATA_IF_RELEVANT 1
#define KRB5_AUTHDATA_KDC_ISSUED 4
#define KRB5_AUTHDATA_AND_OR 5
#define KRB5_AUTHDATA_MANDATORY_FOR_KDC 8
#define KRB5_AUTHDATA_INITIAL_VERIFIED_CAS 9
#define KRB5_AUTHDATA_OSF_DCE 64
#define KRB5_AUTHDATA_SESAME 65
#define KRB5_KPASSWD_SUCCESS 0
#define KRB5_KPASSWD_MALFORMED 1
#define KRB5_KPASSWD_HARDERROR 2
#define KRB5_KPASSWD_AUTHERROR 3
#define KRB5_KPASSWD_SOFTERROR 4
#define KRB5_KPASSWD_ACCESSDENIED 5
#define KRB5_KPASSWD_BAD_VERSION 6
#define KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7
typedef struct _krb5_ticket_times {
krb5_timestamp authtime;
krb5_timestamp starttime;
krb5_timestamp endtime;
krb5_timestamp renew_till;
} krb5_ticket_times;
typedef struct _krb5_authdata {
krb5_magic magic;
krb5_authdatatype ad_type;
unsigned int length;
krb5_octet *contents;
} krb5_authdata;
typedef struct _krb5_transited {
krb5_magic magic;
krb5_octet tr_type;
krb5_data tr_contents;
} krb5_transited;
typedef struct _krb5_enc_tkt_part {
krb5_magic magic;
krb5_flags flags;
krb5_keyblock *session;
krb5_principal client;
krb5_transited transited;
krb5_ticket_times times;
krb5_address **caddrs;
krb5_authdata **authorization_data;
} krb5_enc_tkt_part;
typedef struct _krb5_ticket {
krb5_magic magic;
krb5_principal server;
krb5_enc_data enc_part;
krb5_enc_tkt_part *enc_part2;
} krb5_ticket;
typedef struct _krb5_authenticator {
krb5_magic magic;
krb5_principal client;
krb5_checksum *checksum;
krb5_int32 cusec;
krb5_timestamp ctime;
krb5_keyblock *subkey;
krb5_ui_4 seq_number;
krb5_authdata **authorization_data;
} krb5_authenticator;
typedef struct _krb5_tkt_authent {
krb5_magic magic;
krb5_ticket *ticket;
krb5_authenticator *authenticator;
krb5_flags ap_options;
} krb5_tkt_authent;
typedef struct _krb5_creds {
krb5_magic magic;
krb5_principal client;
krb5_principal server;
krb5_keyblock keyblock;
krb5_ticket_times times;
krb5_boolean is_skey;
krb5_flags ticket_flags;
krb5_address **addresses;
krb5_data ticket;
krb5_data second_ticket;
krb5_authdata **authdata;
} krb5_creds;
typedef struct _krb5_last_req_entry {
krb5_magic magic;
krb5_int32 lr_type;
krb5_timestamp value;
} krb5_last_req_entry;
typedef struct _krb5_pa_data {
krb5_magic magic;
krb5_preauthtype pa_type;
unsigned int length;
krb5_octet *contents;
} krb5_pa_data;
typedef struct _krb5_kdc_req {
krb5_magic magic;
krb5_msgtype msg_type;
krb5_pa_data **padata;
krb5_flags kdc_options;
krb5_principal client;
krb5_principal server;
krb5_timestamp from;
krb5_timestamp till;
krb5_timestamp rtime;
krb5_int32 nonce;
int nktypes;
krb5_enctype *ktype;
krb5_address **addresses;
krb5_enc_data authorization_data;
krb5_authdata **unenc_authdata;
krb5_ticket **second_ticket;
} krb5_kdc_req;
typedef struct _krb5_enc_kdc_rep_part {
krb5_magic magic;
krb5_msgtype msg_type;
krb5_keyblock *session;
krb5_last_req_entry **last_req;
krb5_int32 nonce;
krb5_timestamp key_exp;
krb5_flags flags;
krb5_ticket_times times;
krb5_principal server;
krb5_address **caddrs;
} krb5_enc_kdc_rep_part;
typedef struct _krb5_kdc_rep {
krb5_magic magic;
krb5_msgtype msg_type;
krb5_pa_data **padata;
krb5_principal client;
krb5_ticket *ticket;
krb5_enc_data enc_part;
krb5_enc_kdc_rep_part *enc_part2;
} krb5_kdc_rep;
typedef struct _krb5_error {
krb5_magic magic;
krb5_timestamp ctime;
krb5_int32 cusec;
krb5_int32 susec;
krb5_timestamp stime;
krb5_ui_4 error;
krb5_principal client;
krb5_principal server;
krb5_data text;
krb5_data e_data;
} krb5_error;
typedef struct _krb5_ap_req {
krb5_magic magic;
krb5_flags ap_options;
krb5_ticket *ticket;
krb5_enc_data authenticator;
} krb5_ap_req;
typedef struct _krb5_ap_rep {
krb5_magic magic;
krb5_enc_data enc_part;
} krb5_ap_rep;
typedef struct _krb5_ap_rep_enc_part {
krb5_magic magic;
krb5_timestamp ctime;
krb5_int32 cusec;
krb5_keyblock *subkey;
krb5_ui_4 seq_number;
} krb5_ap_rep_enc_part;
typedef struct _krb5_response {
krb5_magic magic;
krb5_octet message_type;
krb5_data response;
krb5_int32 expected_nonce;
krb5_timestamp request_time;
} krb5_response;
typedef struct _krb5_cred_info {
krb5_magic magic;
krb5_keyblock *session;
krb5_principal client;
krb5_principal server;
krb5_flags flags;
krb5_ticket_times times;
krb5_address **caddrs;
} krb5_cred_info;
typedef struct _krb5_cred_enc_part {
krb5_magic magic;
krb5_int32 nonce;
krb5_timestamp timestamp;
krb5_int32 usec;
krb5_address *s_address;
krb5_address *r_address;
krb5_cred_info **ticket_info;
} krb5_cred_enc_part;
typedef struct _krb5_cred {
krb5_magic magic;
krb5_ticket **tickets;
krb5_enc_data enc_part;
krb5_cred_enc_part *enc_part2;
} krb5_cred;
typedef struct _passwd_phrase_element {
krb5_magic magic;
krb5_data *passwd;
krb5_data *phrase;
} passwd_phrase_element;
typedef struct _krb5_pwd_data {
krb5_magic magic;
int sequence_count;
passwd_phrase_element **element;
} krb5_pwd_data;
#define KRB5_AUTH_CONTEXT_DO_TIME 0x00000001
#define KRB5_AUTH_CONTEXT_RET_TIME 0x00000002
#define KRB5_AUTH_CONTEXT_DO_SEQUENCE 0x00000004
#define KRB5_AUTH_CONTEXT_RET_SEQUENCE 0x00000008
#define KRB5_AUTH_CONTEXT_PERMIT_ALL 0x00000010
#define KRB5_AUTH_CONTEXT_USE_SUBKEY 0x00000020
typedef struct krb5_replay_data {
krb5_timestamp timestamp;
krb5_int32 usec;
krb5_ui_4 seq;
} krb5_replay_data;
#define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR 0x00000001
#define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR 0x00000002
#define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR 0x00000004
#define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR 0x00000008
typedef krb5_error_code
(KRB5_CALLCONV * krb5_mk_req_checksum_func) (krb5_context, krb5_auth_context , void *,
krb5_data **);
typedef krb5_pointer krb5_cc_cursor;
struct _krb5_ccache;
typedef struct _krb5_ccache *krb5_ccache;
struct _krb5_cc_ops;
typedef struct _krb5_cc_ops krb5_cc_ops;
struct _krb5_cccol_cursor;
typedef struct _krb5_cccol_cursor *krb5_cccol_cursor;
#define KRB5_TC_MATCH_TIMES 0x00000001
#define KRB5_TC_MATCH_IS_SKEY 0x00000002
#define KRB5_TC_MATCH_FLAGS 0x00000004
#define KRB5_TC_MATCH_TIMES_EXACT 0x00000008
#define KRB5_TC_MATCH_FLAGS_EXACT 0x00000010
#define KRB5_TC_MATCH_AUTHDATA 0x00000020
#define KRB5_TC_MATCH_SRV_NAMEONLY 0x00000040
#define KRB5_TC_MATCH_2ND_TKT 0x00000080
#define KRB5_TC_MATCH_KTYPE 0x00000100
#define KRB5_TC_SUPPORTED_KTYPES 0x00000200
#define KRB5_TC_OPENCLOSE 0x00000001
#define KRB5_TC_NOTICKET 0x00000002
const char * KRB5_CALLCONV
krb5_cc_get_name (krb5_context context, krb5_ccache cache);
krb5_error_code KRB5_CALLCONV
krb5_cc_gen_new (krb5_context context, krb5_ccache *cache);
krb5_error_code KRB5_CALLCONV
krb5_cc_initialize(krb5_context context, krb5_ccache cache,
krb5_principal principal);
krb5_error_code KRB5_CALLCONV
krb5_cc_destroy (krb5_context context, krb5_ccache cache);
krb5_error_code KRB5_CALLCONV
krb5_cc_close (krb5_context context, krb5_ccache cache);
krb5_error_code KRB5_CALLCONV
krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
krb5_creds *creds);
krb5_error_code KRB5_CALLCONV
krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
krb5_flags flags, krb5_creds *mcreds,
krb5_creds *creds);
krb5_error_code KRB5_CALLCONV
krb5_cc_get_principal (krb5_context context, krb5_ccache cache,
krb5_principal *principal);
krb5_error_code KRB5_CALLCONV
krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache,
krb5_cc_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_cc_next_cred (krb5_context context, krb5_ccache cache,
krb5_cc_cursor *cursor, krb5_creds *creds);
krb5_error_code KRB5_CALLCONV
krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache,
krb5_cc_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags,
krb5_creds *creds);
krb5_error_code KRB5_CALLCONV
krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags);
krb5_error_code KRB5_CALLCONV
krb5_cc_get_flags (krb5_context context, krb5_ccache cache, krb5_flags *flags);
const char * KRB5_CALLCONV
krb5_cc_get_type (krb5_context context, krb5_ccache cache);
krb5_error_code KRB5_CALLCONV
krb5_cc_move (krb5_context context, krb5_ccache src, krb5_ccache dst);
krb5_error_code KRB5_CALLCONV
krb5_cc_last_change_time (
krb5_context context,
krb5_ccache ccache,
krb5_timestamp *change_time);
krb5_error_code KRB5_CALLCONV
krb5_cc_lock (krb5_context context, krb5_ccache ccache);
krb5_error_code KRB5_CALLCONV
krb5_cc_unlock (krb5_context context, krb5_ccache ccache);
krb5_error_code KRB5_CALLCONV
krb5_cc_cache_match (krb5_context context,
krb5_principal client,
krb5_ccache *id);
krb5_error_code KRB5_CALLCONV
krb5_cccol_cursor_new(krb5_context context, krb5_cccol_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_cccol_cursor_next(
krb5_context context,
krb5_cccol_cursor cursor,
krb5_ccache *ccache);
krb5_error_code KRB5_CALLCONV
krb5_cccol_cursor_free(krb5_context context, krb5_cccol_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_cccol_last_change_time(krb5_context context, krb5_timestamp *change_time);
krb5_error_code KRB5_CALLCONV
krb5_cccol_lock(krb5_context context);
krb5_error_code KRB5_CALLCONV
krb5_cccol_unlock(krb5_context context);
krb5_error_code KRB5_CALLCONV
krb5_cc_new_unique(
krb5_context context,
const char *type,
const char *hint,
krb5_ccache *id);
struct krb5_rc_st;
typedef struct krb5_rc_st *krb5_rcache;
#define MAX_KEYTAB_NAME_LEN 1100
typedef krb5_pointer krb5_kt_cursor;
typedef struct krb5_keytab_entry_st {
krb5_magic magic;
krb5_principal principal;
krb5_timestamp timestamp;
krb5_kvno vno;
krb5_keyblock key;
} krb5_keytab_entry;
struct _krb5_kt;
typedef struct _krb5_kt *krb5_keytab;
const char * KRB5_CALLCONV
krb5_kt_get_type (krb5_context, krb5_keytab keytab);
krb5_error_code KRB5_CALLCONV
krb5_kt_get_name(krb5_context context, krb5_keytab keytab, char *name,
unsigned int namelen);
krb5_error_code KRB5_CALLCONV
krb5_kt_close(krb5_context context, krb5_keytab keytab);
krb5_error_code KRB5_CALLCONV
krb5_kt_get_entry(krb5_context context, krb5_keytab keytab,
krb5_const_principal principal, krb5_kvno vno,
krb5_enctype enctype, krb5_keytab_entry *entry);
krb5_error_code KRB5_CALLCONV
krb5_kt_start_seq_get(krb5_context context, krb5_keytab keytab,
krb5_kt_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_kt_next_entry(krb5_context context, krb5_keytab keytab,
krb5_keytab_entry *entry, krb5_kt_cursor *cursor);
krb5_error_code KRB5_CALLCONV
krb5_kt_end_seq_get(krb5_context context, krb5_keytab keytab,
krb5_kt_cursor *cursor);
krb5_error_code KRB5_CALLCONV krb5_init_context
(krb5_context *);
krb5_error_code KRB5_CALLCONV krb5_init_secure_context
(krb5_context *);
void KRB5_CALLCONV krb5_free_context
(krb5_context);
krb5_error_code KRB5_CALLCONV krb5_copy_context
(krb5_context, krb5_context *);
krb5_error_code KRB5_CALLCONV
krb5_set_default_tgs_enctypes
(krb5_context,
const krb5_enctype *);
krb5_error_code KRB5_CALLCONV krb5_get_permitted_enctypes
(krb5_context, krb5_enctype **);
krb5_boolean KRB5_CALLCONV krb5_is_thread_safe(void);
krb5_error_code KRB5_CALLCONV
krb5_server_decrypt_ticket_keytab
(krb5_context context,
const krb5_keytab kt,
krb5_ticket *ticket);
void KRB5_CALLCONV krb5_free_tgt_creds
(krb5_context,
krb5_creds **);
#define KRB5_GC_USER_USER 1
#define KRB5_GC_CACHED 2
krb5_error_code KRB5_CALLCONV krb5_get_credentials
(krb5_context,
krb5_flags,
krb5_ccache,
krb5_creds *,
krb5_creds **);
krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
(krb5_context,
krb5_flags,
krb5_ccache,
krb5_creds *,
krb5_creds **);
krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
(krb5_context,
krb5_flags,
krb5_ccache,
krb5_creds *,
krb5_creds **);
krb5_error_code KRB5_CALLCONV krb5_mk_req
(krb5_context,
krb5_auth_context *,
krb5_flags,
char *,
char *,
krb5_data *,
krb5_ccache,
krb5_data * );
krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
(krb5_context,
krb5_auth_context *,
krb5_flags,
krb5_data *,
krb5_creds *,
krb5_data * );
krb5_error_code KRB5_CALLCONV krb5_mk_rep
(krb5_context,
krb5_auth_context,
krb5_data *);
krb5_error_code KRB5_CALLCONV krb5_rd_rep
(krb5_context,
krb5_auth_context,
const krb5_data *,
krb5_ap_rep_enc_part **);
krb5_error_code KRB5_CALLCONV krb5_mk_error
(krb5_context,
const krb5_error *,
krb5_data * );
krb5_error_code KRB5_CALLCONV krb5_rd_error
(krb5_context,
const krb5_data *,
krb5_error ** );
krb5_error_code KRB5_CALLCONV krb5_rd_safe
(krb5_context,
krb5_auth_context,
const krb5_data *,
krb5_data *,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_rd_priv
(krb5_context,
krb5_auth_context,
const krb5_data *,
krb5_data *,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_parse_name
(krb5_context,
const char *,
krb5_principal * );
krb5_error_code KRB5_CALLCONV krb5_unparse_name
(krb5_context,
krb5_const_principal,
char ** );
krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext
(krb5_context,
krb5_const_principal,
char **,
unsigned int *);
krb5_error_code KRB5_CALLCONV krb5_set_principal_realm
(krb5_context, krb5_principal, const char *);
krb5_boolean KRB5_CALLCONV_WRONG krb5_address_search
(krb5_context,
const krb5_address *,
krb5_address * const *);
krb5_boolean KRB5_CALLCONV krb5_address_compare
(krb5_context,
const krb5_address *,
const krb5_address *);
int KRB5_CALLCONV krb5_address_order
(krb5_context,
const krb5_address *,
const krb5_address *);
krb5_boolean KRB5_CALLCONV krb5_realm_compare
(krb5_context,
krb5_const_principal,
krb5_const_principal);
krb5_boolean KRB5_CALLCONV krb5_principal_compare
(krb5_context,
krb5_const_principal,
krb5_const_principal);
krb5_error_code KRB5_CALLCONV krb5_init_keyblock
(krb5_context, krb5_enctype enctype,
size_t length, krb5_keyblock **out);
krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
(krb5_context,
const krb5_keyblock *,
krb5_keyblock **);
krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_contents
(krb5_context,
const krb5_keyblock *,
krb5_keyblock *);
krb5_error_code KRB5_CALLCONV krb5_copy_creds
(krb5_context,
const krb5_creds *,
krb5_creds **);
krb5_error_code KRB5_CALLCONV krb5_copy_data
(krb5_context,
const krb5_data *,
krb5_data **);
krb5_error_code KRB5_CALLCONV krb5_copy_principal
(krb5_context,
krb5_const_principal,
krb5_principal *);
krb5_error_code KRB5_CALLCONV krb5_copy_addresses
(krb5_context,
krb5_address * const *,
krb5_address ***);
krb5_error_code KRB5_CALLCONV krb5_copy_ticket
(krb5_context,
const krb5_ticket *,
krb5_ticket **);
krb5_error_code KRB5_CALLCONV krb5_copy_authdata
(krb5_context,
krb5_authdata * const *,
krb5_authdata ***);
krb5_error_code KRB5_CALLCONV krb5_copy_authenticator
(krb5_context,
const krb5_authenticator *,
krb5_authenticator **);
krb5_error_code KRB5_CALLCONV krb5_copy_checksum
(krb5_context,
const krb5_checksum *,
krb5_checksum **);
krb5_error_code KRB5_CALLCONV krb5_get_server_rcache
(krb5_context,
const krb5_data *, krb5_rcache *);
krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
(krb5_context, krb5_principal *, unsigned int, const char *, ...);
krb5_error_code KRB5_CALLCONV_C krb5_build_principal
(krb5_context, krb5_principal *, unsigned int, const char *, ...)
#if __GNUC__ >= 4
__attribute__ ((sentinel))
#endif
;
#if KRB5_DEPRECATED
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_build_principal_va
(krb5_context,
krb5_principal, unsigned int, const char *, va_list);
#endif
krb5_error_code KRB5_CALLCONV krb5_build_principal_alloc_va
(krb5_context, krb5_principal *, unsigned int, const char *, va_list);
krb5_error_code KRB5_CALLCONV krb5_425_conv_principal
(krb5_context,
const char *name,
const char *instance, const char *realm,
krb5_principal *princ);
krb5_error_code KRB5_CALLCONV krb5_524_conv_principal
(krb5_context context, krb5_const_principal princ,
char *name, char *inst, char *realm);
struct credentials;
int KRB5_CALLCONV krb5_524_convert_creds
(krb5_context context, krb5_creds *v5creds,
struct credentials *v4creds);
#if KRB5_DEPRECATED
#define krb524_convert_creds_kdc krb5_524_convert_creds
#define krb524_init_ets(x) (0)
#endif
krb5_error_code KRB5_CALLCONV krb5_kt_resolve
(krb5_context,
const char *,
krb5_keytab * );
krb5_error_code KRB5_CALLCONV krb5_kt_default_name
(krb5_context,
char *,
int );
krb5_error_code KRB5_CALLCONV krb5_kt_default
(krb5_context,
krb5_keytab * );
krb5_error_code KRB5_CALLCONV krb5_free_keytab_entry_contents
(krb5_context,
krb5_keytab_entry * );
krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry
(krb5_context,
krb5_keytab,
krb5_keytab_entry * );
krb5_error_code KRB5_CALLCONV krb5_kt_add_entry
(krb5_context,
krb5_keytab,
krb5_keytab_entry * );
krb5_error_code KRB5_CALLCONV_WRONG krb5_principal2salt
(krb5_context,
krb5_const_principal, krb5_data *);
krb5_error_code KRB5_CALLCONV krb5_cc_resolve
(krb5_context,
const char *,
krb5_ccache * );
const char * KRB5_CALLCONV krb5_cc_default_name
(krb5_context);
krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name
(krb5_context, const char *);
krb5_error_code KRB5_CALLCONV krb5_cc_default
(krb5_context,
krb5_ccache *);
krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
(krb5_context context,
krb5_ccache incc,
krb5_ccache outcc);
krb5_error_code KRB5_CALLCONV
krb5_cc_get_config(krb5_context, krb5_ccache,
krb5_const_principal,
const char *, krb5_data *);
krb5_error_code KRB5_CALLCONV
krb5_cc_set_config(krb5_context, krb5_ccache,
krb5_const_principal,
const char *, krb5_data *);
krb5_boolean KRB5_CALLCONV
krb5_is_config_principal(krb5_context,
krb5_const_principal);
void KRB5_CALLCONV krb5_free_principal
(krb5_context, krb5_principal );
void KRB5_CALLCONV krb5_free_authenticator
(krb5_context, krb5_authenticator * );
void KRB5_CALLCONV krb5_free_addresses
(krb5_context, krb5_address ** );
void KRB5_CALLCONV krb5_free_authdata
(krb5_context, krb5_authdata ** );
void KRB5_CALLCONV krb5_free_ticket
(krb5_context, krb5_ticket * );
void KRB5_CALLCONV krb5_free_error
(krb5_context, krb5_error * );
void KRB5_CALLCONV krb5_free_creds
(krb5_context, krb5_creds *);
void KRB5_CALLCONV krb5_free_cred_contents
(krb5_context, krb5_creds *);
void KRB5_CALLCONV krb5_free_checksum
(krb5_context, krb5_checksum *);
void KRB5_CALLCONV krb5_free_checksum_contents
(krb5_context, krb5_checksum *);
void KRB5_CALLCONV krb5_free_keyblock
(krb5_context, krb5_keyblock *);
void KRB5_CALLCONV krb5_free_keyblock_contents
(krb5_context, krb5_keyblock *);
void KRB5_CALLCONV krb5_free_ap_rep_enc_part
(krb5_context, krb5_ap_rep_enc_part *);
void KRB5_CALLCONV krb5_free_data
(krb5_context, krb5_data *);
void KRB5_CALLCONV krb5_free_data_contents
(krb5_context, krb5_data *);
void KRB5_CALLCONV krb5_free_unparsed_name
(krb5_context, char *);
void KRB5_CALLCONV krb5_free_cksumtypes
(krb5_context, krb5_cksumtype *);
krb5_error_code KRB5_CALLCONV krb5_us_timeofday
(krb5_context,
krb5_timestamp *,
krb5_int32 * );
krb5_error_code KRB5_CALLCONV krb5_timeofday
(krb5_context,
krb5_timestamp * );
krb5_error_code KRB5_CALLCONV krb5_os_localaddr
(krb5_context,
krb5_address ***);
krb5_error_code KRB5_CALLCONV krb5_get_default_realm
(krb5_context,
char ** );
krb5_error_code KRB5_CALLCONV krb5_set_default_realm
(krb5_context,
const char * );
void KRB5_CALLCONV krb5_free_default_realm
(krb5_context,
char * );
krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
(krb5_context,
const char *,
const char *,
krb5_int32,
krb5_principal *);
krb5_error_code KRB5_CALLCONV
krb5_change_password
(krb5_context context, krb5_creds *creds, char *newpw,
int *result_code, krb5_data *result_code_string,
krb5_data *result_string);
krb5_error_code KRB5_CALLCONV
krb5_set_password
(krb5_context context, krb5_creds *creds, char *newpw, krb5_principal change_password_for,
int *result_code, krb5_data *result_code_string, krb5_data *result_string);
krb5_error_code KRB5_CALLCONV
krb5_set_password_using_ccache
(krb5_context context, krb5_ccache ccache, char *newpw, krb5_principal change_password_for,
int *result_code, krb5_data *result_code_string, krb5_data *result_string);
krb5_error_code KRB5_CALLCONV
krb5_get_profile
(krb5_context, struct _profile_t * *);
#if KRB5_DEPRECATED
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_get_in_tkt
(krb5_context,
krb5_flags,
krb5_address * const *,
krb5_enctype *,
krb5_preauthtype *,
krb5_error_code ( * )(krb5_context,
krb5_enctype,
krb5_data *,
krb5_const_pointer,
krb5_keyblock **),
krb5_const_pointer,
krb5_error_code ( * )(krb5_context,
const krb5_keyblock *,
krb5_const_pointer,
krb5_kdc_rep * ),
krb5_const_pointer,
krb5_creds *,
krb5_ccache,
krb5_kdc_rep ** );
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
(krb5_context,
krb5_flags,
krb5_address * const *,
krb5_enctype *,
krb5_preauthtype *,
const char *,
krb5_ccache,
krb5_creds *,
krb5_kdc_rep ** );
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_skey
(krb5_context,
krb5_flags,
krb5_address * const *,
krb5_enctype *,
krb5_preauthtype *,
const krb5_keyblock *,
krb5_ccache,
krb5_creds *,
krb5_kdc_rep ** );
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
(krb5_context,
krb5_flags,
krb5_address * const *,
krb5_enctype *,
krb5_preauthtype *,
krb5_keytab,
krb5_ccache,
krb5_creds *,
krb5_kdc_rep ** );
#endif
krb5_error_code KRB5_CALLCONV krb5_rd_req
(krb5_context,
krb5_auth_context *,
const krb5_data *,
krb5_const_principal,
krb5_keytab,
krb5_flags *,
krb5_ticket **);
krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key
(krb5_context,
krb5_pointer,
krb5_principal,
krb5_kvno,
krb5_enctype,
krb5_keyblock **);
krb5_error_code KRB5_CALLCONV krb5_mk_safe
(krb5_context,
krb5_auth_context,
const krb5_data *,
krb5_data *,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_mk_priv
(krb5_context,
krb5_auth_context,
const krb5_data *,
krb5_data *,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_sendauth
(krb5_context,
krb5_auth_context *,
krb5_pointer,
char *,
krb5_principal,
krb5_principal,
krb5_flags,
krb5_data *,
krb5_creds *,
krb5_ccache,
krb5_error **,
krb5_ap_rep_enc_part **,
krb5_creds **);
krb5_error_code KRB5_CALLCONV krb5_recvauth
(krb5_context,
krb5_auth_context *,
krb5_pointer,
char *,
krb5_principal,
krb5_int32,
krb5_keytab,
krb5_ticket **);
krb5_error_code KRB5_CALLCONV krb5_recvauth_version
(krb5_context,
krb5_auth_context *,
krb5_pointer,
krb5_principal,
krb5_int32,
krb5_keytab,
krb5_ticket **,
krb5_data *);
krb5_error_code KRB5_CALLCONV krb5_mk_ncred
(krb5_context,
krb5_auth_context,
krb5_creds **,
krb5_data **,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_mk_1cred
(krb5_context,
krb5_auth_context,
krb5_creds *,
krb5_data **,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_rd_cred
(krb5_context,
krb5_auth_context,
krb5_data *,
krb5_creds ***,
krb5_replay_data *);
krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
(krb5_context,
krb5_auth_context,
char *,
krb5_principal,
krb5_principal,
krb5_ccache,
int forwardable,
krb5_data *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_init
(krb5_context,
krb5_auth_context *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_free
(krb5_context,
krb5_auth_context);
krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
(krb5_context,
krb5_auth_context,
krb5_int32);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
(krb5_context,
krb5_auth_context,
krb5_int32 *);
krb5_error_code KRB5_CALLCONV
krb5_auth_con_set_checksum_func (krb5_context, krb5_auth_context,
krb5_mk_req_checksum_func, void *);
krb5_error_code KRB5_CALLCONV
krb5_auth_con_get_checksum_func( krb5_context, krb5_auth_context,
krb5_mk_req_checksum_func *, void **);
krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_setaddrs
(krb5_context,
krb5_auth_context,
krb5_address *,
krb5_address *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getaddrs
(krb5_context,
krb5_auth_context,
krb5_address **,
krb5_address **);
krb5_error_code KRB5_CALLCONV krb5_auth_con_setports
(krb5_context,
krb5_auth_context,
krb5_address *,
krb5_address *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey
(krb5_context,
krb5_auth_context,
krb5_keyblock *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
(krb5_context,
krb5_auth_context,
krb5_keyblock **);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getsendsubkey(
krb5_context, krb5_auth_context, krb5_keyblock **);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getrecvsubkey(
krb5_context, krb5_auth_context, krb5_keyblock **);
krb5_error_code KRB5_CALLCONV krb5_auth_con_setsendsubkey(
krb5_context, krb5_auth_context, krb5_keyblock *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_setrecvsubkey(
krb5_context, krb5_auth_context, krb5_keyblock *);
#if KRB5_DEPRECATED
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
(krb5_context,
krb5_auth_context,
krb5_keyblock **);
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
(krb5_context,
krb5_auth_context,
krb5_keyblock **);
#endif
krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber
(krb5_context,
krb5_auth_context,
krb5_int32 *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber
(krb5_context,
krb5_auth_context,
krb5_int32 *);
#if KRB5_DEPRECATED
KRB5_ATTR_DEPRECATED krb5_error_code KRB5_CALLCONV krb5_auth_con_initivector
(krb5_context,
krb5_auth_context);
#endif
krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
(krb5_context,
krb5_auth_context,
krb5_rcache);
krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_getrcache
(krb5_context,
krb5_auth_context,
krb5_rcache *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
(krb5_context,
krb5_auth_context,
krb5_authenticator **);
#define KRB5_REALM_BRANCH_CHAR '.'
krb5_error_code KRB5_CALLCONV krb5_read_password
(krb5_context,
const char *,
const char *,
char *,
unsigned int * );
krb5_error_code KRB5_CALLCONV krb5_aname_to_localname
(krb5_context,
krb5_const_principal,
int,
char * );
krb5_error_code KRB5_CALLCONV krb5_get_host_realm
(krb5_context,
const char *,
char *** );
krb5_error_code KRB5_CALLCONV krb5_get_fallback_host_realm
(krb5_context,
krb5_data *,
char *** );
krb5_error_code KRB5_CALLCONV krb5_free_host_realm
(krb5_context,
char * const * );
krb5_boolean KRB5_CALLCONV krb5_kuserok
(krb5_context,
krb5_principal, const char *);
krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
(krb5_context,
krb5_auth_context,
int, int);
krb5_error_code KRB5_CALLCONV krb5_set_real_time
(krb5_context, krb5_timestamp, krb5_int32);
krb5_error_code KRB5_CALLCONV krb5_get_time_offsets
(krb5_context, krb5_timestamp *, krb5_int32 *);
krb5_error_code KRB5_CALLCONV krb5_string_to_enctype
(char *, krb5_enctype *);
krb5_error_code KRB5_CALLCONV krb5_string_to_salttype
(char *, krb5_int32 *);
krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype
(char *, krb5_cksumtype *);
krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp
(char *, krb5_timestamp *);
krb5_error_code KRB5_CALLCONV krb5_string_to_deltat
(char *, krb5_deltat *);
krb5_error_code KRB5_CALLCONV krb5_enctype_to_string
(krb5_enctype, char *, size_t);
krb5_error_code KRB5_CALLCONV krb5_salttype_to_string
(krb5_int32, char *, size_t);
krb5_error_code KRB5_CALLCONV krb5_cksumtype_to_string
(krb5_cksumtype, char *, size_t);
krb5_error_code KRB5_CALLCONV krb5_timestamp_to_string
(krb5_timestamp, char *, size_t);
krb5_error_code KRB5_CALLCONV krb5_timestamp_to_sfstring
(krb5_timestamp, char *, size_t, char *);
krb5_error_code KRB5_CALLCONV krb5_deltat_to_string
(krb5_deltat, char *, size_t);
#define KRB5_TGS_NAME "krbtgt"
#define KRB5_TGS_NAME_SIZE 6
#define KRB5_RECVAUTH_SKIP_VERSION 0x0001
#define KRB5_RECVAUTH_BADAUTHVERS 0x0002
typedef struct _krb5_prompt {
char *prompt;
int hidden;
krb5_data *reply;
} krb5_prompt;
typedef krb5_error_code (KRB5_CALLCONV *krb5_prompter_fct)(krb5_context context,
void *data,
const char *name,
const char *banner,
int num_prompts,
krb5_prompt prompts[]);
krb5_error_code KRB5_CALLCONV
krb5_prompter_posix (krb5_context context,
void *data,
const char *name,
const char *banner,
int num_prompts,
krb5_prompt prompts[]);
typedef struct _krb5_get_init_creds_opt {
krb5_flags flags;
krb5_deltat tkt_life;
krb5_deltat renew_life;
int forwardable;
int proxiable;
krb5_enctype *etype_list;
int etype_list_length;
krb5_address **address_list;
krb5_preauthtype *preauth_list;
int preauth_list_length;
krb5_data *salt;
} krb5_get_init_creds_opt;
#define KRB5_GET_INIT_CREDS_OPT_TKT_LIFE 0x0001
#define KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE 0x0002
#define KRB5_GET_INIT_CREDS_OPT_FORWARDABLE 0x0004
#define KRB5_GET_INIT_CREDS_OPT_PROXIABLE 0x0008
#define KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST 0x0010
#define KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST 0x0020
#define KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST 0x0040
#define KRB5_GET_INIT_CREDS_OPT_SALT 0x0080
#define KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT 0x0100
krb5_error_code KRB5_CALLCONV
krb5_get_init_creds_opt_alloc
(krb5_context context,
krb5_get_init_creds_opt **opt);
void KRB5_CALLCONV
krb5_get_init_creds_opt_free
(krb5_context context,
krb5_get_init_creds_opt *opt);
void KRB5_CALLCONV
krb5_get_init_creds_opt_init
(krb5_get_init_creds_opt *opt);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_tkt_life
(krb5_get_init_creds_opt *opt,
krb5_deltat tkt_life);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_renew_life
(krb5_get_init_creds_opt *opt,
krb5_deltat renew_life);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_forwardable
(krb5_get_init_creds_opt *opt,
int forwardable);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_proxiable
(krb5_get_init_creds_opt *opt,
int proxiable);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_etype_list
(krb5_get_init_creds_opt *opt,
krb5_enctype *etype_list,
int etype_list_length);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_address_list
(krb5_get_init_creds_opt *opt,
krb5_address **addresses);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_preauth_list
(krb5_get_init_creds_opt *opt,
krb5_preauthtype *preauth_list,
int preauth_list_length);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_salt
(krb5_get_init_creds_opt *opt,
krb5_data *salt);
void KRB5_CALLCONV
krb5_get_init_creds_opt_set_change_password_prompt
(krb5_get_init_creds_opt *opt,
int prompt);
typedef struct _krb5_gic_opt_pa_data {
char *attr;
char *value;
} krb5_gic_opt_pa_data;
krb5_error_code KRB5_CALLCONV
krb5_get_init_creds_opt_set_pa
(krb5_context context,
krb5_get_init_creds_opt *opt,
const char *attr,
const char *value);
krb5_error_code KRB5_CALLCONV
krb5_get_init_creds_password
(krb5_context context,
krb5_creds *creds,
krb5_principal client,
char *password,
krb5_prompter_fct prompter,
void *data,
krb5_deltat start_time,
char *in_tkt_service,
krb5_get_init_creds_opt *k5_gic_options);
krb5_error_code KRB5_CALLCONV
krb5_get_init_creds_keytab
(krb5_context context,
krb5_creds *creds,
krb5_principal client,
krb5_keytab arg_keytab,
krb5_deltat start_time,
char *in_tkt_service,
krb5_get_init_creds_opt *k5_gic_options);
typedef struct _krb5_verify_init_creds_opt {
krb5_flags flags;
int ap_req_nofail;
} krb5_verify_init_creds_opt;
#define KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL 0x0001
void KRB5_CALLCONV
krb5_verify_init_creds_opt_init
(krb5_verify_init_creds_opt *k5_vic_options);
void KRB5_CALLCONV
krb5_verify_init_creds_opt_set_ap_req_nofail
(krb5_verify_init_creds_opt *k5_vic_options,
int ap_req_nofail);
krb5_error_code KRB5_CALLCONV
krb5_verify_init_creds
(krb5_context context,
krb5_creds *creds,
krb5_principal ap_req_server,
krb5_keytab ap_req_keytab,
krb5_ccache *ccache,
krb5_verify_init_creds_opt *k5_vic_options);
krb5_error_code KRB5_CALLCONV
krb5_get_validated_creds
(krb5_context context,
krb5_creds *creds,
krb5_principal client,
krb5_ccache ccache,
char *in_tkt_service);
krb5_error_code KRB5_CALLCONV
krb5_get_renewed_creds
(krb5_context context,
krb5_creds *creds,
krb5_principal client,
krb5_ccache ccache,
char *in_tkt_service);
krb5_error_code KRB5_CALLCONV
krb5_decode_ticket
(const krb5_data *code,
krb5_ticket **rep);
void KRB5_CALLCONV
krb5_appdefault_string
(krb5_context context,
const char *appname,
const krb5_data *realm,
const char *option,
const char *default_value,
char ** ret_value);
void KRB5_CALLCONV
krb5_appdefault_boolean
(krb5_context context,
const char *appname,
const krb5_data *realm,
const char *option,
int default_value,
int *ret_value);
#define KRB5_PROMPT_TYPE_PASSWORD 0x1
#define KRB5_PROMPT_TYPE_NEW_PASSWORD 0x2
#define KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN 0x3
#define KRB5_PROMPT_TYPE_PREAUTH 0x4
typedef krb5_int32 krb5_prompt_type;
krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types
(krb5_context context);
void KRB5_CALLCONV_C
krb5_set_error_message (krb5_context, krb5_error_code, const char *, ...)
#if !defined(__cplusplus) && (__GNUC__ > 2)
__attribute__((__format__(__printf__, 3, 4)))
#endif
;
void KRB5_CALLCONV
krb5_vset_error_message (krb5_context, krb5_error_code, const char *, va_list)
#if !defined(__cplusplus) && (__GNUC__ > 2)
__attribute__((__format__(__printf__, 3, 0)))
#endif
;
const char * KRB5_CALLCONV
krb5_get_error_message (krb5_context, krb5_error_code);
void KRB5_CALLCONV
krb5_free_error_message (krb5_context, const char *);
void KRB5_CALLCONV
krb5_clear_error_message (krb5_context);
#if TARGET_OS_MAC
# pragma pack(pop)
#endif
KRB5INT_END_DECLS
#define krb5_const const
#undef KRB5_ATTR_DEPRECATED
#endif