--- cygnus/src/include/krb5.hin	Tue Jul  1 14:06:58 1997
+++ kerbnet-1.2/include/krb5.hin	Tue May 27 21:57:43 1997
@@ -27,70 +27,25 @@
 #ifndef KRB5_GENERAL__
 #define KRB5_GENERAL__
 
-#ifdef _MSDOS
-
-#define SIZEOF_INT      2
-#define SIZEOF_LONG     4
-
-#ifndef KRB5_CONFIG__
-#define KRB5_PROVIDE_PROTOTYPES
-#define HAS_VOID_TYPE
-#define HAVE_STDARG_H
-#ifndef INTERFACE
-#define INTERFACE   __far __export __pascal
-#define INTERFACE_C __far __export __cdecl
-#endif /* !INTERFACE */
-#define FAR     _far
-#define NEAR    _near
-#ifndef _SIZE_T_DEFINED
-typedef unsigned int size_t;
-#define _SIZE_T_DEFINED
-#endif /* !_SIZE_T_DEFINED */
-#ifndef KRB5_SYSTYPES__
-#define KRB5_SYSTYPES__
-#include <sys/types.h>
-typedef unsigned long u_long;      /* Not part of sys/types.h on the pc */
-typedef unsigned int	u_int;
-typedef unsigned short	u_short;
-typedef unsigned char	u_char;
-#endif /* KRB5_SYSTYPES__ */
-
-#endif /* !KRB5_CONFIG */
-#else /* !_MSDOS */
-#ifndef KRB5_CONFIG__
-#define INTERFACE
-#define INTERFACE_C
-#define FAR
-#define NEAR
-#endif /* !KRB5_CONFIG__ */
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
+#if (defined(__MWERKS__) || defined(applec) || defined(THINK_C)) && !defined(_MACINTOSH)
+#define _MACINTOSH
 #endif
-#endif /* _MSDOS */
 
-/*
- * figure if we're on a macintosh
- */
-
-#if defined(__MWERKS__) || defined(applec) || defined(THINK_C)
-#define _MACINTOSH
+#if defined(_MSDOS) || defined(_WIN32) || defined(_MACINTOSH)
+#include "win-mac.h"
 #endif
 
-#ifdef _MACINTOSH
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define HAVE_SRAND
-#define NO_PASSWORD
-#define HAS_LABS
-#define ENOMEM -1
-#define ANSI_STDIO
-#ifndef _SIZET
-typedef unsigned int size_t;
-#define _SIZET
+#ifndef KRB5_CALLCONV
+#define KRB5_CALLCONV
+#define KRB5_CALLCONV_C
+#define KRB5_DLLIMP
+#endif
+#ifndef FAR
+#define FAR
+#endif
+#ifndef NEAR
+#define NEAR
 #endif
-#include <unix.h>
-#include <ctype.h>
-#endif /* _MACINTOSH */
 
 /*
  * begin wordsize.h
@@ -100,6 +55,19 @@
  * Word-size related definition.
  */
 
+#ifndef KRB5_SYSTYPES__
+#define KRB5_SYSTYPES__
+
+#ifdef HAVE_SYS_TYPES_H         /* From autoconf.h */
+#include <sys/types.h>
+#else /* HAVE_SYS_TYPES_H */
+typedef unsigned long   u_long;
+typedef unsigned int    u_int;
+typedef unsigned short  u_short;
+typedef unsigned char   u_char;
+#endif /* HAVE_SYS_TYPES_H */
+#endif /* KRB5_SYSTYPES__ */
+
 typedef	unsigned char	krb5_octet;
 typedef	unsigned char	krb5_ui_1;
 
@@ -194,7 +162,7 @@
 #define krb5_const const
 #endif
 
-#if defined(__STDC__) || defined(HAS_VOID_TYPE) || defined(_WINDOWS)
+#if defined(__STDC__) || defined(HAS_VOID_TYPE)
 typedef	void FAR * krb5_pointer;
 typedef void krb5_const FAR * krb5_const_pointer;
 #else
