pull up r19864 from trunk
authorTom Yu <tlyu@mit.edu>
Fri, 28 Sep 2007 23:38:39 +0000 (23:38 +0000)
committerTom Yu <tlyu@mit.edu>
Fri, 28 Sep 2007 23:38:39 +0000 (23:38 +0000)
 r19864@cathode-dark-space:  jaltman | 2007-08-24 10:45:37 -0400
 ticket: new
 subject: NIM: Add Identity Provider Pre-Process Message
 component: windows

 The Network Identity Manager application does not provide a user
 interface for identity specification.  That responsibility lies with
 the identity provider.  Whenever a dialog needs to allow the user to
 specify an identity, the identity provider has to populate the dialog
 with the necessary controls so that the user can specify an identity.
 In the case of the Kerberos v5 identity provider, the controls allow
 the user to specify a username and a realm.

 Once the dialog is populated, the application will dispatch window
 messages to the identity provider.  The identity provider will handle
 the window messages and notify the application when the selected
 identity changes.

 One deficiency of the API was that there was no message to notify the
 identity provider that an identity selection has to be made
 immediately.  When the user invokes the default action for a dialog by
 hitting enter, the only message received by the dialog is a command
 identifier of the default action.  In this case, the identity provider
 will not get a chance to notify the application of the identity
 selection.

 This patch fixes the API deficiency by introducing a new message,
 WMNC_IDENT_PREPROCESS, which the application can use to notify the
 identity provider that the dialog box is about to be processed.  In
 response, the identity provider can notify the application of the
 selected identity even if no other messages were received by the
 identity provider.

ticket: 5685
version_fixed: 1.6.3

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@19999 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/identity/apiversion.txt
src/windows/identity/plugins/krb5/krb5identpro.c
src/windows/identity/ui/cfg_identities_wnd.c
src/windows/identity/uilib/khnewcred.h

