/* $Copyright: * * Copyright 1998-2000 by the Massachusetts Institute of Technology. *  * All rights reserved. *  * Export of this software from the United States of America may require a * specific license from the United States Government.  It is the * responsibility of any person or organization contemplating export to * obtain such a license before exporting. *  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute * this software and its documentation for any purpose and without fee is * hereby granted, provided that the above copyright notice appear in all * copies and that both that copyright notice and this permission notice * appear in supporting documentation, and that the name of M.I.T. not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission.  Furthermore if you * modify this software you must label your software as modified software * and not distribute it in such a fashion that it might be confused with * the original MIT software. M.I.T. makes no representations about the * suitability of this software for any purpose.  It is provided "as is" * without express or implied warranty. *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. *  * Individual source code files are copyright MIT, Cygnus Support, * OpenVision, Oracle, Sun Soft, FundsXpress, and others. *  * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, * and Zephyr are trademarks of the Massachusetts Institute of Technology * (MIT).  No commercial use of these trademarks may be made without prior * written permission of MIT. *  * "Commercial use" means use of a name in a product or other for-profit * manner.  It does NOT prevent a commercial firm from referring to the MIT * trademarks in order to convey information (although in doing so, * recognition of their trademark status should be given). * $ *//* $Header: /cvs/src/sasl/mac/CommonKClient/mac_kclient3/Headers/TicketKeeper/TicketKeeper.h,v 1.2 2001/12/04 02:05:58 rjs3 Exp $ */#pragma once#include <Types.h>#include <Files.h>#include <Processes.h>#include <ConditionalMacros.h>#ifdef __cplusplusextern "C" {#endif#if PRAGMA_IMPORT#pragma import on#endif/* * TKAE_SendQuitApplication * * Send quit event to ticket keeper. This will cause Ticket Keeper to remove its * notification if it's up */OSStatusTKAE_SendQuitApplication ();/* * TKAE_SendOpenApplication * * Send open event to ticket keeper. Thiw will launch ticket keeper, and it will * display its self-dismissing notification if there's a problem */ OSStatusTKAE_SendOpenApplication ();/* * TKAE_SendOpenApplicationNoNotification * * Send open event to Ticket Keeper. This will launch Ticket Keeper, and it will not * display its notification if there's a problem. It will stay running. */ OSStatusTKAE_SendOpenApplicationNoNotification ();/* * TKAE_SendOpenApplicationNoNotificationFSSpec * * Send open event to the copy of Ticket Keeper specified in inTKFileSpec. * This will launch Ticket Keeper, and it will not * display its notification if there's a problem. It will stay running. */ OSStatusTKAE_SendOpenApplicationNoNotificationFSSpec (FSSpec *inTKFileSpec);/* * TKAE_SendGetStatus * * Get status from Ticket Keeper */OSStatusTKAE_SendGetStatus (	OSErr*	outStatus);	/* * IsTicketKeeperRunning * * Return true if TK is running, and fills out outPSN if the pointer is non-null. * Return false if TK is not running, and outPSN is unchanged. * */	BooleanIsTicketKeeperRunning (ProcessSerialNumber *outPSN);/*   FindTicketKeeperInExtensions()      Searches the startup volume for copies of Ticket Keeper and checks to see if   any of them are in the Extensions Folder.  If it finds one, returns true and   fills out *tkSpec.  If it doesn't find one or an error occurs, returns false   and *tkSpec is unchanged.      If the hard drive catalog changes during the search, continues anyway.      Uses functions from MoreFiles.*/BooleanFindTicketKeeperInExtensions(FSSpec *tkSpec);/*   TKAE_FindTargetTicketKeeper()      Searches the startup volume to find the Ticket Keeper that would receive   AppleEvents if any of the TicketKeeperLib functions that send AEs were called.   First checks to see if TK is running, and returns the FSSpec of that one if it is.   Next looks in the Extensions Folder.  Finally it searches the drive for   a copy.      If a Ticket Keeper is found, returns true and fills out *tkSpec.    If it doesn't find one or an error occurs, returns false and *tkSpec is unchanged.      If the hard drive catalog changes during the search, continues anyway.*/Boolean TKAE_FindTargetTicketKeeper(FSSpec *tkSpec);#if !TARGET_API_MAC_CARBON/*	Menu State functions		Ticket Keeper provides information needed for menus presented by the	Kerberos Control Strip and Kerberos Menu.  */struct MenuStateHeader;typedef struct MenuStateHeader MenuStateHeader;typedef MenuStateHeader**	MenuState;/*	TKMS_GetMenuState		Returns the current menu state. Dispose with TKMS_DisposeMenuState*/OSErr TKMS_GetMenuState (MenuState* outMenuState);/*	TKMS_DisposeMenuState		Disposes the menu state.*/void TKMS_DisposeMenuState (MenuState outMenuState);/*	TKMS_GetDefaultCacheExpiration		Pass in the menu state returned by TKMS_GetMenuState	Returns the expiration time of the default cache, in Mac epoch*/	OSErr TKMS_GetDefaultCacheExpiration (MenuState inState, UInt32* outExpiration);/*	TKMS_GetDefaultCacheLastChangeTime		Pass in the menu state returned by TKMS_GetMenuState	Returns the last change time of the default cache, in Mac epoch*/	OSErr TKMS_GetDefaultCacheLastChangeTime (MenuState inState, UInt32* outChangeTime);/*	TKMS_GetDefaultCachePrincipal		Pass in the menu state returned by TKMS_GetMenuState	Returns the principal of the default cache, realm removed if necessary*/	OSErr TKMS_GetDefaultCachePrincipal (MenuState inState, Str255 outPrincipal);/*	TKMS_GetDefaultCacheDisplayPrincipal		Pass in the menu state returned by TKMS_GetMenuState	Returns the principal of the default cache, quoting removed*/	OSErr TKMS_GetDefaultCacheDisplayPrincipal (MenuState inState, Str255 outPrincipal);/*	TKMS_GetDefaultCacheShortDisplayPrincipal		Pass in the menu state returned by TKMS_GetMenuState	Returns the principal of the default cache, quoting and default realm removed*/	OSErr TKMS_GetDefaultCacheShortDisplayPrincipal (MenuState inState, Str255 outPrincipal);/*	TKMS_GetDefaultCacheHasValidTickets		Pass in the menu state returned by TKMS_GetMenuState	Returns whether the default cache has valid tickets*/	OSErr TKMS_GetDefaultCacheHasValidTickets (MenuState inState, Boolean* outValidTickets);/*	TKMS_GetNumberOfCaches		Pass in the menu state returned by TKMS_GetMenuState	Returns the total number of caches in the list*/	OSErr TKMS_GetNumberOfCaches (MenuState inState, UInt32* outNumCaches);/*	TKMS_SortCachesAlphabetically		Pass in the menu state returned by TKMS_GetMenuState	Sorts the caches in the list alphabetically by principal*/	OSErr TKMS_SortCachesAlphabetically (	MenuState	inState);/*	TKMS_GetCacheListChangeTime		Pass in the menu state returned by TKMS_GetMenuState	Returns the last change time of the cache list in Mac epoch*/	OSErr TKMS_GetCacheListLastChangeTime (MenuState inState, UInt32* outChangeTime);/*	TKMS_GetIndexedCachePrincipal		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the cache principal of the cache at the index*/	OSErr TKMS_GetIndexedCachePrincipal (MenuState inState, UInt32 inIndex, Str255 outPrincipal);/*	TKMS_GetIndexedCacheDisplayPrincipal		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the cache principal of the cache at the index, quoting removed*/	OSErr TKMS_GetIndexedCacheDisplayPrincipal (MenuState inState, UInt32 inIndex, Str255 outPrincipal);/*	TKMS_GetIndexedCacheShortDisplayPrincipal		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the cache principal of the cache at the index, quoting and default realm removed*/	OSErr TKMS_GetIndexedCacheShortDisplayPrincipal (MenuState inState, UInt32 inIndex, Str255 outPrincipal);/*	TKMS_GetIndexedCacheVersion		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the cache version of the cache at the index (version constants same as ccahe and login lib*/	OSErr TKMS_GetIndexedCacheVersion (MenuState inState, UInt32 inIndex, UInt32* outVersion);/*	TKMS_GetIndexedCacheIsDefault		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns whether the cache at the index is default*/	OSErr TKMS_GetIndexedCacheIsDefault (MenuState inState, UInt32 inIndex, Boolean* outIsDefault);/*	TKMS_GetIndexedCacheIsValid		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns whether the cache at the index has valid tickets*/	OSErr TKMS_GetIndexedCacheIsValid (MenuState inState, UInt32 inIndex, Boolean* outIsValid);/*	TKMS_GetIndexedCacheStartTime		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the start time of the cache at the index in Mac epoch*/	OSErr TKMS_GetIndexedCacheStartTime (MenuState inState, UInt32 inIndex, UInt32* outStartTime);/*	TKMS_GetIndexedCacheExpirationTime		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Returns the expiration time of the cache at the index in Mac epoch*/	OSErr TKMS_GetIndexedCacheExpirationTime (MenuState inState, UInt32 inIndex, UInt32* outExpirationTime);/*	TKMS_SetIndexedDefaultCache		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Sets the cache at the index to be default*/	OSErr TKMS_SetIndexedDefaultCache (MenuState inState, UInt32 inIndex);/*	TKMS_DestroyIndexedCache		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Destroys the cache*/	OSErr TKMS_DestroyIndexedCache (MenuState inState, UInt32 inIndex);/*	TKMS_RenewIndexedCache		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Renews the cache*/	OSErr TKMS_RenewIndexedCache (MenuState inState, UInt32 inIndex);/*	TKMS_ChangeIndexedCachePassword		Pass in the menu state returned by TKMS_GetMenuState	Pass in index (zero based, less than value returned from TKMS_GetCachePrincipalForIndex)	Changes the password of the principal associated with the cache*/	OSErr TKMS_ChangeIndexedCachePassword (MenuState inState, UInt32 inIndex);/*	TKMS_GetFloaterStructureRegion		Pass in the menu state returned by TKMS_GetMenuState	Copies the structure region of the floater window into ioRegion. Used by tear-off MDEF.*/	OSErr TKMS_GetFloaterStructureRegion (	MenuState	inState,	RgnHandle	ioRegion);/*	TKMS_DestroyDefaultCache	Destroys the default cache	*/	OSErr TKMS_DestroyDefaultCache (void);/*	TKMS_NewLogin	Create a new cache, log in a new principal.*/	OSErr TKMS_NewLogin (void);/*	TKMS_RenewDefaultCache	Renew tickets for the default cache*/	OSErr TKMS_RenewDefaultCache (void);/*	TKMS_ChangeDefaultCachePassword	Changes the password of the principal associated with the default cache*/	OSErr TKMS_ChangeDefaultCachePassword (void);/*	TKMS_MoveFloaterStructureRegion		Pass in the new bounding box for the structure region of the floater	Moves the floater to the new location*/	OSErr TKMS_MoveFloaterStructureRegion (	const Rect*	inNewBounds);/*	TKMS_OpenKerberosControlPanel		Open the Kerberos Control Panel (if you can't calle KMLib because you're not	able to send events)*/	OSErr TKMS_OpenKerberosControlPanel (void);/*	TKF_SetHasCloseBox		Set whether the floater has a close box or not*/	OSErr TKF_SetHasCloseBox (	Boolean		inHasCloseBox);/*	TKF_GetHasCloseBox		return whether the floater has a close box or not*/	OSErr TKF_GetHasCloseBox (	Boolean*	outHasCloseBox);/*	TKF_SetDrawPies		Set whether the floater draws pies for time remaining or not*/	OSErr TKF_SetDrawPies (	Boolean		inDrawPies);/*	TKF_GetDrawPies		return whether the floater draws pies for time remaining or not*/	OSErr TKF_GetDrawPies (	Boolean*	outDrawPies);/*	TKF_SetIsVisible		Set whether the floater is visible or not*/	OSErr TKF_SetIsVisible (	Boolean		inIsVisible);/*	TKF_GetIsVisible		Return whether the floater is visible or not*/	OSErr TKF_GetIsVisible (	Boolean*	outIsVisible);/*	TKF_SetIsZoomedOut		Set whether the floater is zoomed out or not*/	OSErr TKF_SetIsZoomedOut (	Boolean		inIsZoomedOut);/*	TKF_GetIsZoomedOut		Return whether the floater is zoomed out or not*/	OSErr TKF_GetIsZoomedOut (	Boolean*	outIsZoomedOut);#endif /* !TARGET_API_MAC_CARBON */#ifdef PRAGMA_IMPORT_OFF#pragma import off#elif PRAGMA_IMPORT#pragma import reset#endif#ifdef __cplusplus}#endif/* * Constants */enum {	keyDontQuit				= FOUR_CHAR_CODE ('stay'),	keyStatus				= FOUR_CHAR_CODE ('Stat')};enum {	kTicketKeeperClass		= FOUR_CHAR_CODE ('TixK')};enum {	kAEGetStatus			= FOUR_CHAR_CODE ('Stat')};enum {	kTicketKeeperSignature	= FOUR_CHAR_CODE ('TixK')};