@@ -202,9 +170,9 @@
 typedef char krb5_const FAR * krb5_const_pointer;
 #endif
 
-#if (defined(__STDC__) || defined(_WINDOWS) || defined(KRB5_PROVIDE_PROTOTYPES)) && !defined(KRB5_NO_PROTOTYPES)
+#if (defined(__STDC__) || defined(_MSDOS) || defined(_WIN32) || defined(KRB5_PROVIDE_PROTOTYPES)) && !defined(KRB5_NO_PROTOTYPES)
 #define KRB5_PROTOTYPE(x) x
-#if defined(__STDC__) || defined(HAVE_STDARG_H) || defined(_WINDOWS)
+#if defined(__STDC__) || defined(HAVE_STDARG_H) || defined(_MSDOS) || defined(_WIN32)
 #define	KRB5_STDARG_P(x) x
 #else
 #define KRB5_STDARG_P(x) ()
@@ -359,9 +327,11 @@
 						krb5_keyblock FAR *,
 						krb5_const krb5_data FAR *,
  	                                        krb5_const krb5_data FAR *));
-    krb5_error_code  (*init_random_key) KRB5_NPROTOTYPE((krb5_const krb5_keyblock FAR *,
-						   krb5_pointer FAR *));
-    krb5_error_code  (*finish_random_key) KRB5_NPROTOTYPE(( krb5_pointer FAR *));
+    krb5_error_code (*init_random_key) KRB5_NPROTOTYPE(( krb5_const krb5_encrypt_block FAR *,
+						krb5_const krb5_keyblock FAR *,
+						krb5_pointer FAR *));
+    krb5_error_code (*finish_random_key) KRB5_NPROTOTYPE(( krb5_const krb5_encrypt_block FAR *,
+						krb5_pointer FAR *));
     krb5_error_code (*random_key) KRB5_NPROTOTYPE(( krb5_const krb5_encrypt_block FAR *,
 					      krb5_pointer,
 					      krb5_keyblock FAR * FAR *));
@@ -410,7 +380,7 @@
 #define	ENCTYPE_DES_CBC_MD4	0x0002	/* DES cbc mode with RSA-MD4 */
 #define	ENCTYPE_DES_CBC_MD5	0x0003	/* DES cbc mode with RSA-MD5 */
 #define	ENCTYPE_DES_CBC_RAW     0x0004  /* DES cbc mode raw */
-#define	ENCTYPE_DES3_CBC_MD5	0x0005	/* DES-3 cbc mode with RSA-MD5 */
+#define	ENCTYPE_DES3_CBC_SHA	0x0005	/* DES-3 cbc mode with NIST-SHA */
 #define	ENCTYPE_DES3_CBC_RAW	0x0006	/* DES-3 cbc mode raw */
 #define ENCTYPE_UNKNOWN		0x01ff
 
@@ -422,7 +392,8 @@
 /* rsa-md4-des-k */
 #define	CKSUMTYPE_RSA_MD5	0x0007
 #define	CKSUMTYPE_RSA_MD5_DES	0x0008
-#define CKSUMTYPE_RSA_MD5_DES3	0x0009
+#define CKSUMTYPE_NIST_SHA	0x0009
+#define CKSUMTYPE_HMAC_SHA	0x000a
 
 #ifndef krb5_roundup
 /* round x up to nearest multiple of y */
@@ -468,8 +439,8 @@
 #define krb5_process_key(context, eblock, key) krb5_x((eblock)->crypto_entry->process_key,(eblock, key))
 #define krb5_finish_key(context, eblock) krb5_x((eblock)->crypto_entry->finish_key,(eblock))
 #define krb5_string_to_key(context, eblock, keyblock, data, princ) krb5_x((eblock)->crypto_entry->string_to_key,(eblock, keyblock, data, princ))
