Ken Raeburn [Wed, 12 Mar 2003 04:33:30 +0000 (04:33 +0000)]
Rewrite asn1_get_tag interface to use a structure pointer rather than several
pointer variables for the returned data. Use the structure in the caller when
straightforward; in cases where macros use different but overlapping sets of
automatic scalar variables in one file, copy the values out of the structures
for now, until they can be analyzed more carefully.
* asn1_get.c (asn1_get_tag): Deleted.
(asn1_get_tag_2): Renamed from asn1_get_tag_indef, now uses a pointer to
taginfo rather than a bunch of pointer args.
(asn1_get_id, asn1_get_length): Folded into asn1_get_tag_2.
(asn1_get_sequence): Call asn1_get_tag_2.
* asn1_get.h (taginfo): New structure.
(asn1_get_tag_indef, asn1_get_tag, asn1_get_id, asn1_get_length): Declarations
deleted.
(asn1_get_tag_2): Declare.
* asn1_decode.c (setup): Declare only a taginfo variable.
(asn1class, construction, tagnum, length): New macros.
(tag): Call asn1_get_tag_2.
* asn1_k_decode.c (next_tag, get_eoc, apptag, end_sequence_of,
end_sequence_of_no_tagvars, asn1_decode_krb5_flags): Call asn1_get_tag_2; if no
error, copy out values into scalar variables.
(asn1_decode_ticket): Call asn1_get_tag_2.
* asn1buf.c (asn1buf_skiptail): Call asn1_get_tag_2.
* krb5_decode.c (check_apptag, next_tag, get_eoc): Call asn1_get_tag_2; if no
error, copy out values into scalar variables.
(decode_krb5_enc_kdc_rep_part): Call asn1_get_tag_2.
Ken Raeburn [Sat, 8 Mar 2003 20:50:54 +0000 (20:50 +0000)]
Yet another attempt at cross-directory dependencies. Seems to fix the parallel
build, and hasn't broken the out-of-date case so far as I can tell, so far...
Added a bunch of comments describing the cases that need to be handled.
* Makefile.in ($(BUILDTOP)/include/gssapi/gssapi.h, generic/gssapi.h,
generic/gssapi_err_generic.h, krb5/gssapi_err_krb5.h): Comment out old rules
and dependencies; depend on all-recurse and supply a no-op rule.
* c_ustime.c: Removed Mac OS 9 code. * ccdefname.c: Conditionalize on USE_CCAPI and not TARGET_OS_MAC so Darwin builds work. * init_os_ctx.c: Modified to use DEFAULT_SECURE_PROFILE_PATH and DEFAULT_PROFILE_PATH for KfM homedir-relative config files. * read_pwd.c: Cast to remove const warnings. * timeofday.c: Do the same thing on the Mac as on Unix
* CCache-glue.c: Added prototypes for deprecated functions. Made internal functions static. Removed unused CoreServices include. Changed TICKET_GRANTING_TICKET to new macro: KRB_TICKET_GRANTING_TICKET. * change_password.c: Added check of inputs to krb_change_password so we don't crash on bad inputs. Call des_string_to_key not mit_password_to_key on all platforms because we don't want to prompt for a password. * FSp-glue.c: Added prototypes for deprecated functions. Changed to use KfM's FSSpecToPOSIXPath which correctly handles FSSpecs where the file does not exist. * g_in_tkt.c: Added explanatory comments. Made TARGET_OS_MAC sections a little smaller and easier to read. * g_pw_in_tkt.c: Only prompt when we are not using the login library. This is so that Darwin builds do prompt but KfM builds don't. * g_svc_in_tkt.c, g_tkt_svc.c: Changed to use KRB_TICKET_GRANTING_TICKET. * kadm_net.c: Use autoconf variable krb5_sigtype instead of sigtype, which doesn't seem to be defined on Mac OS X. * krb4int.h, RealmsConfig-glue.c: Removed krb_get_stk(). * rd_req.c: Added #ifdef KRB4_USE_KEYTAB to avoid unused variable warning when KRB4_USE_KEYTAB is not defined. * sendauth.c: Fixed warnings with casts
* disp_com_err_status.c, gssapi_generic.h: Removed Mac header goober. * gssapiP_generic.h, gssapi.hin: Removed macintosh check because we don't build on OS 9 anymore. * gssapi.hin: Removed enumsalwaysint because there are no typed enums in this header. Removed duplicate CFM-68K magic
* gss_libinit.c: Removed Mac header goober. Fixed USE_HARDCODED_FALLBACK_ERROR_TABLES macro used by KfM. * gss_libinit.h: do not use the same multiple include protection macro as krb5_libinit.h. Changed to GSSAPI_LIBINIT_H
* mac_des_glue.c, des.c, enc_dec.c, key_sched.c, str_to_key.c: Move KfM des functions into their own file. They are all deprecated on KfM and shouldn't even get built on stock krb5 builds. * read_passwd.c: Added warning comment that des_read_pw_string is an exported function on KfM, so we should not change its ABI
* krb5.h: Removed enumsalwaysint because there are no typed enums in this header. * k5-int.h: Removed Mac OS header goober. Added prototype for os_get_default_config_files which will be used by KfM's preference APIs (KFM needs to get the secure default files as well as the normal ones). Moved profile.h inclusion higher so it gets included before this function and thus its types are defined (the reason I put it where I did was there is another config file function next to it)
* osconf.h: Added DEFAULT_SECURE_PROFILE_PATH so that KfM will only search paths that start with ~/ (homedir-based) when getting an insecure context. This is the same as DEFAULT_PROFILE_PATH on all other platforms, which allows us to avoid more references to TARGET_OS_MAC in krb5 sources
* des.h, krb.h: Removed deprecated KfM functions. They will be exported but not in the headers to discourage new callers. Removed enumsalwaysint because there are no typed enums in this header. * des.h: Made afs_string_to_key public on all platforms. (OpenAFS folk think this is okay.) * krb.h, prot.h: Made KRB_TICKET_GRANTING_TICKET public and removed non-public TICKET_GRANTING_TICKET because this macro is used in lots of places by KfM, including some clients. Made krb__get_srvtabname non-private because it is used by KEYFILE. * kadm.h: moved definition of MAXHOSTNAMELEN below the inclusion of other headers so that if it gets defined by those other headers or headers they include, we don't get a redefinition error (this happens on Mac OS X)
* cnv_tkt_skey.c, conv_creds.c, conv_princ.c, encode.c, sendmsg.c: Removed Mac-specific includes. * conv_creds.c: If we are on the Mac and using the CCAPI, set the string_to_key type to MIT. * krb524.h: Removed enumsalwaysint because there are no enums in this header. Also include krb524_err with <> because on Mac OS X both are public headers and should not be included with "". * Makefile.in: set KRB524_PRIVATE while building so that Darwin builds see these prototypes. Otherwise the Darwin build will fail
The prefix file for KfM 5.0. This file has all the #defines for Mac OS X which are normally specified by -Dfoo on the command line by the krb5 build system. Since KfM uses Project Builder, we specify them here
* profile.hin, prof_file.c (profile_flush_file_data): Stop copying the resource fork. We stopped writing resources to the krb5 configuration in KfM 4.5.x. In KfM 5.0 will no longer read preferences from the resource fork so we can destroy it on copy. * prof-int.h: No longer include MoreFiles. Removed framework style includes for Kerberos headers. * prof_FSp_glue.c, prof_init.c, profile.hin: Moved Mac FSSpec-based functions into a separate file so they will only be built with KfM. These functions will be exported but not in the headers because they are deprecated
* com_err.c, com_err.h, error_message.c, et_c.awk, et_h.awk: Removed Mac OS 9-specific code. * et_h.awk: define compat macro for init_foo_err_table so that it gets defined to nothing on the Mac
Tom Yu [Thu, 6 Mar 2003 01:36:51 +0000 (01:36 +0000)]
* acquire_cred.c (krb5_gss_register_acceptor_identity): New
function. Allows global override of default keytab for
gss_acquire_cred() purposes.
(acquire_accept_cred): Implement override.
Ken Raeburn [Wed, 5 Mar 2003 03:03:04 +0000 (03:03 +0000)]
Clean up PBKDF2 interface. Add s2k-params to string-to-key interface, except
no new decl in krb5.h yet; rename changed s2k functions to use krb5int_ prefix.
Add AES to etype table. Delete some unused declarations.
Ken Raeburn [Wed, 5 Mar 2003 01:20:50 +0000 (01:20 +0000)]
* compat_recv.c: Only include krb.h if KRB5_KRB4_COMPAT.
(krb_v4_recvauth, krb5_compat_recvauth, krb5_compat_recvauth_version): Define
only if KRB5_KRB4_COMPAT.
* krlogind.c: Include krb.h only if KRB5_KRB4_COMPAT.
(v4_kdata, v4_schedule): Define only if KRB5_KRB4_COMPAT.
(recvauth) [!KRB5_KRB4_COMPAT]: Skip v4 stuff and call krb5_recvauth_version.
Sam Hartman [Tue, 4 Mar 2003 20:45:32 +0000 (20:45 +0000)]
GSS_C_NO_CREDENTIAL should accept any principal
If a context is accepted with GSS_C_NO_CREDENTIAL or if a credential
is acquired with GSS_C_NO_NAME as the acceptor name then allow any
principal in the keytab to be used as the acceptor name.
This means that gss_inquire_cred can return GSS_C_NO_NAME from a
credential.
ticket: new
Tags: enhancement
cc: nicolas.williams@sun.com
cc: krbdev@mit.edu
Ken Raeburn [Mon, 3 Mar 2003 22:00:30 +0000 (22:00 +0000)]
* pbkdf2.c (F): Now takes krb5_data for password and salt.
(krb5int_pbkdf2, krb5int_pbkdf2_hmac_sha1, krb5int_pbkdf2_hmac_sha1_128,
krb5int_pbkdf2_hmac_sha1_256): Likewise, and for output also.
* vectors.c (test_pbkdf2): Calls updated.
(main): Run pbkdf2 tests.
Tom Yu [Mon, 3 Mar 2003 07:09:46 +0000 (07:09 +0000)]
Remove ADD_DEF and uses thereof, and move the appropriate symbols to
AC_DEFINE'ed things or to Makefile.in files. Remove explicit settings
of CPPFLAGS. These allow CPPFLAGS to be a user parameter. Also, add
CFLAGS to the CC_LINK variables, so they can control usage of the
compiler to link programs.
Sam Hartman [Sun, 2 Mar 2003 21:40:49 +0000 (21:40 +0000)]
Use com_err_deplib rather than an explicit path so we do not have our
shared libraries depend at a make level on com_err if we use the
system com_err library.
Tom Yu [Sat, 1 Mar 2003 22:15:22 +0000 (22:15 +0000)]
There isn't really a point to validating cred_handle if it was just
acquired by acquire_cred(), so instead of the suggested patch,
validate verifier_cred_handle only if we didn't acquire_cred().
* accept_sec_context.c (krb5_gss_accept_sec_context): Don't
validate verifier_cred_handle if GSS_C_NO_CREDENTIAL is passed in.
Tom Yu [Tue, 25 Feb 2003 23:14:40 +0000 (23:14 +0000)]
Handle NULL result_string->data returned from error in
krb5_change_password(). The SAMDATA() macro in
lib/krb5/krb/preauth2.c seems to already be fixed.
KfM's kpasswd equivalent still needs to be dealt with.
Ken Raeburn [Thu, 13 Feb 2003 02:44:16 +0000 (02:44 +0000)]
* Makefile.in (krb_err.h, kadm_err.h): Rebuild by going to lib/krb4 and
building "includes".
(clean-unix): Don't need to delete copies of .et files any more.
Tom Yu [Wed, 12 Feb 2003 16:20:00 +0000 (16:20 +0000)]
* Makefile.in: Update dependencies.
(KRB_ERR_TXT): Set by configure to be either empty
(on Darwin) or krb_err_txt.c (on other platforms). This avoids
building krb_err_txt.c on Darwin, as the type of krb_err_txt is a
pointer there, so we don't need another copy of the array.
(DEFINES): Remove. It wasn't doing anything useful and was
cluttering up the compile command line.
* configure.in: On Darwin, don't use krb_err_txt.c.
* err_txt.c: On Darwin, actually use the array generated by
compile_et, and assign it to krb_err_txt, which is a pointer, not
an array, on that platform.
Tom Yu [Tue, 11 Feb 2003 19:50:18 +0000 (19:50 +0000)]
* CCache-glue.c (krb_in_tkt): Rename from in_tkt().
(in_tkt): Implement in terms of krb_in_tkt() to match existing
Unix and Windows API. This shouldn't be a problem because it
appears to be considered an internal API on Mac.
Tom Yu [Tue, 11 Feb 2003 05:13:49 +0000 (05:13 +0000)]
* Makefile.in: Another attempt... turns our that the "copy"
command on Windows preserves modtimes, so spurious rebuilds were
happening even with the stamp file, since the target in $(EHDRDIR)
is always out of date with respect to the stamp file.
Tom Yu [Tue, 11 Feb 2003 03:08:21 +0000 (03:08 +0000)]
* password_to_key.c (krb5_passwd_to_key): Replace snprintf() call
with explicit length checking.
* memcache.c (krb4int_save_credentials_addr): Renamed from
krb_save_credentials().
(krb_save_credentials): Implement in terms of
krb4int_save_credentials_addr().