index 5ca2ccba00433e487e9829e28caa7c785bfb2602..5f07d46f2be75a76354826e78a5ebff9b307f5be 100644 (file)
-# Copyright (c) 2004 Massachusetts Institute of Technology\r
-# Copyright (c) 2007 Secure Endpoints Inc.\r
-#\r
-# Permission is hereby granted, free of charge, to any person\r
-# obtaining a copy of this software and associated documentation files\r
-# (the "Software"), to deal in the Software without restriction,\r
-# including without limitation the rights to use, copy, modify, merge,\r
-# publish, distribute, sublicense, and/or sell copies of the Software,\r
-# and to permit persons to whom the Software is furnished to do so,\r
-# subject to the following conditions:\r
-#\r
-# The above copyright notice and this permission notice shall be\r
-# included in all copies or substantial portions of the Software.\r
-#\r
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
-# SOFTWARE.\r
-\r
-\r
-# This file documents the versions of the API for NetIDMgr.  The\r
-# syntax of the file is:\r
-#\r
-# Version=<api-version number>\r
-# AppVersion=<netidmgr-version>\r
-# Date=<release date> | NOTRELEASED\r
-# # <comments>\r
-# <symbol-name>\r
-# # comment\r
-# Schema:<path-to-schema>\r
-# # comment\r
-\r
-\r
-#----------------------------------------------------------------\r
-Version=1\r
-AppVersion=0.1.0.0\r
-Date=NOTRELEASED\r
-# Original Khimaira API.\r
-\r
-#----------------------------------------------------------------\r
-Version=2\r
-AppVersion=0.1.1.0\r
-Date=Nov 01, 2005\r
-# Alpha 1 release of NetIDMgr, along with KFW 3.0.0 beta\r
-\r
-#----------------------------------------------------------------\r
-Version=3\r
-AppVersion=0.1.2.0\r
-Date=Nov 30, 2005\r
-# Alpha 2 release of NetIDMgr, along with KFW 3.0.0 beta 2\r
-\r
-#----------------------------------------------------------------\r
-Version=4\r
-AppVersion=1.0.0.0\r
-Date=Dec 05, 2005\r
-# Released with KfW 3.0.0\r
-\r
-#----------------------------------------------------------------\r
-Version=5\r
-AppVersion=1.1.0.0\r
-Date=(TBD)\r
-# Released with KFW 3.1.0\r
-\r
-+khui_alert_show_modal(),KMSG_ALERT_SHOW_MODAL, KHUI_ALERT_FLAG_MODAL\r
-# Support for modal alert boxes\r
-\r
-+KHUI_PACTION_YES, KHUI_PACTION_NO, KHUI_PACTION_YESALL, KHUI_PACTION_NOALL, KHUI_PACTION_KEEP, KHUI_PACTION_REMOVE, KHUI_PACTION_DISCARD\r
-# Additional pseudo actions\r
-\r
-!tag_khui_action, khui_action\r
-# Membership extension for supporting custom actions.  Type changes\r
-# from 'int' to khm_int32.\r
-\r
-+khui_action_create(), khui_action_get_data(), khui_action_delete()\r
-# Support for creating custom actions\r
-\r
-!kmq_msg_subscription, tag_kmq_msg_subscription\r
-# Add 'magic' field.\r
-\r
-+KHUI_MENU_NONE\r
-# New identifier for unspecified menu commands.\r
-\r
-+khui_menu_insert_action(), khui_menu_get_action(), khui_menu_get_size(), khui_menu_remove_action()\r
-# Functions for manipulating custom menus\r
-\r
-+khui_menu_insert_paction()\r
-# Exported, but not exposed as an API.  For inserting actions by\r
-# reference in to menus.\r
-\r
--khui_menu_add_action(), khui_menu_add_paction()\r
-# Removed deprecated functions.  Temporarily provided as macros. The\r
-# replacements are khui_menu_insert_action() and\r
-# khui_menu_insert_paction() respectively.\r
-\r
-+kmq_create_hwnd_subscription()\r
-# Ad-hoc subscriptions can now be obtained for Win32 windows.\r
-\r
--khui_create_gloabl_accel_table()\r
-# Exported but no longer exposed.\r
-\r
--khui_action_list_length()\r
-# Exported but no longer exposed.\r
-\r
-+kmm_enable_plugin()\r
-# New API for enabling or disabling plugins\r
-\r
-!kmm_plugin_info\r
-# Added 'flags' field.\r
-\r
-+KCDB_ATTR_FLAG_TRANSIENT\r
-# New flag for transient attributes.\r
-\r
-+kherr_get_prev_event(), kherr_get_last_event()\r
-# For more efficient traversal of the event lists for use by error context handlers.\r
-\r
-+KHERR_RF_COMMIT\r
-# Flag for error events to signal that the error event has been committed.\r
-\r
-+khui_action_trigger()\r
-# Function for triggerring an action.\r
-\r
-+khui_action_set_hwnd()\r
-# internal API.  Should not be used by anyone.  Basically sets the HWND that should receive event notifications from the UI library.\r
-\r
-+KEPT_PTR\r
-# error library data type for pointers\r
-\r
-+_cptr\r
-# type cast macro for pointer types\r
-\r
-!khc_open_space\r
-# name parameter is now a const string\r
-\r
-!KCDB_ATTRNAME_ISSUE\r
-# Fixed typo\r
-\r
-!kherr_val\r
-# is now an inline function instead of a macro\r
-\r
-!kherr_param\r
-# is now a structure instead of an integer type\r
-\r
-+KEPT_NONE\r
-# new constant signifying a NULL parameter\r
-\r
-!_int32, _uint32, _int64, _uint64, _cstr, _tstr, _cptr\r
-# appropriate typecasts added\r
-\r
-+vnull\r
-# macro to insert a NULL parameter\r
-\r
-!_report_cs0, _report_cs1, _report_cs2, _report_cs3\r
-!_report_sr0, _report_sr1, _report_sr2, _report_sr3\r
-!_report_mr0, _report_mr1, _report_mr2, _report_mr3\r
-!_report_ts0, _report_ts1, _report_ts2, _report_ts3\r
-# modified to use _vnull() instead of 0 for NULL parameters\r
-\r
-+KCONF_FLAG_WRITEIFMOD\r
-# new flag for khc_open_space() indicating that the specified handle should only write to a configuration space if the value read from the handle is different from the value being written\r
-\r
-+KCONF_FLAG_IFMODCI\r
-# indicates that the string comparison function used for KCONF_FLAG_WRITEIFMOD should be case insensitive.\r
-\r
-!khc_write_int32(), khc_write_int64(), khc_write_string(), khc_write_multi_string()\r
-# Change of behavior.  If the configuration handle has KCONF_FLAG_WRITEIFMOD flag set, only writes if the value being written to is different from the value being read.\r
-\r
-!khc_read_string(), khc_read_multi_string(), khc_read_int32(), khc_read_int64(), khc_read_binary(), khc_write_string(), khc_write_int32(), khc_write_int64(), khc_write_binary(), khc_get_type(), khc_value_exists(), khc_remove_value()\r
-# The value name parameter is now a constant pointer\r
-\r
-!khc_load_schema(), khc_unload_schema()\r
-# The schema pointer is now a constant pointer\r
-\r
--Schema:NetIDMgr\PluginManager\Modules\<module name>\Flags\r
--Schema:NetIDMgr\PluginManager\Plugins\<plugin name>\Flags\r
-# Deprecated.  Replaced by separate values for each of the bits in Flags.  This allows each setting to be deployed independently via GPO.\r
-\r
-+Schema:NetIDMgr\PluginManager\Modules\<module name>\Disabled\r
-+Schema:NetIDMgr\PluginManager\Plugins\<plugin name>\Disabled\r
-# If non-zero, the corresponding module or plug-in is disabled.\r
-\r
-!kcdb_identity_set_attrib(), kcdb_identity_get_attrib(), kcdb_identity_get_attrib_string()\r
-# Attribute name parameter is now a const pointer to a wchar_t string\r
-\r
-!kcdb_cred_create()\r
-# Name parameter is now a const pointer to a wchar_t string\r
-\r
-!kcdb_cred_set_attrib(), kcdb_cred_get_attrib()\r
-!kcdb_cred_get_attrib_string(), kcdb_creds_comp_attrib()\r
-# Attribute name parameter is now a const pointer to a wchar_t string\r
-\r
-!kcdb_type_get_id()\r
-# Name parameter is now a const pointer to a wchar_t string\r
-\r
-!kcdb_type_register()\r
-# type parameter is now a const pointer\r
-\r
-!kcdb_attrib_get_id()\r
-# Name parameter is now a const pointer\r
-\r
-!kcdb_attrib_register()\r
-# attrib parameter is now a const pointer\r
-\r
-!kcdb_credtype_register()\r
-# type parameter is now a const pointer\r
-\r
-!kcdb_credtype_get_id()\r
-# name parameter is now a const pointer\r
-\r
-!kcdb_buf_get_attrib(), kcdb_buf_get_attrib_string(), kcbd_buf_set_attrib()\r
-# attr_name is now a const pointer\r
-\r
-+KCDB_OP_DELCONFIG\r
-# notification that the configuration information for an identity is to be removed.\r
-\r
-\r
-#----------------------------------------------------------------\r
-Version=7\r
-AppVersion=1.1.9.0\r
-Date=Feb 16, 2007\r
-# Released with KFW 3.2 Alpha 1\r
-\r
-+KHUI_ACTION_UICB\r
-# Internal action to dispatch a UI callback\r
-\r
-+WMNC_UPDATE_LAYOUT\r
-# Used to update the layout and size of the dialogs during a new\r
-# credentials operation.\r
-\r
-- NCDLG_TAB_HEIGHT, NCDLG_TAB_WIDTH\r
-# No longer used\r
-\r
-- NCDLG_BBAR_WIDTH\r
-# Moved to internal header file\r
-\r
-+ KCDB_IDENT_FLAG_UNKNOWN\r
-# Used to indicate that an authority could not be contacted to\r
-# determine the validity of an identity.\r
-\r
-+ khui_refresh_actions()\r
-# Force a refresh of the application menus and toolbars.\r
-\r
-+ khui_action_lock()\r
-+ khui_action_unlock()\r
-# Synchronization of action and menu operations.\r
-\r
-! khui_alert\r
-# Structure definition is now internal\r
-\r
-! khui_action\r
-# Structure definition is now internal\r
-\r
-+ khui_alert_set_type()\r
-+ khui_alert_set_ctx()\r
-+ khui_alert_get_response()\r
-# Additional functions to setup an alert.\r
-\r
-! kmq_message\r
-# Added field "aborted"\r
-\r
-+ kmq_abort_call()\r
-+ kmq_is_call_aborted()\r
-# Added placeholders\r
-\r
-! kmq_message_ref\r
-! kmq_queue\r
-! kmq_msg_subscription\r
-! kmq_msg_type\r
-# Structure definition now internal\r
-\r
-! KMQ_MSG_TYPE_MAX\r
-! KMQ_MAXCCH_TYPE_NAME\r
-! KMQ_MAXCB_TYPE_NAME\r
-! KMQ_MSG_SUB_MAGIC\r
-! KMQ_RCPTTYPE_CB\r
-! KMQ_RCPTTYPE_HWND\r
-! KMQ_QUEUE_FLAG_DELETED\r
-# Macros not internal\r
-\r
-#----------------------------------------------------------------\r
-Version=8\r
-AppVersion=1.1.10.0\r
-Date=(TBD)\r
-# Released with (TBD)\r
-\r
-! hash_add(), hash_del(), hash_lookup(), hash_exist()\r
-# 'key' parameter is now (const void *)\r
-\r
-! struct tag_has_bin, hash_bin\r
-# 'key' member is now (const void *)\r
-\r
-\r
-+WMNC_UPDATE_LAYOUT\r
-# Used to update the layout and size of the dialogs during a new\r
-# credentials operation.\r
-\r
-- NCDLG_TAB_HEIGHT, NCDLG_TAB_WIDTH\r
-# No longer used\r
-\r
-- NCDLG_BBAR_WIDTH\r
-# Moved to internal header file\r
-\r
-+ KCDB_IDENT_FLAG_UNKNOWN\r
-# Used to indicate that an authority could not be contacted to\r
-# determine the validity of an identity.\r
-\r
-+ khui_refresh_actions()\r
-# Force a refresh of the application menus and toolbars.\r
-\r
-+ khui_action_lock()\r
-+ khui_action_unlock()\r
-# Synchronization of action and menu operations.\r
-\r
-! khui_alert\r
-# Structure definition is now internal\r
-\r
-! khui_action\r
-# Structure definition is now internal\r
-\r
-+ khui_alert_set_type()\r
-+ khui_alert_set_ctx()\r
-+ khui_alert_get_response()\r
-# Additional functions to setup an alert.\r
-\r
-! kmq_message\r
-# Added field "aborted"\r
-\r
-+ kmq_abort_call()\r
-+ kmq_is_call_aborted()\r
-# Added placeholders\r
-\r
-! kmq_message_ref\r
-! kmq_queue\r
-! kmq_msg_subscription\r
-! kmq_msg_type\r
-# Structure definition now internal\r
-\r
-! KMQ_MSG_TYPE_MAX\r
-! KMQ_MAXCCH_TYPE_NAME\r
-! KMQ_MAXCB_TYPE_NAME\r
-! KMQ_MSG_SUB_MAGIC\r
-! KMQ_RCPTTYPE_CB\r
-! KMQ_RCPTTYPE_HWND\r
-! KMQ_QUEUE_FLAG_DELETED\r
-# Macros not internal\r
-\r
-! khc_value_exists()\r
-# Behavior change with respect to shadowed handles.  If a value\r
-# doesn't exist in the top level handle, then each shadowed handle\r
-# will be tried in turn until the value is found.\r
-\r
-#----------------------------------------------------------------\r
-Version=9\r
-AppVersion=1.3.0.0\r
-Date=(TBD)\r
-# Released with (TBD)\r
-\r
-+ KHERR_CTX_NEWCHILD\r
-+ KHERR_CTX_FOLDCHILD\r
-# Added to kherr.h to support additional notifications\r
+# Copyright (c) 2004 Massachusetts Institute of Technology
+# Copyright (c) 2007 Secure Endpoints Inc.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+# This file documents the versions of the API for NetIDMgr.  The
+# syntax of the file is:
+#
+# Version=<api-version number>
+# AppVersion=<netidmgr-version>
+# Date=<release date> | NOTRELEASED
+# # <comments>
+# <symbol-name>
+# # comment
+# Schema:<path-to-schema>
+# # comment
+
+
+#----------------------------------------------------------------
+Version=1
+AppVersion=0.1.0.0
+Date=NOTRELEASED
+# Original Khimaira API.
+
+#----------------------------------------------------------------
+Version=2
+AppVersion=0.1.1.0
+Date=Nov 01, 2005
+# Alpha 1 release of NetIDMgr, along with KFW 3.0.0 beta
+
+#----------------------------------------------------------------
+Version=3
+AppVersion=0.1.2.0
+Date=Nov 30, 2005
+# Alpha 2 release of NetIDMgr, along with KFW 3.0.0 beta 2
+
+#----------------------------------------------------------------
+Version=4
+AppVersion=1.0.0.0
+Date=Dec 05, 2005
+# Released with KfW 3.0.0
+
+#----------------------------------------------------------------
+Version=5
+AppVersion=1.1.0.0
+Date=(TBD)
+# Released with KFW 3.1.0
+
++khui_alert_show_modal(),KMSG_ALERT_SHOW_MODAL, KHUI_ALERT_FLAG_MODAL
+# Support for modal alert boxes
+
++KHUI_PACTION_YES, KHUI_PACTION_NO, KHUI_PACTION_YESALL, KHUI_PACTION_NOALL, KHUI_PACTION_KEEP, KHUI_PACTION_REMOVE, KHUI_PACTION_DISCARD
+# Additional pseudo actions
+
+!tag_khui_action, khui_action
+# Membership extension for supporting custom actions.  Type changes
+# from 'int' to khm_int32.
+
++khui_action_create(), khui_action_get_data(), khui_action_delete()
+# Support for creating custom actions
+
+!kmq_msg_subscription, tag_kmq_msg_subscription
+# Add 'magic' field.
+
++KHUI_MENU_NONE
+# New identifier for unspecified menu commands.
+
++khui_menu_insert_action(), khui_menu_get_action(), khui_menu_get_size(), khui_menu_remove_action()
+# Functions for manipulating custom menus
+
++khui_menu_insert_paction()
+# Exported, but not exposed as an API.  For inserting actions by
+# reference in to menus.
+
+-khui_menu_add_action(), khui_menu_add_paction()
+# Removed deprecated functions.  Temporarily provided as macros. The
+# replacements are khui_menu_insert_action() and
+# khui_menu_insert_paction() respectively.
+
++kmq_create_hwnd_subscription()
+# Ad-hoc subscriptions can now be obtained for Win32 windows.
+
+-khui_create_gloabl_accel_table()
+# Exported but no longer exposed.
+
+-khui_action_list_length()
+# Exported but no longer exposed.
+
++kmm_enable_plugin()
+# New API for enabling or disabling plugins
+
+!kmm_plugin_info
+# Added 'flags' field.
+
++KCDB_ATTR_FLAG_TRANSIENT
+# New flag for transient attributes.
+
++kherr_get_prev_event(), kherr_get_last_event()
+# For more efficient traversal of the event lists for use by error context handlers.
+
++KHERR_RF_COMMIT
+# Flag for error events to signal that the error event has been committed.
+
++khui_action_trigger()
+# Function for triggerring an action.
+
++khui_action_set_hwnd()
+# internal API.  Should not be used by anyone.  Basically sets the HWND that should receive event notifications from the UI library.
+
++KEPT_PTR
+# error library data type for pointers
+
++_cptr
+# type cast macro for pointer types
+
+!khc_open_space
+# name parameter is now a const string
+
+!KCDB_ATTRNAME_ISSUE
+# Fixed typo
+
+!kherr_val
+# is now an inline function instead of a macro
+
+!kherr_param
+# is now a structure instead of an integer type
+
++KEPT_NONE
+# new constant signifying a NULL parameter
+
+!_int32, _uint32, _int64, _uint64, _cstr, _tstr, _cptr
+# appropriate typecasts added
+
++vnull
+# macro to insert a NULL parameter
+
+!_report_cs0, _report_cs1, _report_cs2, _report_cs3
+!_report_sr0, _report_sr1, _report_sr2, _report_sr3
+!_report_mr0, _report_mr1, _report_mr2, _report_mr3
+!_report_ts0, _report_ts1, _report_ts2, _report_ts3
+# modified to use _vnull() instead of 0 for NULL parameters
+
++KCONF_FLAG_WRITEIFMOD
+# new flag for khc_open_space() indicating that the specified handle should only write to a configuration space if the value read from the handle is different from the value being written
+
++KCONF_FLAG_IFMODCI
+# indicates that the string comparison function used for KCONF_FLAG_WRITEIFMOD should be case insensitive.
+
+!khc_write_int32(), khc_write_int64(), khc_write_string(), khc_write_multi_string()
+# Change of behavior.  If the configuration handle has KCONF_FLAG_WRITEIFMOD flag set, only writes if the value being written to is different from the value being read.
+
+!khc_read_string(), khc_read_multi_string(), khc_read_int32(), khc_read_int64(), khc_read_binary(), khc_write_string(), khc_write_int32(), khc_write_int64(), khc_write_binary(), khc_get_type(), khc_value_exists(), khc_remove_value()
+# The value name parameter is now a constant pointer
+
+!khc_load_schema(), khc_unload_schema()
+# The schema pointer is now a constant pointer
+
+-Schema:NetIDMgr\PluginManager\Modules\<module name>\Flags
+-Schema:NetIDMgr\PluginManager\Plugins\<plugin name>\Flags
+# Deprecated.  Replaced by separate values for each of the bits in Flags.  This allows each setting to be deployed independently via GPO.
+
++Schema:NetIDMgr\PluginManager\Modules\<module name>\Disabled
++Schema:NetIDMgr\PluginManager\Plugins\<plugin name>\Disabled
+# If non-zero, the corresponding module or plug-in is disabled.
+
+!kcdb_identity_set_attrib(), kcdb_identity_get_attrib(), kcdb_identity_get_attrib_string()
+# Attribute name parameter is now a const pointer to a wchar_t string
+
+!kcdb_cred_create()
+# Name parameter is now a const pointer to a wchar_t string
+
+!kcdb_cred_set_attrib(), kcdb_cred_get_attrib()
+!kcdb_cred_get_attrib_string(), kcdb_creds_comp_attrib()
+# Attribute name parameter is now a const pointer to a wchar_t string
+
+!kcdb_type_get_id()
+# Name parameter is now a const pointer to a wchar_t string
+
+!kcdb_type_register()
+# type parameter is now a const pointer
+
+!kcdb_attrib_get_id()
+# Name parameter is now a const pointer
+
+!kcdb_attrib_register()
+# attrib parameter is now a const pointer
+
+!kcdb_credtype_register()
+# type parameter is now a const pointer
+
+!kcdb_credtype_get_id()
+# name parameter is now a const pointer
+
+!kcdb_buf_get_attrib(), kcdb_buf_get_attrib_string(), kcbd_buf_set_attrib()
+# attr_name is now a const pointer
+
++KCDB_OP_DELCONFIG
+# notification that the configuration information for an identity is to be removed.
+
+
+#----------------------------------------------------------------
+Version=7
+AppVersion=1.1.9.0
+Date=Feb 16, 2007
+# Released with KFW 3.2 Alpha 1
+
++KHUI_ACTION_UICB
+# Internal action to dispatch a UI callback
+
++WMNC_UPDATE_LAYOUT
+# Used to update the layout and size of the dialogs during a new
+# credentials operation.
+
+- NCDLG_TAB_HEIGHT, NCDLG_TAB_WIDTH
+# No longer used
+
+- NCDLG_BBAR_WIDTH
+# Moved to internal header file
+
++ KCDB_IDENT_FLAG_UNKNOWN
+# Used to indicate that an authority could not be contacted to
+# determine the validity of an identity.
+
++ khui_refresh_actions()
+# Force a refresh of the application menus and toolbars.
+
++ khui_action_lock()
++ khui_action_unlock()
+# Synchronization of action and menu operations.
+
+! khui_alert
+# Structure definition is now internal
+
+! khui_action
+# Structure definition is now internal
+
++ khui_alert_set_type()
++ khui_alert_set_ctx()
++ khui_alert_get_response()
+# Additional functions to setup an alert.
+
+! kmq_message
+# Added field "aborted"
+
++ kmq_abort_call()
++ kmq_is_call_aborted()
+# Added placeholders
+
+! kmq_message_ref
+! kmq_queue
+! kmq_msg_subscription
+! kmq_msg_type
+# Structure definition now internal
+
+! KMQ_MSG_TYPE_MAX
+! KMQ_MAXCCH_TYPE_NAME
+! KMQ_MAXCB_TYPE_NAME
+! KMQ_MSG_SUB_MAGIC
+! KMQ_RCPTTYPE_CB
+! KMQ_RCPTTYPE_HWND
+! KMQ_QUEUE_FLAG_DELETED
+# Macros not internal
+
+#----------------------------------------------------------------
+Version=8
+AppVersion=1.1.10.0
+Date=(TBD)
+# Released with (TBD)
+
+! hash_add(), hash_del(), hash_lookup(), hash_exist()
+# 'key' parameter is now (const void *)
+
+! struct tag_has_bin, hash_bin
+# 'key' member is now (const void *)
+
+
++WMNC_UPDATE_LAYOUT
+# Used to update the layout and size of the dialogs during a new
+# credentials operation.
+
+- NCDLG_TAB_HEIGHT, NCDLG_TAB_WIDTH
+# No longer used
+
+- NCDLG_BBAR_WIDTH
+# Moved to internal header file
+
++ KCDB_IDENT_FLAG_UNKNOWN
+# Used to indicate that an authority could not be contacted to
+# determine the validity of an identity.
+
++ khui_refresh_actions()
+# Force a refresh of the application menus and toolbars.
+
++ khui_action_lock()
++ khui_action_unlock()
+# Synchronization of action and menu operations.
+
+! khui_alert
+# Structure definition is now internal
+
+! khui_action
+# Structure definition is now internal
+
++ khui_alert_set_type()
++ khui_alert_set_ctx()
++ khui_alert_get_response()
+# Additional functions to setup an alert.
+
+! kmq_message
+# Added field "aborted"
+
++ kmq_abort_call()
++ kmq_is_call_aborted()
+# Added placeholders
+
+! kmq_message_ref
+! kmq_queue
+! kmq_msg_subscription
+! kmq_msg_type
+# Structure definition now internal
+
+! KMQ_MSG_TYPE_MAX
+! KMQ_MAXCCH_TYPE_NAME
+! KMQ_MAXCB_TYPE_NAME
+! KMQ_MSG_SUB_MAGIC
+! KMQ_RCPTTYPE_CB
+! KMQ_RCPTTYPE_HWND
+! KMQ_QUEUE_FLAG_DELETED
+# Macros not internal
+
+! khc_value_exists()
+# Behavior change with respect to shadowed handles.  If a value
+# doesn't exist in the top level handle, then each shadowed handle
+# will be tried in turn until the value is found.
+
+#----------------------------------------------------------------
+Version=9
+AppVersion=1.3.0.0
+Date=(TBD)
+# Released with (TBD)
+
++ KHERR_CTX_NEWCHILD
++ KHERR_CTX_FOLDCHILD
+# Added to kherr.h to support additional notifications
+
++ WMNC_IDENT_PREPROCESS
+# Preprocess the identity selector controls before fetching the
+# selected identity
index 4d1120f39be6f587f60ddded64607258d943d6b5..db1422f015659ec4c536606d8469e637ff32d76e 100644 (file)
@@ -722,6 +722,17 @@ ui_cb(khui_new_creds * nc,
     case WMNC_IDENT_WMSG:
         return handle_wnd_msg(nc, hwnd, uMsg, wParam, lParam);
 
+    case WMNC_IDENT_PREPROCESS:
+        {
+#ifdef DEBUG
+            assert(d != NULL);
+#endif
+            if (d) {
+                set_identity_from_ui(nc, d);
+            }
+        }
+        return TRUE;
+
     case WMNC_IDENT_EXIT:
         {
 #ifdef DEBUG
index 46efe242bca4a35581580b94bd5fc90021352da1..02eb442122b031db38bf0cc399e25121d8bf1246 100644 (file)
@@ -982,6 +982,9 @@ khm_cfg_add_ident_proc(HWND hwnd,
             if (!d || !d->nc)
                 break;
 
+            if (d->nc->ident_cb)
+                d->nc->ident_cb(d->nc, WMNC_IDENT_PREPROCESS, NULL, 0, 0, 0);
+
             /* check if there was an identity selected */
             if (d->nc->n_identities == 0 ||
                 d->nc->identities[0] == NULL) {
index 6349fc72781c718f089e2046fcac1eed6d9f365c..db70b41f881152ca48c68fe28982bf45f8134423 100644 (file)
@@ -329,6 +329,12 @@ enum khui_wm_nc_ident_notify {
     WMNC_IDENT_EXIT,
     /*!< Terminate a credentials acquisition dialog. Sent just before
       the dialog is terminated. */
+
+    WMNC_IDENT_PREPROCESS,
+    /*!< The identity is about to be fetched from the \a
+       ::khui_new_creds structure.  The callback is expected to ensure
+       that the primary identity listed in that structure is
+       consistent with the user selection. */
 };
 
 /*! \name Standard credtext link IDs