-#define krb5_init_random_key(context, eblock, keyblock, ptr) krb5_x((eblock)->crypto_entry->init_random_key,(keyblock, ptr))
-#define krb5_finish_random_key(context, eblock, ptr) krb5_x((eblock)->crypto_entry->finish_random_key,(ptr))
+#define krb5_init_random_key(context, eblock, keyblock, ptr) krb5_x((eblock)->crypto_entry->init_random_key,(eblock, keyblock, ptr))
+#define krb5_finish_random_key(context, eblock, ptr) krb5_x((eblock)->crypto_entry->finish_random_key,(eblock, ptr))
 #define krb5_random_key(context, eblock, ptr, keyblock) krb5_x((eblock)->crypto_entry->random_key,(eblock, ptr, keyblock))
 
 #define krb5_eblock_enctype(context, eblockp) ((eblockp)->crypto_entry->proto_enctype)
@@ -717,6 +688,14 @@
 #define	KRB5_AUTHDATA_OSF_DCE	64
 #define KRB5_AUTHDATA_SESAME	65
 
+/* password change constants */
+
+#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
+
 /*
  * end "proto.h"
  */
@@ -1035,30 +1014,30 @@
 typedef struct _krb5_cc_ops {
     krb5_magic magic;
     char FAR *prefix;
-    char FAR * (INTERFACE *get_name) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
-    krb5_error_code (INTERFACE *resolve) KRB5_NPROTOTYPE((krb5_context, krb5_ccache FAR *,
+    char FAR * (KRB5_CALLCONV *get_name) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
+    krb5_error_code (KRB5_CALLCONV *resolve) KRB5_NPROTOTYPE((krb5_context, krb5_ccache FAR *,
 					    char FAR *));
-    krb5_error_code (INTERFACE *gen_new) KRB5_NPROTOTYPE((krb5_context, krb5_ccache FAR *));
-    krb5_error_code (INTERFACE *init) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *gen_new) KRB5_NPROTOTYPE((krb5_context, krb5_ccache FAR *));
+    krb5_error_code (KRB5_CALLCONV *init) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_principal));
-    krb5_error_code (INTERFACE *destroy) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
-    krb5_error_code (INTERFACE *close) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
-    krb5_error_code (INTERFACE *store) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *destroy) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
+    krb5_error_code (KRB5_CALLCONV *close) KRB5_NPROTOTYPE((krb5_context, krb5_ccache));
+    krb5_error_code (KRB5_CALLCONV *store) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_creds FAR *));
-    krb5_error_code (INTERFACE *retrieve) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *retrieve) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_flags, krb5_creds FAR *,
 					    krb5_creds FAR *));
-    krb5_error_code (INTERFACE *get_princ) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *get_princ) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_principal FAR *));
-    krb5_error_code (INTERFACE *get_first) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *get_first) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_cc_cursor FAR *));
-    krb5_error_code (INTERFACE *get_next) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *get_next) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_cc_cursor FAR *, krb5_creds FAR *));
-    krb5_error_code (INTERFACE *end_get) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *end_get) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_cc_cursor FAR *));
-    krb5_error_code (INTERFACE *remove_cred) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *remove_cred) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_flags, krb5_creds FAR *));
-    krb5_error_code (INTERFACE *set_flags) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
+    krb5_error_code (KRB5_CALLCONV *set_flags) KRB5_NPROTOTYPE((krb5_context, krb5_ccache,
 					    krb5_flags));
 } krb5_cc_ops;
 
@@ -1089,7 +1068,7 @@
 #define krb5_cc_remove_cred(context, cache, flags, creds) krb5_x((cache)->ops->remove_cred,(context, cache,flags, creds))
 #define krb5_cc_set_flags(context, cache, flags) krb5_x((cache)->ops->set_flags,(context, cache, flags))
 #define krb5_cc_get_name(context, cache) krb5_xc((cache)->ops->get_name,(context, cache))
-#define krb5_cc_get_type(context, cache) (*(cache)->ops->prefix)
+#define krb5_cc_get_type(context, cache) ((cache)->ops->prefix)
 
 extern krb5_cc_ops FAR *krb5_cc_dfl_ops;
 
