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.
This commit is contained in:
Asanka Herath
2010-07-14 01:31:03 -04:00
parent c111770aed
commit 8793628306
10 changed files with 744 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,27 @@
#include<config.h>
#include<stdlib.h>
#include<com_err.h>
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();
}

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,4 @@
int dummy(void)
{
return 0;
}

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,88 @@
#include<stdlib.h>
#include<krb5.h>
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);
}