From 8793628306417794904e3f991b478ef929403cb4 Mon Sep 17 00:00:00 2001 From: Asanka Herath Date: Wed, 14 Jul 2010 01:31:03 -0400 Subject: [PATCH] Windows: Shim library for ABI compatibility with MIT KfW The shim code creates DLLs that intend to be ABI compatible with MIT Kerberos for Windows DLLs. At its current state, the shim isn't complete and there are multiple functions that are missing. --- packages/windows/kfw_shim/NTMakefile | 147 ++++++++++++++++++++ packages/windows/kfw_shim/comerr32.def | 8 ++ packages/windows/kfw_shim/comerr64.def | 8 ++ packages/windows/kfw_shim/comerr_shim.c | 27 ++++ packages/windows/kfw_shim/gssapi32.def | 56 ++++++++ packages/windows/kfw_shim/gssapi64.def | 56 ++++++++ packages/windows/kfw_shim/gssapi_shim.c | 4 + packages/windows/kfw_shim/krb5_32.def | 175 ++++++++++++++++++++++++ packages/windows/kfw_shim/krb5_64.def | 175 ++++++++++++++++++++++++ packages/windows/kfw_shim/krb5_shim.c | 88 ++++++++++++ 10 files changed, 744 insertions(+) create mode 100644 packages/windows/kfw_shim/NTMakefile create mode 100644 packages/windows/kfw_shim/comerr32.def create mode 100644 packages/windows/kfw_shim/comerr64.def create mode 100644 packages/windows/kfw_shim/comerr_shim.c create mode 100644 packages/windows/kfw_shim/gssapi32.def create mode 100644 packages/windows/kfw_shim/gssapi64.def create mode 100644 packages/windows/kfw_shim/gssapi_shim.c create mode 100644 packages/windows/kfw_shim/krb5_32.def create mode 100644 packages/windows/kfw_shim/krb5_64.def create mode 100644 packages/windows/kfw_shim/krb5_shim.c diff --git a/packages/windows/kfw_shim/NTMakefile b/packages/windows/kfw_shim/NTMakefile new file mode 100644 index 000000000..b65388cd2 --- /dev/null +++ b/packages/windows/kfw_shim/NTMakefile @@ -0,0 +1,147 @@ +######################################################################## +# +# Copyright (c) 2009, Secure Endpoints Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# - Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +RELDIR=packages\windows\kfw_shim + +!include ../../../windows/NTMakefile.w32 + +!if "$(CPU)"=="i386" +FILES= \ + $(BINDIR)\comerr32.dll \ + $(BINDIR)\gssapi32.dll \ + $(BINDIR)\krb5_32.dll \ +# $(BINDIR)\krbcc32.dll \ +# $(BINDIR)\wshelp32.dll \ +# $(BINDIR)\xpprof32.dll + +!elseif "$(CPU)"=="AMD64" +FILES= \ + $(BINDIR)\comerr64.dll \ + $(BINDIR)\gssapi64.dll \ + $(BINDIR)\krb5_64.dll \ +# $(BINDIR)\krbcc64.dll \ +# $(BINDIR)\wshelp64.dll \ +# $(BINDIR)\xpprof64.dll + +!else +! error Unknown CPU value +!endif + +GENDEF=$(PERL) $(SRC)\cf\w32-def-from-dll.pl + +# ---------------------------------------------------------------------- +# comerr32.dll shim + +COMERR_SHIM_OBJS=$(OBJ)\comerr_shim.obj + +$(BINDIR)\comerr32.dll: $(COMERR_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:comerr32.def $(LIBCOMERR) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +# ---------------------------------------------------------------------- +# comerr64.dll shim + +$(BINDIR)\comerr64.dll: $(COMERR_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:comerr64.def $(LIBCOMERR) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +# ---------------------------------------------------------------------- +# gssapi32.dll shim + +GSSAPI_SHIM_OBJS=$(OBJ)\gssapi_shim.obj + +$(BINDIR)\gssapi32.dll: $(GSSAPI_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:gssapi32.def $(LIBGSSAPI) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +# ---------------------------------------------------------------------- +# gssapi64.dll shim + +$(BINDIR)\gssapi64.dll: $(GSSAPI_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:gssapi64.def $(LIBGSSAPI) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +# ---------------------------------------------------------------------- +# krb5_32.dll shim + +KRB5_SHIM_OBJS=$(OBJ)\krb5_shim.obj + +$(BINDIR)\krb5_32.dll: $(KRB5_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:krb5_32.def $(LIBHEIMDAL) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +# ---------------------------------------------------------------------- +# krb5_64.dll shim + +$(BINDIR)\krb5_64.dll: $(KRB5_SHIM_OBJS) + $(DLLGUILINK) -out:$@ -def:krb5_64.def $(LIBHEIMDAL) + ( ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest $(APPMANIFEST) ) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || $(RM) $@ + +all:: $(FILES) + +clean:: + $(RM) $(FILES) + +!ifdef DEV + +comerr32.def: $(COMERR_SHIM_OBJS) + ( $(GENDEF) -mcom_err -e$(BINDIR)\com_err.dll $** "$(KFWBIN)\comerr32.dll" > $@ ) || $(RM) $@ + +comerr64.def: $(COMERR_SHIM_OBJS) + ( $(GENDEF) -mcom_err -e$(BINDIR)\com_err.dll $** "$(KFWBIN)\comerr64.dll" > $@ ) || $(RM) $@ + +gssapi32.def: $(GSSAPI_SHIM_OBJS) + ( $(GENDEF) -mgssapi -e$(BINDIR)\gssapi.dll $** "$(KFWBIN)\gssapi32.dll" > $@ ) || $(RM) $@ + +gssapi64.def: $(GSSAPI_SHIM_OBJS) + ( $(GENDEF) -mgssapi -e$(BINDIR)\gssapi.dll $** "$(KFWBIN)\gssapi64.dll" > $@ ) || $(RM) $@ + +krb5_32.def: $(KRB5_SHIM_OBJS) + ( $(GENDEF) -mheimdal -e$(BINDIR)\heimdal.dll $** "$(KFWBIN)\krb5_32.dll" > $@ ) || $(RM) $@ + +krb5_64.def: $(KRB5_SHIM_OBJS) + ( $(GENDEF) -mheimdal -e$(BINDIR)\heimdal.dll $** "$(KFWBIN)\krb5_64.dll" > $@ ) || $(RM) $@ + +!ifndef KFWBIN +gen-defs: + echo KFWBIN should point to the directory that contains the KfW binaries + exit /b 1 +!else +!if "$(CPU)"=="i386" +gen-defs: comerr32.def gssapi32.def krb5_32.def + echo Done. +!elseif "$(CPU)"=="AMD64" +gen-defs: comerr64.def gssapi64.def krb5_64.def + echo Done. +!endif +!endif + +!endif \ No newline at end of file diff --git a/packages/windows/kfw_shim/comerr32.def b/packages/windows/kfw_shim/comerr32.def new file mode 100644 index 000000000..eb3e2975c --- /dev/null +++ b/packages/windows/kfw_shim/comerr32.def @@ -0,0 +1,8 @@ +EXPORTS + add_error_table = _add_error_table@4 @1 + com_err = com_err.com_err @2 + com_err_va = com_err._com_err_va@16 @3 + error_message = com_err._error_message@4 @4 + remove_error_table = _remove_error_table@4 @5 + reset_com_err_hook = SHIM_reset_com_err_hook @6 + set_com_err_hook = SHIM_set_com_err_hook @7 diff --git a/packages/windows/kfw_shim/comerr64.def b/packages/windows/kfw_shim/comerr64.def new file mode 100644 index 000000000..b95afa190 --- /dev/null +++ b/packages/windows/kfw_shim/comerr64.def @@ -0,0 +1,8 @@ +EXPORTS + add_error_table = add_error_table @1 + com_err = com_err.com_err @2 + com_err_va = com_err.com_err_va @3 + error_message = com_err.error_message @4 + remove_error_table = remove_error_table @5 + reset_com_err_hook = com_err.reset_com_err_hook @7 + set_com_err_hook = com_err.set_com_err_hook @6 diff --git a/packages/windows/kfw_shim/comerr_shim.c b/packages/windows/kfw_shim/comerr_shim.c new file mode 100644 index 000000000..fd4e74237 --- /dev/null +++ b/packages/windows/kfw_shim/comerr_shim.c @@ -0,0 +1,27 @@ +#include +#include +#include + +int KRB5_CALLCONV +add_error_table(const struct error_table * et) +{ + return -1; +} + +int KRB5_CALLCONV +remove_error_table(const struct error_table * et) +{ + return -1; +} + +errf +SHIM_set_com_err_hook (errf new) +{ + return set_com_err_hook(new); +} + +errf +SHIM_reset_com_err_hook (void) +{ + return reset_com_err_hook(); +} diff --git a/packages/windows/kfw_shim/gssapi32.def b/packages/windows/kfw_shim/gssapi32.def new file mode 100644 index 000000000..55e4ea521 --- /dev/null +++ b/packages/windows/kfw_shim/gssapi32.def @@ -0,0 +1,56 @@ +EXPORTS + GSS_C_NT_ANONYMOUS = gssapi.GSS_C_NT_ANONYMOUS @1 + GSS_C_NT_EXPORT_NAME = gssapi.GSS_C_NT_EXPORT_NAME @2 + GSS_C_NT_HOSTBASED_SERVICE = gssapi.GSS_C_NT_HOSTBASED_SERVICE @3 + GSS_C_NT_HOSTBASED_SERVICE_X = gssapi.GSS_C_NT_HOSTBASED_SERVICE_X @4 + GSS_C_NT_MACHINE_UID_NAME = gssapi.GSS_C_NT_MACHINE_UID_NAME @5 + GSS_C_NT_STRING_UID_NAME = gssapi.GSS_C_NT_STRING_UID_NAME @6 + GSS_C_NT_USER_NAME = gssapi.GSS_C_NT_USER_NAME @7 + GSS_KRB5_NT_PRINCIPAL_NAME = gssapi.GSS_KRB5_NT_PRINCIPAL_NAME @8 + gss_accept_sec_context = gssapi._gss_accept_sec_context@44 @9 + gss_acquire_cred = gssapi._gss_acquire_cred@32 @10 + gss_add_cred = gssapi._gss_add_cred@44 @11 + gss_add_oid_set_member = gssapi._gss_add_oid_set_member@12 @12 + gss_canonicalize_name = gssapi._gss_canonicalize_name@16 @13 + gss_compare_name = gssapi._gss_compare_name@16 @14 + gss_context_time = gssapi._gss_context_time@12 @15 + gss_create_empty_oid_set = gssapi._gss_create_empty_oid_set@8 @16 + gss_delete_sec_context = gssapi._gss_delete_sec_context@12 @17 + gss_display_name = gssapi._gss_display_name@16 @18 + gss_display_status = gssapi._gss_display_status@24 @19 + gss_duplicate_name = gssapi._gss_duplicate_name@12 @20 + gss_export_name = gssapi._gss_export_name@12 @21 + gss_export_sec_context = gssapi._gss_export_sec_context@12 @22 + gss_get_mic = gssapi._gss_get_mic@20 @23 + gss_import_name = gssapi._gss_import_name@16 @24 + gss_import_sec_context = gssapi._gss_import_sec_context@12 @25 + gss_indicate_mechs = gssapi._gss_indicate_mechs@8 @26 + gss_init_sec_context = gssapi._gss_init_sec_context@52 @27 + gss_inquire_context = gssapi._gss_inquire_context@36 @28 + gss_inquire_cred = gssapi._gss_inquire_cred@24 @29 + gss_inquire_cred_by_mech = gssapi._gss_inquire_cred_by_mech@28 @30 + gss_inquire_mechs_for_name = gssapi._gss_inquire_mechs_for_name@12 @31 + gss_inquire_names_for_mech = gssapi._gss_inquire_names_for_mech@12 @32 + gss_krb5_ccache_name = gssapi._gss_krb5_ccache_name@12 @33 + gss_krb5_copy_ccache = gssapi._gss_krb5_copy_ccache@12 @34 + gss_krb5_export_lucid_sec_context = gssapi._gss_krb5_export_lucid_sec_context@16 @35 + gss_krb5_free_lucid_sec_context = gssapi._gss_krb5_free_lucid_sec_context@8 @36 + gss_krb5_get_tkt_flags = gssapi._gss_krb5_get_tkt_flags@12 @37 + gss_krb5_set_allowable_enctypes = gssapi._gss_krb5_set_allowable_enctypes@16 @38 + gss_oid_to_str = gssapi._gss_oid_to_str@12 @51 + gss_process_context_token = gssapi._gss_process_context_token@12 @52 + gss_release_buffer = gssapi._gss_release_buffer@8 @53 + gss_release_cred = gssapi._gss_release_cred@8 @54 + gss_release_name = gssapi._gss_release_name@8 @55 + gss_release_oid = gssapi._gss_release_oid@8 @56 + gss_release_oid_set = gssapi._gss_release_oid_set@8 @57 + gss_seal = gssapi._gss_seal@28 @58 + gss_sign = gssapi._gss_sign@20 @59 + gss_test_oid_set_member = gssapi._gss_test_oid_set_member@16 @61 + gss_unseal = gssapi._gss_unseal@24 @62 + gss_unwrap = gssapi._gss_unwrap@24 @63 + gss_verify = gssapi._gss_verify@20 @64 + gss_verify_mic = gssapi._gss_verify_mic@20 @65 + gss_wrap = gssapi._gss_wrap@28 @66 + gss_wrap_size_limit = gssapi._gss_wrap_size_limit@24 @67 + krb5_gss_register_acceptor_identity = gssapi._krb5_gss_register_acceptor_identity@4 @69 diff --git a/packages/windows/kfw_shim/gssapi64.def b/packages/windows/kfw_shim/gssapi64.def new file mode 100644 index 000000000..6c940f3d8 --- /dev/null +++ b/packages/windows/kfw_shim/gssapi64.def @@ -0,0 +1,56 @@ +EXPORTS + GSS_C_NT_ANONYMOUS = gssapi.GSS_C_NT_ANONYMOUS @1 + GSS_C_NT_EXPORT_NAME = gssapi.GSS_C_NT_EXPORT_NAME @2 + GSS_C_NT_HOSTBASED_SERVICE = gssapi.GSS_C_NT_HOSTBASED_SERVICE @3 + GSS_C_NT_HOSTBASED_SERVICE_X = gssapi.GSS_C_NT_HOSTBASED_SERVICE_X @4 + GSS_C_NT_MACHINE_UID_NAME = gssapi.GSS_C_NT_MACHINE_UID_NAME @5 + GSS_C_NT_STRING_UID_NAME = gssapi.GSS_C_NT_STRING_UID_NAME @6 + GSS_C_NT_USER_NAME = gssapi.GSS_C_NT_USER_NAME @7 + GSS_KRB5_NT_PRINCIPAL_NAME = gssapi.GSS_KRB5_NT_PRINCIPAL_NAME @8 + gss_accept_sec_context = gssapi.gss_accept_sec_context @9 + gss_acquire_cred = gssapi.gss_acquire_cred @10 + gss_add_cred = gssapi.gss_add_cred @11 + gss_add_oid_set_member = gssapi.gss_add_oid_set_member @12 + gss_canonicalize_name = gssapi.gss_canonicalize_name @13 + gss_compare_name = gssapi.gss_compare_name @14 + gss_context_time = gssapi.gss_context_time @15 + gss_create_empty_oid_set = gssapi.gss_create_empty_oid_set @16 + gss_delete_sec_context = gssapi.gss_delete_sec_context @17 + gss_display_name = gssapi.gss_display_name @18 + gss_display_status = gssapi.gss_display_status @19 + gss_duplicate_name = gssapi.gss_duplicate_name @20 + gss_export_name = gssapi.gss_export_name @21 + gss_export_sec_context = gssapi.gss_export_sec_context @22 + gss_get_mic = gssapi.gss_get_mic @23 + gss_import_name = gssapi.gss_import_name @24 + gss_import_sec_context = gssapi.gss_import_sec_context @25 + gss_indicate_mechs = gssapi.gss_indicate_mechs @26 + gss_init_sec_context = gssapi.gss_init_sec_context @27 + gss_inquire_context = gssapi.gss_inquire_context @28 + gss_inquire_cred = gssapi.gss_inquire_cred @29 + gss_inquire_cred_by_mech = gssapi.gss_inquire_cred_by_mech @30 + gss_inquire_mechs_for_name = gssapi.gss_inquire_mechs_for_name @31 + gss_inquire_names_for_mech = gssapi.gss_inquire_names_for_mech @32 + gss_krb5_ccache_name = gssapi.gss_krb5_ccache_name @33 + gss_krb5_copy_ccache = gssapi.gss_krb5_copy_ccache @34 + gss_krb5_export_lucid_sec_context = gssapi.gss_krb5_export_lucid_sec_context @35 + gss_krb5_free_lucid_sec_context = gssapi.gss_krb5_free_lucid_sec_context @36 + gss_krb5_get_tkt_flags = gssapi.gss_krb5_get_tkt_flags @37 + gss_krb5_set_allowable_enctypes = gssapi.gss_krb5_set_allowable_enctypes @38 + gss_oid_to_str = gssapi.gss_oid_to_str @51 + gss_process_context_token = gssapi.gss_process_context_token @52 + gss_release_buffer = gssapi.gss_release_buffer @53 + gss_release_cred = gssapi.gss_release_cred @54 + gss_release_name = gssapi.gss_release_name @55 + gss_release_oid = gssapi.gss_release_oid @56 + gss_release_oid_set = gssapi.gss_release_oid_set @57 + gss_seal = gssapi.gss_seal @58 + gss_sign = gssapi.gss_sign @59 + gss_test_oid_set_member = gssapi.gss_test_oid_set_member @61 + gss_unseal = gssapi.gss_unseal @62 + gss_unwrap = gssapi.gss_unwrap @63 + gss_verify = gssapi.gss_verify @64 + gss_verify_mic = gssapi.gss_verify_mic @65 + gss_wrap = gssapi.gss_wrap @66 + gss_wrap_size_limit = gssapi.gss_wrap_size_limit @67 + krb5_gss_register_acceptor_identity = gssapi.krb5_gss_register_acceptor_identity @69 diff --git a/packages/windows/kfw_shim/gssapi_shim.c b/packages/windows/kfw_shim/gssapi_shim.c new file mode 100644 index 000000000..720fe57ff --- /dev/null +++ b/packages/windows/kfw_shim/gssapi_shim.c @@ -0,0 +1,4 @@ +int dummy(void) +{ + return 0; +} diff --git a/packages/windows/kfw_shim/krb5_32.def b/packages/windows/kfw_shim/krb5_32.def new file mode 100644 index 000000000..e6d79affc --- /dev/null +++ b/packages/windows/kfw_shim/krb5_32.def @@ -0,0 +1,175 @@ +EXPORTS + krb5_address_compare = heimdal._krb5_address_compare@12 @13 + krb5_address_order = heimdal._krb5_address_order@12 @14 + krb5_address_search = SHIM_krb5_address_search @15 + krb5_aname_to_localname = heimdal._krb5_aname_to_localname@16 @16 + krb5_appdefault_boolean = heimdal._krb5_appdefault_boolean@24 @17 + krb5_appdefault_string = heimdal._krb5_appdefault_string@24 @18 + krb5_auth_con_free = heimdal._krb5_auth_con_free@8 @19 + krb5_auth_con_genaddrs = heimdal._krb5_auth_con_genaddrs@16 @20 + krb5_auth_con_getaddrs = heimdal._krb5_auth_con_getaddrs@16 @21 + krb5_auth_con_getauthenticator = heimdal._krb5_auth_con_getauthenticator@12 @22 + krb5_auth_con_getflags = heimdal._krb5_auth_con_getflags@12 @24 + krb5_auth_con_getkey = heimdal._krb5_auth_con_getkey@12 @25 + krb5_auth_con_getlocalseqnumber = heimdal._krb5_auth_con_getlocalseqnumber@12 @26 + krb5_auth_con_getlocalsubkey = heimdal._krb5_auth_con_getlocalsubkey@12 @27 + krb5_auth_con_getrcache = SHIM_krb5_auth_con_getrcache @28 + krb5_auth_con_getremoteseqnumber = heimdal._krb5_auth_con_getremoteseqnumber@12 @30 + krb5_auth_con_getremotesubkey = heimdal._krb5_auth_con_getremotesubkey@12 @31 + krb5_auth_con_init = heimdal._krb5_auth_con_init@8 @33 + krb5_auth_con_setaddrs = SHIM_krb5_auth_con_setaddrs @37 + krb5_auth_con_setflags = heimdal._krb5_auth_con_setflags@12 @38 + krb5_auth_con_setrcache = heimdal._krb5_auth_con_setrcache@12 @40 + krb5_build_principal = heimdal.krb5_build_principal @44 + krb5_build_principal_ext = heimdal.krb5_build_principal_ext @45 + krb5_build_principal_va = heimdal._krb5_build_principal_va@20 @46 + krb5_c_block_size = heimdal._krb5_c_block_size@12 @47 + krb5_c_checksum_length = heimdal._krb5_c_checksum_length@12 @48 + krb5_c_decrypt = _SHIM_krb5_c_decrypt@24 @49 + krb5_c_encrypt = heimdal._krb5_c_encrypt@24 @50 + krb5_c_encrypt_length = heimdal._krb5_c_encrypt_length@16 @51 + krb5_c_enctype_compare = heimdal._krb5_c_enctype_compare@16 @52 + krb5_c_is_coll_proof_cksum = heimdal._krb5_c_is_coll_proof_cksum@4 @53 + krb5_c_is_keyed_cksum = heimdal._krb5_c_is_keyed_cksum@4 @54 + krb5_c_make_checksum = heimdal._krb5_c_make_checksum@24 @56 + krb5_c_make_random_key = heimdal._krb5_c_make_random_key@12 @57 + krb5_c_prf = heimdal._krb5_c_prf@16 @58 + krb5_c_prf_length = heimdal._krb5_c_prf_length@12 @59 + krb5_c_valid_cksumtype = heimdal._krb5_c_valid_cksumtype@4 @64 + krb5_c_valid_enctype = heimdal._krb5_c_valid_enctype@4 @65 + krb5_c_verify_checksum = heimdal._krb5_c_verify_checksum@24 @66 + krb5_cc_close = heimdal._krb5_cc_close@8 @68 + krb5_cc_copy_creds = heimdal._krb5_cc_copy_creds@12 @69 + krb5_cc_default = heimdal._krb5_cc_default@8 @70 + krb5_cc_default_name = heimdal._krb5_cc_default_name@4 @71 + krb5_cc_destroy = heimdal._krb5_cc_destroy@8 @72 + krb5_cc_end_seq_get = heimdal._krb5_cc_end_seq_get@12 @73 + krb5_cc_gen_new = _SHIM_krb5_cc_gen_new@8 @74 + krb5_cc_get_name = heimdal._krb5_cc_get_name@8 @75 + krb5_cc_get_principal = heimdal._krb5_cc_get_principal@12 @76 + krb5_cc_get_type = heimdal._krb5_cc_get_type@8 @77 + krb5_cc_initialize = heimdal._krb5_cc_initialize@12 @78 + krb5_cc_new_unique = heimdal._krb5_cc_new_unique@16 @79 + krb5_cc_next_cred = heimdal._krb5_cc_next_cred@16 @80 + krb5_cc_remove_cred = heimdal._krb5_cc_remove_cred@16 @81 + krb5_cc_resolve = heimdal._krb5_cc_resolve@12 @82 + krb5_cc_retrieve_cred = heimdal._krb5_cc_retrieve_cred@20 @83 + krb5_cc_set_default_name = heimdal._krb5_cc_set_default_name@8 @84 + krb5_cc_set_flags = heimdal._krb5_cc_set_flags@12 @85 + krb5_cc_start_seq_get = heimdal._krb5_cc_start_seq_get@12 @86 + krb5_cc_store_cred = heimdal._krb5_cc_store_cred@12 @87 + krb5_cccol_cursor_free = heimdal._krb5_cccol_cursor_free@8 @88 + krb5_cccol_cursor_new = heimdal._krb5_cccol_cursor_new@8 @89 + krb5_cccol_cursor_next = heimdal._krb5_cccol_cursor_next@12 @90 + krb5_change_password = heimdal._krb5_change_password@24 @91 + krb5_clear_error_message = heimdal._krb5_clear_error_message@4 @94 + krb5_copy_addresses = heimdal._krb5_copy_addresses@12 @95 + krb5_copy_checksum = heimdal._krb5_copy_checksum@12 @98 + krb5_copy_creds = heimdal._krb5_copy_creds@12 @100 + krb5_copy_data = heimdal._krb5_copy_data@12 @101 + krb5_copy_keyblock = heimdal._krb5_copy_keyblock@12 @102 + krb5_copy_keyblock_contents = heimdal._krb5_copy_keyblock_contents@12 @103 + krb5_copy_principal = heimdal._krb5_copy_principal@12 @104 + krb5_copy_ticket = heimdal._krb5_copy_ticket@12 @105 + krb5_decrypt = heimdal._krb5_decrypt@24 @107 + krb5_encrypt = heimdal._krb5_encrypt@24 @111 + krb5_enctype_to_string = heimdal._krb5_enctype_to_string@12 @113 + krb5_free_addresses = heimdal._krb5_free_addresses@8 @117 + krb5_free_ap_rep_enc_part = heimdal._krb5_free_ap_rep_enc_part@8 @118 + krb5_free_authenticator = heimdal._krb5_free_authenticator@8 @121 + krb5_free_checksum = heimdal._krb5_free_checksum@8 @122 + krb5_free_checksum_contents = heimdal._krb5_free_checksum_contents@8 @123 + krb5_free_config_files = heimdal._krb5_free_config_files@4 @125 + krb5_free_context = heimdal._krb5_free_context@4 @126 + krb5_free_cred_contents = heimdal._krb5_free_cred_contents@8 @127 + krb5_free_creds = heimdal._krb5_free_creds@8 @128 + krb5_free_data = heimdal._krb5_free_data@8 @129 + krb5_free_data_contents = heimdal._krb5_free_data_contents@8 @130 + krb5_free_error = heimdal._krb5_free_error@8 @133 + krb5_free_error_message = heimdal._krb5_free_error_message@8 @134 + krb5_free_host_realm = heimdal._krb5_free_host_realm@8 @135 + krb5_free_keyblock = heimdal._krb5_free_keyblock@8 @136 + krb5_free_keyblock_contents = heimdal._krb5_free_keyblock_contents@8 @137 + krb5_free_principal = heimdal._krb5_free_principal@8 @140 + krb5_free_ticket = heimdal._krb5_free_ticket@8 @142 + krb5_free_unparsed_name = heimdal._krb5_free_unparsed_name@8 @143 + krb5_fwd_tgt_creds = heimdal._krb5_fwd_tgt_creds@32 @144 + krb5_get_credentials = heimdal._krb5_get_credentials@20 @145 + krb5_get_default_config_files = heimdal._krb5_get_default_config_files@4 @148 + krb5_get_default_realm = heimdal._krb5_get_default_realm@8 @149 + krb5_get_error_message = heimdal._krb5_get_error_message@8 @150 + krb5_get_host_realm = heimdal._krb5_get_host_realm@12 @151 + krb5_get_in_tkt = heimdal._krb5_get_in_tkt@48 @152 + krb5_get_in_tkt_with_keytab = heimdal._krb5_get_in_tkt_with_keytab@36 @153 + krb5_get_in_tkt_with_password = heimdal._krb5_get_in_tkt_with_password@36 @154 + krb5_get_in_tkt_with_skey = heimdal._krb5_get_in_tkt_with_skey@36 @155 + krb5_get_init_creds_keytab = heimdal._krb5_get_init_creds_keytab@28 @156 + krb5_get_init_creds_opt_alloc = heimdal._krb5_get_init_creds_opt_alloc@8 @157 + krb5_get_init_creds_opt_free = heimdal._krb5_get_init_creds_opt_free@8 @158 + krb5_get_init_creds_opt_init = heimdal._krb5_get_init_creds_opt_init@4 @161 + krb5_get_init_creds_opt_set_address_list = heimdal._krb5_get_init_creds_opt_set_address_list@8 @162 + krb5_get_init_creds_opt_set_etype_list = heimdal._krb5_get_init_creds_opt_set_etype_list@12 @164 + krb5_get_init_creds_opt_set_forwardable = heimdal._krb5_get_init_creds_opt_set_forwardable@8 @165 + krb5_get_init_creds_opt_set_preauth_list = heimdal._krb5_get_init_creds_opt_set_preauth_list@12 @167 + krb5_get_init_creds_opt_set_proxiable = heimdal._krb5_get_init_creds_opt_set_proxiable@8 @168 + krb5_get_init_creds_opt_set_renew_life = heimdal._krb5_get_init_creds_opt_set_renew_life@8 @169 + krb5_get_init_creds_opt_set_salt = heimdal._krb5_get_init_creds_opt_set_salt@8 @170 + krb5_get_init_creds_opt_set_tkt_life = heimdal._krb5_get_init_creds_opt_set_tkt_life@8 @171 + krb5_get_init_creds_password = heimdal._krb5_get_init_creds_password@36 @172 + krb5_get_renewed_creds = heimdal._krb5_get_renewed_creds@20 @175 + krb5_get_server_rcache = heimdal._krb5_get_server_rcache@12 @176 + krb5_init_context = heimdal._krb5_init_context@4 @180 + krb5_is_thread_safe = heimdal._krb5_is_thread_safe@0 @186 + krb5_kt_add_entry = heimdal._krb5_kt_add_entry@12 @187 + krb5_kt_close = heimdal._krb5_kt_close@8 @188 + krb5_kt_default = heimdal._krb5_kt_default@8 @189 + krb5_kt_default_name = heimdal._krb5_kt_default_name@12 @190 + krb5_kt_end_seq_get = heimdal._krb5_kt_end_seq_get@12 @191 + krb5_kt_free_entry = heimdal._krb5_kt_free_entry@8 @192 + krb5_kt_get_entry = heimdal._krb5_kt_get_entry@24 @193 + krb5_kt_get_name = heimdal._krb5_kt_get_name@16 @194 + krb5_kt_get_type = _SHIM_krb5_kt_get_type@8 @195 + krb5_kt_next_entry = heimdal._krb5_kt_next_entry@16 @196 + krb5_kt_read_service_key = heimdal._krb5_kt_read_service_key@24 @197 + krb5_kt_remove_entry = heimdal._krb5_kt_remove_entry@12 @198 + krb5_kt_resolve = heimdal._krb5_kt_resolve@12 @199 + krb5_kt_start_seq_get = heimdal._krb5_kt_start_seq_get@12 @200 + krb5_kuserok = heimdal._krb5_kuserok@12 @201 + krb5_mk_error = _SHIM_krb5_mk_error@12 @203 + krb5_mk_priv = heimdal._krb5_mk_priv@20 @205 + krb5_mk_rep = heimdal._krb5_mk_rep@12 @206 + krb5_mk_req = heimdal._krb5_mk_req@32 @207 + krb5_mk_req_extended = heimdal._krb5_mk_req_extended@24 @208 + krb5_mk_safe = heimdal._krb5_mk_safe@20 @209 + krb5_parse_name = heimdal._krb5_parse_name@12 @211 + krb5_principal_compare = heimdal._krb5_principal_compare@12 @213 + krb5_prompter_posix = heimdal._krb5_prompter_posix@24 @215 + krb5_rc_close = heimdal._krb5_rc_close@8 @217 + krb5_rd_cred = heimdal._krb5_rd_cred@20 @218 + krb5_rd_error = heimdal._krb5_rd_error@12 @219 + krb5_rd_priv = heimdal._krb5_rd_priv@20 @220 + krb5_rd_rep = heimdal._krb5_rd_rep@16 @221 + krb5_rd_req = heimdal._krb5_rd_req@28 @222 + krb5_rd_safe = heimdal._krb5_rd_safe@20 @223 + krb5_realm_compare = heimdal._krb5_realm_compare@12 @225 + krb5_recvauth = heimdal._krb5_recvauth@32 @226 + krb5_salttype_to_string = _SHIM_krb5_salttype_to_string@12 @228 + krb5_sendauth = heimdal._krb5_sendauth@52 @229 + krb5_set_default_realm = heimdal._krb5_set_default_realm@8 @240 + krb5_set_error_message = heimdal.krb5_set_error_message @242 + krb5_set_password = heimdal._krb5_set_password@28 @243 + krb5_set_password_using_ccache = heimdal._krb5_set_password_using_ccache@28 @244 + krb5_set_real_time = heimdal._krb5_set_real_time@12 @246 + krb5_sname_to_principal = heimdal._krb5_sname_to_principal@20 @248 + krb5_string_to_deltat = heimdal._krb5_string_to_deltat@8 @250 + krb5_string_to_enctype = _SHIM_krb5_string_to_enctype@8 @251 + krb5_string_to_key = heimdal._krb5_string_to_key@20 @252 + krb5_string_to_salttype = _SHIM_krb5_string_to_salttype@8 @253 + krb5_timeofday = heimdal._krb5_timeofday@8 @255 + krb5_unparse_name = heimdal._krb5_unparse_name@12 @258 + krb5_us_timeofday = heimdal._krb5_us_timeofday@12 @260 + krb5_verify_checksum = _SHIM_krb5_verify_checksum@28 @262 + krb5_verify_init_creds = heimdal._krb5_verify_init_creds@24 @263 + krb5_verify_init_creds_opt_init = heimdal._krb5_verify_init_creds_opt_init@4 @264 + krb5_verify_init_creds_opt_set_ap_req_nofail = heimdal._krb5_verify_init_creds_opt_set_ap_req_nofail@8 @265 + krb5_vset_error_message = heimdal._krb5_vset_error_message@16 @266 diff --git a/packages/windows/kfw_shim/krb5_64.def b/packages/windows/kfw_shim/krb5_64.def new file mode 100644 index 000000000..2adfac008 --- /dev/null +++ b/packages/windows/kfw_shim/krb5_64.def @@ -0,0 +1,175 @@ +EXPORTS + krb5_address_compare = heimdal.krb5_address_compare @13 + krb5_address_order = heimdal.krb5_address_order @14 + krb5_address_search = SHIM_krb5_address_search @15 + krb5_aname_to_localname = heimdal.krb5_aname_to_localname @16 + krb5_appdefault_boolean = heimdal.krb5_appdefault_boolean @17 + krb5_appdefault_string = heimdal.krb5_appdefault_string @18 + krb5_auth_con_free = heimdal.krb5_auth_con_free @19 + krb5_auth_con_genaddrs = heimdal.krb5_auth_con_genaddrs @20 + krb5_auth_con_getaddrs = heimdal.krb5_auth_con_getaddrs @21 + krb5_auth_con_getauthenticator = heimdal.krb5_auth_con_getauthenticator @22 + krb5_auth_con_getflags = heimdal.krb5_auth_con_getflags @24 + krb5_auth_con_getkey = heimdal.krb5_auth_con_getkey @25 + krb5_auth_con_getlocalseqnumber = heimdal.krb5_auth_con_getlocalseqnumber @26 + krb5_auth_con_getlocalsubkey = heimdal.krb5_auth_con_getlocalsubkey @27 + krb5_auth_con_getrcache = SHIM_krb5_auth_con_getrcache @28 + krb5_auth_con_getremoteseqnumber = heimdal.krb5_auth_con_getremoteseqnumber @30 + krb5_auth_con_getremotesubkey = heimdal.krb5_auth_con_getremotesubkey @31 + krb5_auth_con_init = heimdal.krb5_auth_con_init @33 + krb5_auth_con_setaddrs = SHIM_krb5_auth_con_setaddrs @37 + krb5_auth_con_setflags = heimdal.krb5_auth_con_setflags @38 + krb5_auth_con_setrcache = heimdal.krb5_auth_con_setrcache @40 + krb5_build_principal = heimdal.krb5_build_principal @44 + krb5_build_principal_ext = heimdal.krb5_build_principal_ext @45 + krb5_build_principal_va = heimdal.krb5_build_principal_va @46 + krb5_c_block_size = heimdal.krb5_c_block_size @47 + krb5_c_checksum_length = heimdal.krb5_c_checksum_length @48 + krb5_c_decrypt = SHIM_krb5_c_decrypt @49 + krb5_c_encrypt = heimdal.krb5_c_encrypt @50 + krb5_c_encrypt_length = heimdal.krb5_c_encrypt_length @51 + krb5_c_enctype_compare = heimdal.krb5_c_enctype_compare @52 + krb5_c_is_coll_proof_cksum = heimdal.krb5_c_is_coll_proof_cksum @53 + krb5_c_is_keyed_cksum = heimdal.krb5_c_is_keyed_cksum @54 + krb5_c_make_checksum = heimdal.krb5_c_make_checksum @56 + krb5_c_make_random_key = heimdal.krb5_c_make_random_key @57 + krb5_c_prf = heimdal.krb5_c_prf @58 + krb5_c_prf_length = heimdal.krb5_c_prf_length @59 + krb5_c_valid_cksumtype = heimdal.krb5_c_valid_cksumtype @64 + krb5_c_valid_enctype = heimdal.krb5_c_valid_enctype @65 + krb5_c_verify_checksum = heimdal.krb5_c_verify_checksum @66 + krb5_cc_close = heimdal.krb5_cc_close @68 + krb5_cc_copy_creds = heimdal.krb5_cc_copy_creds @69 + krb5_cc_default = heimdal.krb5_cc_default @70 + krb5_cc_default_name = heimdal.krb5_cc_default_name @71 + krb5_cc_destroy = heimdal.krb5_cc_destroy @72 + krb5_cc_end_seq_get = heimdal.krb5_cc_end_seq_get @73 + krb5_cc_gen_new = SHIM_krb5_cc_gen_new @74 + krb5_cc_get_name = heimdal.krb5_cc_get_name @75 + krb5_cc_get_principal = heimdal.krb5_cc_get_principal @76 + krb5_cc_get_type = heimdal.krb5_cc_get_type @77 + krb5_cc_initialize = heimdal.krb5_cc_initialize @78 + krb5_cc_new_unique = heimdal.krb5_cc_new_unique @79 + krb5_cc_next_cred = heimdal.krb5_cc_next_cred @80 + krb5_cc_remove_cred = heimdal.krb5_cc_remove_cred @81 + krb5_cc_resolve = heimdal.krb5_cc_resolve @82 + krb5_cc_retrieve_cred = heimdal.krb5_cc_retrieve_cred @83 + krb5_cc_set_default_name = heimdal.krb5_cc_set_default_name @84 + krb5_cc_set_flags = heimdal.krb5_cc_set_flags @85 + krb5_cc_start_seq_get = heimdal.krb5_cc_start_seq_get @86 + krb5_cc_store_cred = heimdal.krb5_cc_store_cred @87 + krb5_cccol_cursor_free = heimdal.krb5_cccol_cursor_free @88 + krb5_cccol_cursor_new = heimdal.krb5_cccol_cursor_new @89 + krb5_cccol_cursor_next = heimdal.krb5_cccol_cursor_next @90 + krb5_change_password = heimdal.krb5_change_password @91 + krb5_clear_error_message = heimdal.krb5_clear_error_message @94 + krb5_copy_addresses = heimdal.krb5_copy_addresses @95 + krb5_copy_checksum = heimdal.krb5_copy_checksum @98 + krb5_copy_creds = heimdal.krb5_copy_creds @100 + krb5_copy_data = heimdal.krb5_copy_data @101 + krb5_copy_keyblock = heimdal.krb5_copy_keyblock @102 + krb5_copy_keyblock_contents = heimdal.krb5_copy_keyblock_contents @103 + krb5_copy_principal = heimdal.krb5_copy_principal @104 + krb5_copy_ticket = heimdal.krb5_copy_ticket @105 + krb5_decrypt = heimdal.krb5_decrypt @107 + krb5_encrypt = heimdal.krb5_encrypt @111 + krb5_enctype_to_string = heimdal.krb5_enctype_to_string @113 + krb5_free_addresses = heimdal.krb5_free_addresses @117 + krb5_free_ap_rep_enc_part = heimdal.krb5_free_ap_rep_enc_part @118 + krb5_free_authenticator = heimdal.krb5_free_authenticator @121 + krb5_free_checksum = heimdal.krb5_free_checksum @122 + krb5_free_checksum_contents = heimdal.krb5_free_checksum_contents @123 + krb5_free_config_files = heimdal.krb5_free_config_files @125 + krb5_free_context = heimdal.krb5_free_context @126 + krb5_free_cred_contents = heimdal.krb5_free_cred_contents @127 + krb5_free_creds = heimdal.krb5_free_creds @128 + krb5_free_data = heimdal.krb5_free_data @129 + krb5_free_data_contents = heimdal.krb5_free_data_contents @130 + krb5_free_error = heimdal.krb5_free_error @133 + krb5_free_error_message = heimdal.krb5_free_error_message @134 + krb5_free_host_realm = heimdal.krb5_free_host_realm @135 + krb5_free_keyblock = heimdal.krb5_free_keyblock @136 + krb5_free_keyblock_contents = heimdal.krb5_free_keyblock_contents @137 + krb5_free_principal = heimdal.krb5_free_principal @140 + krb5_free_ticket = heimdal.krb5_free_ticket @142 + krb5_free_unparsed_name = heimdal.krb5_free_unparsed_name @143 + krb5_fwd_tgt_creds = heimdal.krb5_fwd_tgt_creds @144 + krb5_get_credentials = heimdal.krb5_get_credentials @145 + krb5_get_default_config_files = heimdal.krb5_get_default_config_files @148 + krb5_get_default_realm = heimdal.krb5_get_default_realm @149 + krb5_get_error_message = heimdal.krb5_get_error_message @150 + krb5_get_host_realm = heimdal.krb5_get_host_realm @151 + krb5_get_in_tkt = heimdal.krb5_get_in_tkt @152 + krb5_get_in_tkt_with_keytab = heimdal.krb5_get_in_tkt_with_keytab @153 + krb5_get_in_tkt_with_password = heimdal.krb5_get_in_tkt_with_password @154 + krb5_get_in_tkt_with_skey = heimdal.krb5_get_in_tkt_with_skey @155 + krb5_get_init_creds_keytab = heimdal.krb5_get_init_creds_keytab @156 + krb5_get_init_creds_opt_alloc = heimdal.krb5_get_init_creds_opt_alloc @157 + krb5_get_init_creds_opt_free = heimdal.krb5_get_init_creds_opt_free @158 + krb5_get_init_creds_opt_init = heimdal.krb5_get_init_creds_opt_init @161 + krb5_get_init_creds_opt_set_address_list = heimdal.krb5_get_init_creds_opt_set_address_list @162 + krb5_get_init_creds_opt_set_etype_list = heimdal.krb5_get_init_creds_opt_set_etype_list @164 + krb5_get_init_creds_opt_set_forwardable = heimdal.krb5_get_init_creds_opt_set_forwardable @165 + krb5_get_init_creds_opt_set_preauth_list = heimdal.krb5_get_init_creds_opt_set_preauth_list @167 + krb5_get_init_creds_opt_set_proxiable = heimdal.krb5_get_init_creds_opt_set_proxiable @168 + krb5_get_init_creds_opt_set_renew_life = heimdal.krb5_get_init_creds_opt_set_renew_life @169 + krb5_get_init_creds_opt_set_salt = heimdal.krb5_get_init_creds_opt_set_salt @170 + krb5_get_init_creds_opt_set_tkt_life = heimdal.krb5_get_init_creds_opt_set_tkt_life @171 + krb5_get_init_creds_password = heimdal.krb5_get_init_creds_password @172 + krb5_get_renewed_creds = heimdal.krb5_get_renewed_creds @175 + krb5_get_server_rcache = heimdal.krb5_get_server_rcache @176 + krb5_init_context = heimdal.krb5_init_context @180 + krb5_is_thread_safe = heimdal.krb5_is_thread_safe @186 + krb5_kt_add_entry = heimdal.krb5_kt_add_entry @187 + krb5_kt_close = heimdal.krb5_kt_close @188 + krb5_kt_default = heimdal.krb5_kt_default @189 + krb5_kt_default_name = heimdal.krb5_kt_default_name @190 + krb5_kt_end_seq_get = heimdal.krb5_kt_end_seq_get @191 + krb5_kt_free_entry = heimdal.krb5_kt_free_entry @192 + krb5_kt_get_entry = heimdal.krb5_kt_get_entry @193 + krb5_kt_get_name = heimdal.krb5_kt_get_name @194 + krb5_kt_get_type = SHIM_krb5_kt_get_type @195 + krb5_kt_next_entry = heimdal.krb5_kt_next_entry @196 + krb5_kt_read_service_key = heimdal.krb5_kt_read_service_key @197 + krb5_kt_remove_entry = heimdal.krb5_kt_remove_entry @198 + krb5_kt_resolve = heimdal.krb5_kt_resolve @199 + krb5_kt_start_seq_get = heimdal.krb5_kt_start_seq_get @200 + krb5_kuserok = heimdal.krb5_kuserok @201 + krb5_mk_error = SHIM_krb5_mk_error @203 + krb5_mk_priv = heimdal.krb5_mk_priv @205 + krb5_mk_rep = heimdal.krb5_mk_rep @206 + krb5_mk_req = heimdal.krb5_mk_req @207 + krb5_mk_req_extended = heimdal.krb5_mk_req_extended @208 + krb5_mk_safe = heimdal.krb5_mk_safe @209 + krb5_parse_name = heimdal.krb5_parse_name @211 + krb5_principal_compare = heimdal.krb5_principal_compare @213 + krb5_prompter_posix = heimdal.krb5_prompter_posix @215 + krb5_rc_close = heimdal.krb5_rc_close @217 + krb5_rd_cred = heimdal.krb5_rd_cred @218 + krb5_rd_error = heimdal.krb5_rd_error @219 + krb5_rd_priv = heimdal.krb5_rd_priv @220 + krb5_rd_rep = heimdal.krb5_rd_rep @221 + krb5_rd_req = heimdal.krb5_rd_req @222 + krb5_rd_safe = heimdal.krb5_rd_safe @223 + krb5_realm_compare = heimdal.krb5_realm_compare @225 + krb5_recvauth = heimdal.krb5_recvauth @226 + krb5_salttype_to_string = SHIM_krb5_salttype_to_string @228 + krb5_sendauth = heimdal.krb5_sendauth @229 + krb5_set_default_realm = heimdal.krb5_set_default_realm @240 + krb5_set_error_message = heimdal.krb5_set_error_message @242 + krb5_set_password = heimdal.krb5_set_password @243 + krb5_set_password_using_ccache = heimdal.krb5_set_password_using_ccache @244 + krb5_set_real_time = heimdal.krb5_set_real_time @246 + krb5_sname_to_principal = heimdal.krb5_sname_to_principal @248 + krb5_string_to_deltat = heimdal.krb5_string_to_deltat @250 + krb5_string_to_enctype = SHIM_krb5_string_to_enctype @251 + krb5_string_to_key = heimdal.krb5_string_to_key @252 + krb5_string_to_salttype = SHIM_krb5_string_to_salttype @253 + krb5_timeofday = heimdal.krb5_timeofday @255 + krb5_unparse_name = heimdal.krb5_unparse_name @258 + krb5_us_timeofday = heimdal.krb5_us_timeofday @260 + krb5_verify_checksum = SHIM_krb5_verify_checksum @262 + krb5_verify_init_creds = heimdal.krb5_verify_init_creds @263 + krb5_verify_init_creds_opt_init = heimdal.krb5_verify_init_creds_opt_init @264 + krb5_verify_init_creds_opt_set_ap_req_nofail = heimdal.krb5_verify_init_creds_opt_set_ap_req_nofail @265 + krb5_vset_error_message = heimdal.krb5_vset_error_message @266 diff --git a/packages/windows/kfw_shim/krb5_shim.c b/packages/windows/kfw_shim/krb5_shim.c new file mode 100644 index 000000000..ebe568b1c --- /dev/null +++ b/packages/windows/kfw_shim/krb5_shim.c @@ -0,0 +1,88 @@ +#include +#include + +krb5_boolean __cdecl +SHIM_krb5_address_search(krb5_context context, + const krb5_address *addr, + const krb5_address *const *addrlist) +{ + if (!addrlist) + return TRUE; + for (; *addrlist; addrlist++) { + if (krb5_address_compare(context, addr, *addrlist)) + return TRUE; + } + return FALSE; +} + + +krb5_error_code __cdecl +SHIM_krb5_auth_con_getrcache(krb5_context context, + krb5_auth_context auth_context, + krb5_rcache *rcache) +{ + return krb5_auth_con_getrcache(context, auth_context, rcache); +} + +krb5_error_code __cdecl +SHIM_krb5_auth_con_setaddrs(krb5_context context, + krb5_auth_context auth_context, + krb5_address *local_addr, + krb5_address *remote_addr) +{ + return krb5_auth_con_setaddrs(context, auth_context, + local_addr, remote_addr); +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_cc_gen_new (krb5_context context, krb5_ccache *cache) +{ + return (*cache)->ops->gen_new(context, cache); +} + +const char * KRB5_CALLCONV +SHIM_krb5_kt_get_type(krb5_context context, krb5_keytab keytab) +{ + return keytab->prefix; +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_mk_error(krb5_context context, const void *dec_err, void *enc_err) +{ + return -1; +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_salttype_to_string(int salttype, char *buffer, size_t buflen) +{ + return -1; +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_string_to_enctype(char *string, krb5_enctype *enctypep) +{ + return -1; +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_string_to_salttype(char *string, int *salttypep) +{ + return -1; +} + +krb5_error_code KRB5_CALLCONV +SHIM_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) +{ + return -1; +} + +krb5_error_code KRB5_CALLCONV +SHIM_krb5_c_decrypt(krb5_context context, const krb5_keyblock *key, + krb5_keyusage usage, const krb5_data *ivec, + krb5_enc_data *input, krb5_data *output) +{ + return krb5_c_decrypt(context, *key, usage, ivec, input, output); +}