@@ -1113,6 +1092,7 @@
     char FAR *client;			/* null-terminated */
     krb5_int32 cusec;
     krb5_timestamp ctime;
+    int	length;
 } krb5_donot_replay;
 
 typedef struct _krb5_rc_ops {
@@ -1163,8 +1143,6 @@
 #define krb5_rc_get_name(context, id) krb5_xc((id)->ops->get_name,(context, id))
 #define krb5_rc_resolve(context, id, name) krb5_x((id)->ops->resolve,(context, id, name))
 
-extern krb5_rc_ops krb5_rc_dfl_ops;
-
 /*
  * end "rcache.h"
  */
@@ -1265,11 +1243,15 @@
 /*
  * begin "func-proto.h"
  */
+#include "profile.h"
 
-krb5_error_code INTERFACE krb5_init_context
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_context
 	KRB5_PROTOTYPE((krb5_context FAR *));
-void krb5_free_context
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_context
 	KRB5_PROTOTYPE((krb5_context));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_context_get_profile
+       KRB5_PROTOTYPE((krb5_context,
+                  profile_t FAR *));
 
 krb5_error_code krb5_set_default_in_tkt_ktypes
 	KRB5_PROTOTYPE((krb5_context,
@@ -1310,6 +1292,13 @@
 		   krb5_creds *,
 		   krb5_creds **,
 		   krb5_creds *** ));
+krb5_error_code krb5_get_cred_from_kdc_renew
+	KRB5_PROTOTYPE((krb5_context,
+		   krb5_ccache,		/* not const, as reading may save
+					   state */
+		   krb5_creds *,
+		   krb5_creds **,
+		   krb5_creds *** ));
 void krb5_free_tgt_creds
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_creds ** ));	/* XXX too hard to do with const */
@@ -1317,25 +1306,31 @@
 #define	KRB5_GC_USER_USER	1	/* want user-user ticket */
 #define	KRB5_GC_CACHED		2	/* want cached ticket only */
 
-krb5_error_code INTERFACE krb5_get_credentials
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_flags,
 		   krb5_ccache,
 		   krb5_creds FAR *,
 		   krb5_creds FAR * FAR *));
-krb5_error_code INTERFACE krb5_get_credentials_validate
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_flags,
 		   krb5_ccache,
 		   krb5_creds FAR *,
 		   krb5_creds FAR * FAR *));
-krb5_error_code INTERFACE krb5_get_cred_via_tkt
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
+	KRB5_PROTOTYPE((krb5_context,
+		   krb5_const krb5_flags,
+		   krb5_ccache,
+		   krb5_creds FAR *,
+		   krb5_creds FAR * FAR *));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_cred_via_tkt
         KRB5_PROTOTYPE((krb5_context,
-                   krb5_creds *,
+                   krb5_creds FAR *,
                    krb5_const krb5_flags,
-                   krb5_address * krb5_const *,
-                   krb5_creds *,
-                   krb5_creds **));
+                   krb5_address FAR * krb5_const FAR *,
+                   krb5_creds FAR *,
+                   krb5_creds FAR * FAR *));
 krb5_error_code krb5_mk_req
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context *,
@@ -1345,7 +1340,7 @@
 		   krb5_data *,
 		   krb5_ccache,
 		   krb5_data * ));
-krb5_error_code INTERFACE krb5_mk_req_extended
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context FAR *,
 		   krb5_const krb5_flags,
@@ -1356,7 +1351,7 @@
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_data *));
-krb5_error_code INTERFACE krb5_rd_rep
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_rep
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_const krb5_data FAR *,
@@ -1381,11 +1376,11 @@
 		   krb5_const krb5_data *,
 		   krb5_data *,
 		   krb5_replay_data *));
-krb5_error_code INTERFACE krb5_parse_name
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_parse_name
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const char FAR *,
 		   krb5_principal FAR * ));
-krb5_error_code INTERFACE krb5_unparse_name
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_unparse_name
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const_principal,
 		   char FAR * FAR * ));
@@ -1414,7 +1409,7 @@
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const_principal,
 		   krb5_const_principal));
-krb5_error_code krb5_copy_keyblock
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_keyblock *,
 	       krb5_keyblock **));
@@ -1430,7 +1425,7 @@
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_data *,
 	       krb5_data **));
-krb5_error_code krb5_copy_principal
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_copy_principal
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const_principal,
 	       krb5_principal *));
@@ -1455,7 +1450,7 @@
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_checksum *,
 	       krb5_checksum **));
-void INTERFACE krb5_init_ets KRB5_PROTOTYPE((krb5_context));
+KRB5_DLLIMP void KRB5_CALLCONV krb5_init_ets KRB5_PROTOTYPE((krb5_context));
 krb5_error_code krb5_generate_subkey
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_keyblock *, krb5_keyblock **));
@@ -1465,7 +1460,7 @@
 krb5_error_code krb5_get_server_rcache
     	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_data *, krb5_rcache *));
-krb5_error_code INTERFACE_C krb5_build_principal_ext
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
     	KRB5_STDARG_P((krb5_context, krb5_principal FAR *, int, krb5_const char FAR *, ...));
 krb5_error_code krb5_build_principal
     	KRB5_STDARG_P((krb5_context, krb5_principal *, int, krb5_const char *, ...));
@@ -1473,7 +1468,7 @@
 /* XXX depending on varargs include file defining va_start... */
 krb5_error_code krb5_build_principal_va
     	KRB5_PROTOTYPE((krb5_context,
-		   krb5_principal *, int, krb5_const char *, va_list));
+		   krb5_principal, int, krb5_const char *, va_list));
 #endif
 
 krb5_error_code krb5_425_conv_principal
@@ -1486,21 +1481,32 @@
 	KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_principal princ, 
 		   char *name, char *inst, char *realm));
 
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_chpw_req
+	KRB5_PROTOTYPE((krb5_context context, krb5_auth_context auth_context,
+ 			krb5_data *ap_req, char *passwd, krb5_data *packet));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_rd_chpw_rep
+	KRB5_PROTOTYPE((krb5_context context, krb5_auth_context auth_context,
+		       krb5_data *packet, int *result_code,
+		       krb5_data *result_data));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_chpw_result_code_string
+	KRB5_PROTOTYPE((krb5_context context, int result_code,
+			char **result_codestr));
+
 /* libkt.spec */
 krb5_error_code krb5_kt_register
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_kt_ops * ));
-krb5_error_code krb5_kt_resolve
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_resolve
 	KRB5_PROTOTYPE((krb5_context,
-		   krb5_const char *,
-		   krb5_keytab * ));
+		   krb5_const char FAR *,
+		   krb5_keytab FAR * ));
 krb5_error_code krb5_kt_default_name
 	KRB5_PROTOTYPE((krb5_context,
 		   char *,
 		   int ));
-krb5_error_code krb5_kt_default
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_kt_default
 	KRB5_PROTOTYPE((krb5_context,
-		   krb5_keytab * ));
+		   krb5_keytab FAR * ));
 krb5_error_code krb5_kt_free_entry
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_keytab_entry * ));
@@ -1524,22 +1530,27 @@
 /* librc.spec--see rcache.h */
 
 /* libcc.spec */
-krb5_error_code krb5_cc_resolve
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_resolve
 	KRB5_PROTOTYPE((krb5_context,
-		   char *,
-		   krb5_ccache * ));
+		   char FAR *,
+		   krb5_ccache FAR * ));
 krb5_error_code krb5_cc_generate_new
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_cc_ops *,
 		   krb5_ccache * ));
-char * krb5_cc_default_name
+KRB5_DLLIMP char * KRB5_CALLCONV krb5_cc_default_name
 	KRB5_PROTOTYPE((krb5_context));
-krb5_error_code INTERFACE krb5_cc_default
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_default
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_ccache FAR *));
-unsigned int INTERFACE krb5_get_notification_message
+KRB5_DLLIMP unsigned int KRB5_CALLCONV krb5_get_notification_message
    KRB5_PROTOTYPE((void));
 
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
+	KRB5_PROTOTYPE((krb5_context context,
+			krb5_ccache incc,
+			krb5_ccache outcc));
+
 /* chk_trans.c */
 krb5_error_code krb5_check_transited_list
     KRB5_PROTOTYPE((krb5_context,
@@ -1551,7 +1562,7 @@
 		   krb5_principal *));
 
 /* krb5_free.c */
-void INTERFACE krb5_free_principal
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_principal
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_principal ));
 void krb5_free_authenticator
@@ -1560,7 +1571,7 @@
 void krb5_free_authenticator_contents
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_authenticator * ));
-void INTERFACE krb5_free_addresses
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_addresses
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_address FAR * FAR * ));
 void krb5_free_address
@@ -1572,9 +1583,9 @@
 void krb5_free_enc_tkt_part
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_enc_tkt_part * ));
-void krb5_free_ticket
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ticket
 	KRB5_PROTOTYPE((krb5_context,
-		   krb5_ticket * ));
+		   krb5_ticket FAR * ));
 void krb5_free_tickets
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_ticket ** ));
@@ -1611,10 +1622,10 @@
 void krb5_free_cred
    KRB5_PROTOTYPE((krb5_context, 
          krb5_cred *));
-void INTERFACE krb5_free_creds
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_creds
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_creds FAR *));
-void INTERFACE krb5_free_cred_contents
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_cred_contents
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_creds FAR *));
 void krb5_free_cred_enc_part
@@ -1623,13 +1634,16 @@
 void krb5_free_checksum
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_checksum *));
-void krb5_free_keyblock
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock
+	KRB5_PROTOTYPE((krb5_context,
+		   krb5_keyblock *));
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_keyblock_contents
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_keyblock *));
 void krb5_free_pa_data
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_pa_data **));
-void INTERFACE krb5_free_ap_rep_enc_part
+KRB5_DLLIMP void KRB5_CALLCONV krb5_free_ap_rep_enc_part
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_ap_rep_enc_part FAR *));
 void krb5_free_tkt_authent
@@ -1643,34 +1657,38 @@
          passwd_phrase_element **));
 
 /* From krb5/os but needed but by the outside world */
-krb5_error_code INTERFACE krb5_us_timeofday
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_us_timeofday
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_int32 FAR *,
 		   krb5_int32 FAR * ));
-krb5_error_code INTERFACE krb5_timeofday
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_timeofday
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_int32 FAR * ));
 		 /* get all the addresses of this host */
-krb5_error_code INTERFACE krb5_os_localaddr
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_os_localaddr
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_address FAR * FAR * FAR *));
-krb5_error_code INTERFACE krb5_get_default_realm
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_default_realm
 	KRB5_PROTOTYPE((krb5_context,
 		    char FAR * FAR * ));
-krb5_error_code INTERFACE krb5_set_default_realm
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_default_realm
 	KRB5_PROTOTYPE((krb5_context,
                    krb5_const char FAR * ));
-krb5_error_code INTERFACE krb5_sname_to_principal
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
         KRB5_PROTOTYPE((krb5_context,
 		   krb5_const char FAR *,
                    krb5_const char FAR *,
                    krb5_int32,
                    krb5_principal FAR *));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_change_password
+	KRB5_PROTOTYPE((krb5_context context, krb5_creds *creds, char *newpw,
+			int *result_code, krb5_data *result_code_string,
+			krb5_data *result_string));
 
-krb5_error_code INTERFACE krb5_set_config_files
-	KRB5_PROTOTYPE ((krb5_context, krb5_const char **));
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_set_config_files
+	KRB5_PROTOTYPE ((krb5_context, krb5_const char FAR * FAR *));
 
-krb5_error_code INTERFACE krb5_secure_config_files
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_secure_config_files
 	KRB5_PROTOTYPE ((krb5_context));
 
 krb5_error_code krb5_send_tgs
@@ -1707,7 +1725,7 @@
 		   krb5_ccache,
 		   krb5_kdc_rep ** ));
 
-krb5_error_code INTERFACE krb5_get_in_tkt_with_password
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_flags,
 		   krb5_address FAR * krb5_const FAR *,
@@ -1729,7 +1747,7 @@
 		   krb5_creds *,
 		   krb5_kdc_rep ** ));
 
-krb5_error_code krb5_get_in_tkt_with_keytab
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_const krb5_flags,
 		   krb5_address * krb5_const *,
@@ -1829,19 +1847,19 @@
 	       krb5_principal **,
 	       int));
 
-krb5_error_code INTERFACE krb5_mk_ncred
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_ncred
     	KRB5_PROTOTYPE((krb5_context,
                    krb5_auth_context,
-                   krb5_creds **,
-                   krb5_data **,
-                   krb5_replay_data *));
+                   krb5_creds FAR * FAR *,
+                   krb5_data FAR * FAR *,
+                   krb5_replay_data FAR *));
 
-krb5_error_code INTERFACE krb5_mk_1cred
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_mk_1cred
         KRB5_PROTOTYPE((krb5_context,
                    krb5_auth_context,
-                   krb5_creds *,
-                   krb5_data **,
-                   krb5_replay_data *));
+                   krb5_creds FAR *,
+                   krb5_data FAR * FAR *,
+                   krb5_replay_data FAR *));
 
 krb5_error_code krb5_rd_cred
         KRB5_PROTOTYPE((krb5_context,
@@ -1850,7 +1868,7 @@
                    krb5_creds ***,
                    krb5_replay_data *));
 
-krb5_error_code krb5_fwd_tgt_creds
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
 	KRB5_PROTOTYPE((krb5_context, 
 			krb5_auth_context,
 			char *,
@@ -1860,31 +1878,31 @@
 			int forwardable,
 			krb5_data *));	
 
-krb5_error_code krb5_auth_con_init
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_init
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context *));
 
-krb5_error_code krb5_auth_con_free
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_free
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context));
 
-krb5_error_code krb5_auth_con_setflags
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_int32));
 
-krb5_error_code krb5_auth_con_getflags
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_int32 *));
 
-krb5_error_code krb5_auth_con_setaddrs
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setaddrs
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_address *,
 		   krb5_address *));
 
-krb5_error_code krb5_auth_con_getaddrs
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getaddrs
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_address **,
@@ -1901,17 +1919,22 @@
 		   krb5_auth_context,
 		   krb5_keyblock *));
 
-krb5_error_code krb5_auth_con_getkey
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_keyblock **));
 
-krb5_error_code krb5_auth_con_getlocalsubkey
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_keyblock **));
 
-krb5_error_code krb5_auth_con_setcksumtype
+krb5_error_code krb5_auth_con_set_req_cksumtype
+	KRB5_PROTOTYPE((krb5_context,
+		   krb5_auth_context,
+		   krb5_cksumtype));
+
+krb5_error_code krb5_auth_con_set_safe_cksumtype
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_cksumtype));
@@ -1945,22 +1968,22 @@
 		   krb5_auth_context,
 		   krb5_pointer *));
 
-krb5_error_code krb5_auth_con_setrcache
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_rcache));
 
-krb5_error_code krb5_auth_con_getrcache
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getrcache
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 		   krb5_rcache *));
 
-krb5_error_code krb5_auth_con_getauthenticator
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
    KRB5_PROTOTYPE((krb5_context,
          krb5_auth_context,
          krb5_authenticator **));
 
-krb5_error_code krb5_auth_con_getremotesubkey
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
    KRB5_PROTOTYPE((krb5_context,
          krb5_auth_context,
          krb5_keyblock **));
@@ -1975,7 +1998,7 @@
  * begin stuff from libos.h
  */
 
-krb5_error_code krb5_read_password
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_read_password
 	KRB5_PROTOTYPE((krb5_context,
 			const char *,
 		   	const char *,
@@ -2000,7 +2023,7 @@
 krb5_boolean krb5_kuserok
 	KRB5_PROTOTYPE((krb5_context,
 		   krb5_principal, const char *));
-krb5_error_code INTERFACE krb5_auth_con_genaddrs
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
     KRB5_PROTOTYPE((krb5_context,
 		   krb5_auth_context,
 	       int, int));
@@ -2036,9 +2059,9 @@
 krb5_string_to_salttype KRB5_PROTOTYPE((char *, krb5_int32 *));
 krb5_error_code
 krb5_string_to_cksumtype KRB5_PROTOTYPE((char *, krb5_cksumtype *));
-krb5_error_code
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
 krb5_string_to_timestamp KRB5_PROTOTYPE((char *, krb5_timestamp *));
-krb5_error_code
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
 krb5_string_to_deltat KRB5_PROTOTYPE((char *, krb5_deltat *));
 krb5_error_code
 krb5_enctype_to_string KRB5_PROTOTYPE((krb5_enctype, char *, size_t));
@@ -2048,11 +2071,11 @@
 krb5_cksumtype_to_string KRB5_PROTOTYPE((krb5_cksumtype, char *, size_t));
 krb5_error_code
 krb5_timestamp_to_string KRB5_PROTOTYPE((krb5_timestamp, char *, size_t));
-krb5_error_code
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
 krb5_timestamp_to_sfstring KRB5_PROTOTYPE((krb5_timestamp,
-					   char *,
+					   char FAR *,
 					   size_t,
-					   char *));
+					   char FAR *));
 krb5_error_code
 krb5_deltat_to_string KRB5_PROTOTYPE((krb5_deltat, char *, size_t));
 
@@ -2081,5 +2104,163 @@
 /* flags for recvauth */
 #define KRB5_RECVAUTH_SKIP_VERSION	0x0001
 #define KRB5_RECVAUTH_BADAUTHVERS	0x0002
+
+extern char * krb5_version;
+
+/* initial ticket api functions */
+
+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 *banner,
+					     int num_prompts,
+					     krb5_prompt prompts[]);
+
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_prompter_posix
+KRB5_PROTOTYPE((krb5_context context,
+		void *data,
+		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
+
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_init
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_tkt_life
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_deltat tkt_life));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_renew_life
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_deltat renew_life));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_forwardable
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		int forwardable));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_proxiable
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		int proxiable));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_etype_list
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_enctype *etype_list,
+		int etype_list_length));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_address_list
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_address **addresses));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_preauth_list
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_preauthtype *preauth_list,
+		int preauth_list_length));
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_salt
+KRB5_PROTOTYPE((krb5_get_init_creds_opt *opt,
+		krb5_data *salt));
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_get_init_creds_password
+KRB5_PROTOTYPE((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 *options));
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_get_init_creds_keytab
+KRB5_PROTOTYPE((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 *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
+
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_verify_init_creds_opt_init
+KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options));
+KRB5_DLLIMP void KRB5_CALLCONV
+krb5_verify_init_creds_opt_set_ap_req_nofail
+KRB5_PROTOTYPE((krb5_verify_init_creds_opt *options,
+		int ap_req_nofail));
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_verify_init_creds
+KRB5_PROTOTYPE((krb5_context context,
+		krb5_creds *creds,
+		krb5_principal ap_req_server,
+		krb5_keytab ap_req_keytab,
+		krb5_ccache *ccache,
+		krb5_verify_init_creds_opt *options));
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_get_validated_creds
+KRB5_PROTOTYPE((krb5_context context,
+		krb5_creds *creds,
+		krb5_principal client,
+		krb5_ccache ccache,
+		char *in_tkt_service));
+
+KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
+krb5_get_renewed_creds
+KRB5_PROTOTYPE((krb5_context context,
+		krb5_creds *creds,
+		krb5_principal client,
+		krb5_ccache ccache,
+		char *in_tkt_service));
+
 
 #endif /* KRB5_GENERAL__ */
