summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/kim/agent/mac/AuthenticationController.h76
-rw-r--r--src/kim/agent/mac/AuthenticationController.m383
-rw-r--r--src/kim/agent/mac/BadgedImageView.h1
-rw-r--r--src/kim/agent/mac/BadgedImageView.m8
-rw-r--r--src/kim/agent/mac/IPCClient.h51
-rw-r--r--src/kim/agent/mac/IPCClient.m189
-rw-r--r--src/kim/agent/mac/Identities.m15
-rw-r--r--src/kim/agent/mac/KIMUtilities.h7
-rw-r--r--src/kim/agent/mac/KIMUtilities.m25
-rw-r--r--src/kim/agent/mac/KerberosAgent-Info.plist2
-rw-r--r--src/kim/agent/mac/KerberosAgentController.h22
-rw-r--r--src/kim/agent/mac/KerberosAgentController.m194
-rw-r--r--src/kim/agent/mac/KerberosAgentListener.h91
-rw-r--r--src/kim/agent/mac/KerberosAgentListener.m316
-rw-r--r--src/kim/agent/mac/SelectIdentityController.h15
-rw-r--r--src/kim/agent/mac/SelectIdentityController.m121
-rw-r--r--src/kim/agent/mac/ServerDemux.m86
-rw-r--r--src/kim/agent/mac/main.m25
-rw-r--r--src/kim/agent/mac/resources/English.lproj/Authentication.xib2257
-rw-r--r--src/kim/agent/mac/resources/English.lproj/AuthenticationController.stringsbin0 -> 2004 bytes
-rw-r--r--src/kim/agent/mac/resources/English.lproj/MainMenu.xib280
-rw-r--r--src/kim/agent/mac/resources/English.lproj/SelectIdentity.stringsbin0 -> 324 bytes
-rw-r--r--src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib39
23 files changed, 3426 insertions, 777 deletions
diff --git a/src/kim/agent/mac/AuthenticationController.h b/src/kim/agent/mac/AuthenticationController.h
new file mode 100644
index 0000000000..5fcb612c08
--- /dev/null
+++ b/src/kim/agent/mac/AuthenticationController.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2008 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 M.I.T. 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.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+@class IPCClient;
+@class BadgedImageView;
+
+@interface AuthenticationController : NSWindowController {
+ IPCClient *associatedClient;
+
+ IBOutlet NSView *containerView;
+ IBOutlet NSView *identityView;
+ IBOutlet NSView *passwordView;
+ IBOutlet NSView *samView;
+ IBOutlet NSView *changePasswordView;
+ IBOutlet NSView *expiredPasswordView;
+ IBOutlet NSView *errorView;
+
+ IBOutlet BadgedImageView *enterBadge;
+ IBOutlet BadgedImageView *passwordBadge;
+ IBOutlet BadgedImageView *samBadge;
+ IBOutlet BadgedImageView *changePasswordBadge;
+ IBOutlet BadgedImageView *errorBadge;
+
+ // Controls that need to be made key
+ IBOutlet NSTextField *usernameField;
+ IBOutlet NSTextField *passwordField;
+ IBOutlet NSTextField *samPromptField;
+ IBOutlet NSTextField *oldPasswordField;
+
+ // Other controls of interest
+ IBOutlet NSButton *rememberPasswordInKeychainCheckBox;
+
+ IBOutlet NSObjectController *glueController;
+}
+
+@property (readwrite, retain) IPCClient *associatedClient;
+
+- (void) setContent: (NSMutableDictionary *) newContent;
+
+- (void) showEnterIdentity;
+- (void) showAuthPrompt;
+- (void) showEnterPassword;
+- (void) showSAM;
+- (void) showChangePassword;
+- (void) showError;
+
+- (IBAction) cancel: (id) sender;
+- (IBAction) enterIdentity: (id) sender;
+- (IBAction) answerAuthPrompt: (id) sender;
+- (IBAction) changePassword: (id) sender;
+- (IBAction) showedError: (id) sender;
+
+@end
diff --git a/src/kim/agent/mac/AuthenticationController.m b/src/kim/agent/mac/AuthenticationController.m
new file mode 100644
index 0000000000..6a9b668bb3
--- /dev/null
+++ b/src/kim/agent/mac/AuthenticationController.m
@@ -0,0 +1,383 @@
+/*
+ * Copyright 2008 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 M.I.T. 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.
+ */
+
+#import "AuthenticationController.h"
+#import "IPCClient.h"
+#import "BadgedImageView.h"
+
+// to get kim_prompt_type enum
+#import <Kerberos/kim_ui_plugin.h>
+
+/*
+ * glueController KVC mapping is as follows:
+ * name = client app name
+ * path = client app bundle path
+ * title = suggested label for prompt field
+ * message = desired large text message
+ * description = longer, detailed, small text message
+ * username = 'user' part of 'user@REALM.ORG'
+ * realm = 'REALM.ORG' part of 'user@REALM.ORG'
+ * realm_history = past realms the user has entered
+ * prompt_response = auth prompt response
+ * allow_save_password = whether or not to show the 'save password in keychain' checkbox
+ * should_save_password = whether or not to save the password in the keychain
+ * old_password = for change password dialog
+ * new_password = "
+ * verify_password = "
+ */
+
+#define client_name_keypath @"content.name"
+#define client_path_keypath @"content.path"
+
+#define identity_string_keypath @"content.identity_string"
+#define title_keypath @"content.title"
+#define message_keypath @"content.message"
+#define description_keypath @"content.description"
+
+#define username_keypath @"content.username"
+#define realm_keypath @"content.realm"
+#define realm_history_keypath @"content.realm_history"
+
+#define prompt_response_keypath @"content.prompt_response"
+#define allow_save_password_keypath @"content.allow_save"
+#define should_save_password_keypath @"content.save_response"
+
+#define password_expired_keypath @"content.expired"
+#define old_password_keypath @"content.old_password"
+#define new_password_keypath @"content.new_password"
+#define verify_password_keypath @"content.verify_password"
+
+#define enable_identity_ok_keypath @"content.isPrincipalValid"
+#define enable_prompt_ok_keypath @"content.isPromptValid"
+#define change_password_ok_keypath @"content.isChangePasswordValid"
+
+#define valid_lifetime_keypath @"content.valid_lifetime"
+#define renewal_lifetime_keypath @"content.renewal_lifetime"
+#define renewable_keypath @"content.renewable"
+#define addressless_keypath @"content.addressless"
+#define forwardable_keypath @"content.forwardable"
+
+#define max_valid_lifetime_keypath @"content.max_valid_lifetime"
+#define min_valid_lifetime_keypath @"content.min_valid_lifetime"
+#define max_renewal_lifetime_keypath @"content.max_renewal_lifetime"
+#define min_renewal_lifetime_keypath @"content.min_renewal_lifetime"
+
+
+#define ACKVOContext @"authenticationController"
+
+// localization keys and tables
+
+#define ACLocalizationTable @"AuthenticationController"
+
+#define ACAppPrincReqKey @"AuthControllerApplicationPrincipalRequest"
+#define ACPrincReqKey @"AuthControllerPrincipalRequest"
+#define ACAppPasswordReqKey @"AuthControllerApplicationPasswordRequest"
+#define ACPasswordReqKey @"AuthControllerPasswordRequest"
+#define ACPasswordChangeExpired @"ChangePasswordPasswordExpired"
+#define ACPasswordChangeApp @"ChangePasswordApplicationRequest"
+#define ACPasswordChangePrinc @"ChangePasswordPrincipalRequest"
+
+@implementation AuthenticationController
+
+@synthesize associatedClient;
+
+- (id) init
+{
+ return [self initWithWindowNibName: @"Authentication"];
+}
+
+- (void) awakeFromNib
+{
+ [glueController addObserver:self
+ forKeyPath:username_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+ [glueController addObserver:self
+ forKeyPath:realm_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+ [glueController addObserver:self
+ forKeyPath:prompt_response_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+ [glueController addObserver:self
+ forKeyPath:old_password_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+ [glueController addObserver:self
+ forKeyPath:new_password_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+ [glueController addObserver:self
+ forKeyPath:verify_password_keypath
+ options:NSKeyValueObservingOptionNew
+ context:ACKVOContext];
+
+ [[self window] center];
+ // We need to float over the loginwindow and SecurityAgent so use its hardcoded level.
+ [[self window] setLevel:2003];
+}
+
+- (void) dealloc
+{
+ [glueController removeObserver:self forKeyPath:username_keypath];
+ [glueController removeObserver:self forKeyPath:realm_keypath];
+ [glueController removeObserver:self forKeyPath:prompt_response_keypath];
+ [super dealloc];
+}
+
+- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ if ([(NSString *) context isEqualToString:ACKVOContext]) {
+ if ([keyPath isEqualToString:username_keypath] || [keyPath isEqualToString:realm_keypath]) {
+ BOOL valid = [KIMUtilities validatePrincipalWithName:[glueController valueForKeyPath:username_keypath]
+ realm:[glueController valueForKeyPath:realm_keypath]];
+ [glueController setValue:[NSNumber numberWithBool:valid]
+ forKeyPath:enable_identity_ok_keypath];
+ }
+ else if ([keyPath isEqualToString:prompt_response_keypath]) {
+ BOOL valid = ([[glueController valueForKeyPath:prompt_response_keypath] length] > 0);
+ [glueController setValue:[NSNumber numberWithBool:valid]
+ forKeyPath:enable_prompt_ok_keypath];
+ }
+ else if ([keyPath isEqualToString:old_password_keypath] ||
+ [keyPath isEqualToString:new_password_keypath] ||
+ [keyPath isEqualToString:verify_password_keypath]) {
+ NSString *oldString = [glueController valueForKeyPath:old_password_keypath];
+ NSString *newString = [glueController valueForKeyPath:new_password_keypath];
+ NSString *verifyString = [glueController valueForKeyPath:verify_password_keypath];
+ BOOL valid = ([oldString length] > 0 &&
+ [newString length] > 0 &&
+ [verifyString length] > 0 &&
+ [newString isEqualToString:verifyString]);
+ [glueController setValue:[NSNumber numberWithBool:valid]
+ forKeyPath:change_password_ok_keypath];
+ }
+ }
+ else {
+ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
+ }
+}
+
+- (void) setContent: (NSMutableDictionary *) newContent
+{
+ [self window]; // wake up the nib connections
+ [glueController setContent:newContent];
+}
+
+- (void) showEnterIdentity
+{
+ NSString *key = (associatedClient.name) ? ACAppPrincReqKey : ACPrincReqKey;
+ NSString *message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ associatedClient.name];
+
+ // wake up the nib connections and adjust window size
+ [self window];
+ // set up controls with info from associatedClient
+ [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+ [containerView addSubview:identityView];
+ [enterBadge setBadgePath:associatedClient.path];
+ [glueController setValue:message
+ forKeyPath:message_keypath];
+ [self showWindow:nil];
+ [[self window] makeFirstResponder:usernameField];
+}
+
+- (void) showAuthPrompt
+{
+ uint32_t type = [[glueController valueForKeyPath:@"content.prompt_type"] unsignedIntegerValue];
+
+ switch (type) {
+ case kim_prompt_type_password :
+ [self showEnterPassword]; break;
+ case kim_prompt_type_preauth :
+ default :
+ [self showSAM]; break;
+ }
+}
+
+- (void) showEnterPassword
+{
+ CGFloat shrinkBy;
+ NSRect frame;
+ NSString *key = nil;
+ NSString *message = nil;
+
+ [self window];
+
+ if ([associatedClient.name isEqualToString:[[NSBundle mainBundle] bundlePath]]) {
+ key = ACPasswordReqKey;
+ message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ [glueController valueForKeyPath:identity_string_keypath]];
+ } else {
+ key = ACAppPasswordReqKey;
+ message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ associatedClient.name,
+ [glueController valueForKeyPath:identity_string_keypath]];
+ }
+ [glueController setValue:message
+ forKeyPath:message_keypath];
+
+ // wake up the nib connections and adjust window size
+ // set up controls with info from associatedClient
+ [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+ [containerView addSubview:passwordView];
+ // set badge
+ [passwordBadge setBadgePath:associatedClient.path];
+
+ // adjust for checkbox visibility
+ if (![[glueController valueForKeyPath:allow_save_password_keypath] boolValue]) {
+ shrinkBy = ([passwordField frame].origin.y -
+ [rememberPasswordInKeychainCheckBox frame].origin.y);
+ frame = [[self window] frame];
+ frame.origin.y += shrinkBy;
+ frame.size.height -= shrinkBy;
+ [[self window] setFrame:frame display:NO animate:NO];
+ }
+
+ [self showWindow:nil];
+ [[self window] makeFirstResponder:passwordField];
+}
+
+- (void) showSAM
+{
+ // wake up the nib connections and adjust window size
+ [self window];
+ // set up controls with info from associatedClient
+ [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+ [containerView addSubview:samView];
+ // set badge
+ [samBadge setBadgePath:associatedClient.path];
+
+ [glueController setValue:[NSNumber numberWithBool:NO]
+ forKeyPath:allow_save_password_keypath];
+
+ [self showWindow:nil];
+ [[self window] makeFirstResponder:samPromptField];
+}
+
+- (void) showChangePassword
+{
+ NSString *key = ([glueController valueForKeyPath:password_expired_keypath]) ? ACAppPrincReqKey : ACPrincReqKey;
+ NSString *message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ associatedClient.name];
+
+
+ BOOL expired = [[glueController valueForKeyPath:password_expired_keypath] boolValue];
+ BOOL calledBySelf = [associatedClient.path isEqualToString:[[NSBundle mainBundle] bundlePath]];
+
+ if (calledBySelf) {
+ key = ACPasswordChangePrinc;
+ message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ [glueController valueForKeyPath:identity_string_keypath]];
+ // Please change the Kerberos password for \"%@\"
+ } else if (!expired) {
+ key = ACPasswordChangeApp;
+ message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+ associatedClient.name,
+ [glueController valueForKeyPath:identity_string_keypath]];
+ // %@ requires that you change the Kerberos password for \"%@\"
+ } else {
+ key = ACPasswordChangeExpired;
+ message = NSLocalizedStringFromTable(key, ACLocalizationTable, NULL);
+ // Your password has expired, would you like to change it?
+ }
+ [glueController setValue:message forKeyPath:message_keypath];
+
+ // wake up the nib connections and adjust window size
+ [self window];
+ // set up controls with info from associatedClient
+ [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+ [containerView addSubview:changePasswordView];
+ // set badge
+ [changePasswordBadge setBadgePath:associatedClient.path];
+
+ [self showWindow:nil];
+ [[self window] makeFirstResponder:oldPasswordField];
+}
+
+- (void) showError
+{
+ // wake up the nib connections and adjust window size
+ [self window];
+ // set up controls with info from associatedClient
+ [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+ [containerView addSubview:errorView];
+ // set badge
+ [errorBadge setBadgePath:associatedClient.path];
+
+ [self showWindow:nil];
+}
+
+- (IBAction) cancel: (id) sender
+{
+ [associatedClient didCancel];
+ [self close];
+}
+
+- (IBAction) enterIdentity: (id) sender
+{
+ NSString *usernameString = [glueController valueForKeyPath:username_keypath];
+ NSString *realmString = [glueController valueForKeyPath:realm_keypath];
+ NSString *identityString = [NSString stringWithFormat:@"%@@%@", usernameString, realmString];
+
+ // the principal must already be valid to get this far
+ [associatedClient didEnterIdentity:identityString];
+}
+
+- (IBAction) answerAuthPrompt: (id) sender
+{
+ NSString *responseString = [glueController valueForKeyPath:prompt_response_keypath];
+ NSNumber *saveResponse = [glueController valueForKeyPath:should_save_password_keypath];
+
+ if (!saveResponse) {
+ saveResponse = [NSNumber numberWithBool:NO];
+ }
+ [associatedClient didPromptForAuth:responseString
+ saveResponse:saveResponse];
+}
+
+- (IBAction) changePassword: (id) sender
+{
+ NSString *oldString = [glueController valueForKeyPath:old_password_keypath];
+ NSString *newString = [glueController valueForKeyPath:new_password_keypath];
+ NSString *verifyString = [glueController valueForKeyPath:verify_password_keypath];
+
+ [associatedClient didChangePassword:oldString
+ newPassword:newString
+ verifyPassword:verifyString];
+}
+
+- (IBAction) showedError: (id) sender
+{
+ [associatedClient didHandleError];
+}
+
+@end
diff --git a/src/kim/agent/mac/BadgedImageView.h b/src/kim/agent/mac/BadgedImageView.h
index 714c13ef5c..4fba86727c 100644
--- a/src/kim/agent/mac/BadgedImageView.h
+++ b/src/kim/agent/mac/BadgedImageView.h
@@ -33,6 +33,7 @@
- (id) initWithFrame: (NSRect) frameRect;
- (void) dealloc;
- (void) setBadgeImage: (NSImage *) image;
+- (void) setBadgePath: (NSString *) path;
- (void) drawRect: (NSRect) rect;
@end
diff --git a/src/kim/agent/mac/BadgedImageView.m b/src/kim/agent/mac/BadgedImageView.m
index b408130e3e..167130aca3 100644
--- a/src/kim/agent/mac/BadgedImageView.m
+++ b/src/kim/agent/mac/BadgedImageView.m
@@ -60,6 +60,14 @@
// ---------------------------------------------------------------------------
+- (void) setBadgePath: (NSString *) path
+{
+ NSImage *newImage = [[NSWorkspace sharedWorkspace] iconForFile: path];
+ [self setBadgeImage: newImage];
+}
+
+// ---------------------------------------------------------------------------
+
- (void) drawRect: (NSRect) rect
{
float frameSize = [self frame].size.width;
diff --git a/src/kim/agent/mac/IPCClient.h b/src/kim/agent/mac/IPCClient.h
new file mode 100644
index 0000000000..531f7cbe4a
--- /dev/null
+++ b/src/kim/agent/mac/IPCClient.h
@@ -0,0 +1,51 @@
+//
+// IPCClient.h
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "KIMUtilities.h"
+
+@class SelectIdentityController;
+@class AuthenticationController;
+
+@interface IPCClient : NSObject {
+ mach_port_t port;
+ NSString *name;
+ NSString *path;
+ NSInteger state;
+ NSMutableDictionary *currentInfo;
+
+ SelectIdentityController *selectController;
+ AuthenticationController *authController;
+}
+
+@property (assign) mach_port_t port;
+@property (readwrite, retain) NSString *name;
+@property (readwrite, retain) NSString *path;
+@property (assign) NSInteger state;
+@property (readwrite, retain) NSMutableDictionary *currentInfo;
+@property (readonly, retain) SelectIdentityController *selectController;
+@property (readonly, retain) AuthenticationController *authController;
+
+- (void) cleanup;
+
+- (kim_error) selectIdentity: (NSDictionary *) info;
+- (kim_error) enterIdentity: (NSDictionary *) info;
+- (kim_error) promptForAuth: (NSDictionary *) info;
+- (kim_error) changePassword: (NSDictionary *) info;
+- (kim_error) handleError: (NSDictionary *) info;
+
+- (void) didCancel;
+- (void) didSelectIdentity: (NSString *) identityString;
+- (void) didEnterIdentity: (NSString *) identityString;
+- (void) didPromptForAuth: (NSString *) responseString saveResponse: (NSNumber *) saveResponse;
+- (void) didChangePassword: (NSString *) oldPassword
+ newPassword: (NSString *) newPassword
+ verifyPassword: (NSString *) verifyPassword;
+- (void) didHandleError;
+
+@end
diff --git a/src/kim/agent/mac/IPCClient.m b/src/kim/agent/mac/IPCClient.m
new file mode 100644
index 0000000000..4cb10fc274
--- /dev/null
+++ b/src/kim/agent/mac/IPCClient.m
@@ -0,0 +1,189 @@
+//
+// IPCClient.m
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import "IPCClient.h"
+#import "SelectIdentityController.h"
+#import "AuthenticationController.h"
+#import "KerberosAgentListener.h"
+
+enum krb_agent_client_state {
+ ipc_client_state_idle,
+ ipc_client_state_init,
+ ipc_client_state_enter,
+ ipc_client_state_select,
+ ipc_client_state_auth_prompt,
+ ipc_client_state_change_password,
+ ipc_client_state_handle_error,
+ ipc_client_state_fini,
+};
+
+@interface IPCClient ()
+
+@property (readwrite, retain) SelectIdentityController *selectController;
+@property (readwrite, retain) AuthenticationController *authController;
+
+@end
+
+
+@implementation IPCClient
+
+@synthesize port;
+@synthesize name;
+@synthesize path;
+@synthesize state;
+@synthesize currentInfo;
+@synthesize selectController;
+@synthesize authController;
+
+- (BOOL) isEqual: (IPCClient *) otherClient
+{
+ return (self.port == otherClient.port);
+}
+
+- (NSUInteger) hash
+{
+ return self.port;
+}
+
+- (id) init
+{
+ self = [super init];
+ if (self != nil) {
+ self.state = ipc_client_state_init;
+ self.selectController = [[[SelectIdentityController alloc] init] autorelease];
+ self.authController = [[[AuthenticationController alloc] init] autorelease];
+ self.selectController.associatedClient = self;
+ self.authController.associatedClient = self;
+ }
+ return self;
+}
+
+- (void) cleanup
+{
+ [self.selectController close];
+ [self.authController close];
+}
+
+- (void) didCancel
+{
+ kim_error err = KIM_USER_CANCELED_ERR;
+ if (self.state == ipc_client_state_select) {
+ [KerberosAgentListener didSelectIdentity:self.currentInfo error:err];
+ }
+ else if (self.state == ipc_client_state_enter) {
+ [KerberosAgentListener didEnterIdentity:self.currentInfo error:err];
+ }
+ else if (self.state == ipc_client_state_select) {
+ [KerberosAgentListener didSelectIdentity:self.currentInfo error:err];
+ }
+ else if (self.state == ipc_client_state_auth_prompt) {
+ [KerberosAgentListener didPromptForAuth:self.currentInfo error:err];
+ }
+ else if (self.state == ipc_client_state_change_password) {
+ [KerberosAgentListener didChangePassword:self.currentInfo error:err];
+ }
+ [self.selectController close];
+ [self.authController close];
+ self.state = ipc_client_state_idle;
+}
+
+- (kim_error) selectIdentity: (NSDictionary *) info
+{
+ self.currentInfo = [[info mutableCopy] autorelease];
+ self.state = ipc_client_state_select;
+
+ [self.selectController showWindow:nil];
+
+ return 0;
+}
+
+- (void) didSelectIdentity: (NSString *) identityString
+{
+ [self.currentInfo setObject:identityString forKey:@"identity_string"];
+
+ [KerberosAgentListener didSelectIdentity:self.currentInfo error:0];
+
+ // clean up state
+ self.currentInfo = nil;
+ self.state = ipc_client_state_idle;
+}
+
+- (kim_error) enterIdentity: (NSDictionary *) info
+{
+ self.currentInfo = [[info mutableCopy] autorelease];
+ self.state = ipc_client_state_enter;
+
+ [self.authController setContent:self.currentInfo];
+ [self.authController showEnterIdentity];
+
+ return 0;
+}
+
+- (void) didEnterIdentity: (NSString *) identityString
+{
+ [self.currentInfo setObject:identityString forKey:@"identity_string"];
+ [KerberosAgentListener didEnterIdentity:self.currentInfo error:0];
+}
+
+- (kim_error) promptForAuth: (NSDictionary *) info
+{
+ self.currentInfo = [[info mutableCopy] autorelease];
+ self.state = ipc_client_state_auth_prompt;
+
+ [self.authController setContent:self.currentInfo];
+ [self.authController showAuthPrompt];
+
+ return 0;
+}
+
+- (void) didPromptForAuth: (NSString *) responseString saveResponse: (NSNumber *) saveResponse
+{
+ [self.currentInfo setObject:responseString forKey:@"prompt_response"];
+ [self.currentInfo setObject:saveResponse forKey:@"save_response"];
+ [KerberosAgentListener didPromptForAuth:self.currentInfo error:0];
+}
+
+- (kim_error) changePassword: (NSDictionary *) info
+{
+ self.currentInfo = [[info mutableCopy] autorelease];
+ self.state = ipc_client_state_change_password;
+
+ [self.authController setContent:self.currentInfo];
+ [self.authController showChangePassword];
+
+ return 0;
+}
+
+- (void) didChangePassword: (NSString *) oldPassword
+ newPassword: (NSString *) newPassword
+ verifyPassword: (NSString *) verifyPassword
+{
+ [self.currentInfo setObject:oldPassword forKey:@"old_password"];
+ [self.currentInfo setObject:newPassword forKey:@"new_password"];
+ [self.currentInfo setObject:verifyPassword forKey:@"verify_password"];
+ [KerberosAgentListener didChangePassword:self.currentInfo error:0];
+}
+
+
+- (kim_error) handleError: (NSDictionary *) info
+{
+ self.currentInfo = [[info mutableCopy] autorelease];
+ self.state = ipc_client_state_handle_error;
+
+ [self.authController setContent:self.currentInfo];
+ [self.authController showError];
+
+ return 0;
+}
+
+- (void) didHandleError
+{
+ [KerberosAgentListener didHandleError:self.currentInfo error:0];
+}
+
+@end
diff --git a/src/kim/agent/mac/Identities.m b/src/kim/agent/mac/Identities.m
index 54a4947dcf..5dcd32939c 100644
--- a/src/kim/agent/mac/Identities.m
+++ b/src/kim/agent/mac/Identities.m
@@ -204,7 +204,7 @@
self.favorite = true;
} else {
kim_string_create_for_last_error(&error_string, err);
- NSLog(@"%s failed with %s", _cmd, error_string);
+ NSLog(@"%s failed with %s", __FUNCTION__, error_string);
}
return (err != KIM_NO_ERROR);
}
@@ -237,7 +237,7 @@
self.favorite = false;
} else {
kim_string_create_for_last_error(&error_string, err);
- NSLog(@"%s failed with %s", _cmd, error_string);
+ NSLog(@"%s failed with %s", __FUNCTION__, error_string);
}
return (err != KIM_NO_ERROR);
}
@@ -695,12 +695,13 @@
err = cc_context_wait_for_change (context);
if (!err) {
- NSLog (@"%s thread noticed update", __FUNCTION__);
+ // NSLog (@"%s thread noticed update", __FUNCTION__);
} else {
- NSLog (@"%s thread got error %d (%s)", __FUNCTION__, err, [NSString stringForLastKIMError:err]);
+ // NSLog (@"%s thread got error %d (%s)", __FUNCTION__, err, [KIMUtilities stringForLastKIMError:err]);
err = 0; /* The server quit unexpectedly -- just try again */
}
-
+
+ //NSLog(@"waited %@", [[NSThread currentThread] description]);
[(Identities *) [connection rootProxy] update];
sleep (1);
}
@@ -708,7 +709,7 @@
if (context) { cc_context_release (context); }
}
- NSLog (@"%s thread exiting", __FUNCTION__);
+// NSLog (@"%s thread exiting", __FUNCTION__);
[pool release];
}
@@ -856,7 +857,7 @@
}
// Build list of identities with existing ccaches
-
+// NSLog(@"updating %@", [[NSThread currentThread] description]);
while (!err) {
kim_ccache ccache = NULL;
kim_identity kimIdentity = NULL;
diff --git a/src/kim/agent/mac/KIMUtilities.h b/src/kim/agent/mac/KIMUtilities.h
index 68774952cf..9b735b3e22 100644
--- a/src/kim/agent/mac/KIMUtilities.h
+++ b/src/kim/agent/mac/KIMUtilities.h
@@ -11,11 +11,14 @@
#define log_kim_error_to_console(err)\
{\
-NSLog(@"%s got error %@", _cmd, [NSString stringForLastKIMError:err]);\
+NSLog(@"%s got error %@", _cmd, [KIMUtilities stringForLastKIMError:err]);\
} while (0);
-@interface NSString (KIMUtilities)
+@interface KIMUtilities : NSObject
+ (NSString *) stringForLastKIMError: (kim_error) in_err;
++ (BOOL) validatePrincipalWithName: (NSString *) name
+ realm: (NSString *) realm;
+
@end
diff --git a/src/kim/agent/mac/KIMUtilities.m b/src/kim/agent/mac/KIMUtilities.m
index 07c85e8e82..1326c137fa 100644
--- a/src/kim/agent/mac/KIMUtilities.m
+++ b/src/kim/agent/mac/KIMUtilities.m
@@ -8,7 +8,7 @@
#import "KIMUtilities.h"
-@implementation NSString (KIMUtilities)
+@implementation KIMUtilities
+ (NSString *) stringForLastKIMError: (kim_error) in_err
{
@@ -25,4 +25,27 @@
return result;
}
++ (BOOL) validatePrincipalWithName: (NSString *) name
+ realm: (NSString *) realm
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_identity identity = NULL;
+ NSString *principal = nil;
+
+ if (!name || !realm || [name length] == 0) {
+ err = KIM_BAD_PRINCIPAL_STRING_ERR;
+ }
+ if (!err) {
+ principal = [[NSString alloc] initWithFormat:@"%@@%@", name, realm];
+ err = kim_identity_create_from_string(&identity, [principal UTF8String]);
+ [principal release];
+ }
+ if (!identity) {
+ err = KIM_BAD_PRINCIPAL_STRING_ERR;
+ }
+ kim_identity_free(&identity);
+
+ return (err == KIM_NO_ERROR);
+}
+
@end
diff --git a/src/kim/agent/mac/KerberosAgent-Info.plist b/src/kim/agent/mac/KerberosAgent-Info.plist
index d3379ce0d6..6f851e91de 100644
--- a/src/kim/agent/mac/KerberosAgent-Info.plist
+++ b/src/kim/agent/mac/KerberosAgent-Info.plist
@@ -22,5 +22,7 @@
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
+ <key>LSUIElement</key>
+ <true/>
</dict>
</plist>
diff --git a/src/kim/agent/mac/KerberosAgentController.h b/src/kim/agent/mac/KerberosAgentController.h
index 42992dbf38..8769611634 100644
--- a/src/kim/agent/mac/KerberosAgentController.h
+++ b/src/kim/agent/mac/KerberosAgentController.h
@@ -24,9 +24,29 @@
#import <Cocoa/Cocoa.h>
+@class IPCClient;
+@class AuthenticationController;
@interface KerberosAgentController : NSObject {
-
+ NSMutableArray *clients;
+ NSTimer *autoQuitTimer;
}
+@property (readwrite, retain) NSMutableArray *clients;
+
+- (void) quitIfIdle: (NSTimer *) timer;
+
+- (IPCClient *)clientForPort:(mach_port_t)client_port;
+- (IPCClient *)clientForInfo:(NSDictionary *)info;
+
+- (IBAction) fakeANewClient: (id) sender;
+
+- (void) addClient: (NSDictionary *) info;
+- (void) enterIdentity: (NSDictionary *) info;
+- (void) selectIdentity: (NSDictionary *) info;
+- (void) promptForAuth: (NSDictionary *) info;
+- (void) changePassword: (NSDictionary *) info;
+- (void) handleError: (NSDictionary *) info;
+- (void) removeClient: (NSDictionary *) info;
+
@end
diff --git a/src/kim/agent/mac/KerberosAgentController.m b/src/kim/agent/mac/KerberosAgentController.m
index 20b74015a3..5e973ea5e6 100644
--- a/src/kim/agent/mac/KerberosAgentController.m
+++ b/src/kim/agent/mac/KerberosAgentController.m
@@ -24,20 +24,206 @@
#import "KerberosAgentController.h"
#import "SelectIdentityController.h"
+#import "AuthenticationController.h"
+#import "KerberosAgentListener.h"
+#import "IPCClient.h"
+#import "ServerDemux.h"
+#define SECONDS_BEFORE_AUTO_QUIT_ON_START 5
+#define SECONDS_BEFORE_AUTO_QUIT_ON_NO_CLIENTS 1
@implementation KerberosAgentController
+@synthesize clients;
+
// ---------------------------------------------------------------------------
- (void) applicationDidFinishLaunching: (NSNotification *) notification
{
- SelectIdentityController *controller = [[SelectIdentityController alloc] init];
- int result = [controller runWindow];
- if (result != 0) {
- NSLog(@"SelectIdentityController -runWindow result was %d", result);
+ self.clients = [NSMutableArray array];
+ [KerberosAgentListener startListening];
+
+ [NSApp activateIgnoringOtherApps:YES];
+
+ autoQuitTimer = [NSTimer scheduledTimerWithTimeInterval:SECONDS_BEFORE_AUTO_QUIT_ON_START
+ target:self
+ selector:@selector(quitIfIdle:)
+ userInfo:nil
+ repeats:NO];
+}
+
+- (void) dealloc
+{
+ self.clients = nil;
+ [autoQuitTimer invalidate];
+ [autoQuitTimer release];
+
+ [super dealloc];
+}
+
+- (void) quitIfIdle: (NSTimer *) timer
+{
+ if ([self.clients count] == 0) {
+ NSLog(@"No active clients. Terminating.");
+ [NSApp terminate:nil];
}
+ autoQuitTimer = nil;
+}
+
+- (IPCClient *)clientForPort:(mach_port_t)client_port
+{
+ IPCClient *aClient = nil;
+
+ for (aClient in self.clients) {
+ if (aClient.port == client_port) {
+ break;
+ }
+ }
+
+ return aClient;
+}
+- (IPCClient *)clientForInfo:(NSDictionary *)info
+{
+ mach_port_t client_port = [[info objectForKey:@"client_port"] integerValue];
+ return [self clientForPort:client_port];
+}
+
+- (IBAction) fakeANewClient: (id) sender
+{
+ IPCClient *aClient = [[IPCClient alloc] init];
+ aClient.port = 1;
+ aClient.name = @"Barry";
+ aClient.path = [[NSBundle mainBundle] bundlePath];
+ [self.clients addObject:aClient];
+ [aClient release];
+}
+
+#pragma mark Client actions
+
+// init
+- (void) addClient: (NSDictionary *) info
+{
+ int32_t err = 0;
+ IPCClient *aClient = [self clientForInfo:info];
+
+ if (aClient) {
+ // already registered
+ err = KIM_IDENTITY_ALREADY_IN_LIST_ERR;
+ } else {
+ aClient = [[IPCClient alloc] init];
+ aClient.port = [[info objectForKey:@"client_port"] integerValue];
+ aClient.name = [info objectForKey:@"name"];
+ aClient.path = [info objectForKey:@"path"];
+ [self.clients addObject:aClient];
+ [aClient release];
+ }
+
+ [autoQuitTimer invalidate];
+
+ [KerberosAgentListener didAddClient:info error:err];
+ [info release];
+}
+
+// enter
+- (void) enterIdentity: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = nil;
+
+ // get client object for matching info, creating if it doesn't exist
+ aClient = [self clientForInfo:info];
+ if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+ else {
+ err = [aClient enterIdentity:info];
+ }
+ if (err) {
+ [KerberosAgentListener didEnterIdentity:info error:err];
+ }
+}
+
+// select
+- (void) selectIdentity: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = nil;
+
+ // get client object for matching info, creating if it doesn't exist
+ aClient = [self clientForInfo:info];
+ if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+ else {
+ err = [aClient selectIdentity:info];
+ }
+ if (err) {
+ [KerberosAgentListener didSelectIdentity:info error:err];
+ }
+}
+
+// auth
+- (void) promptForAuth: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = nil;
+
+ aClient = [self clientForInfo:info];
+ if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+ else {
+ err = [aClient promptForAuth:info];
+ }
+}
+
+// change password
+- (void) changePassword: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = nil;
+
+ aClient = [self clientForInfo:info];
+ if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+ else {
+ err = [aClient changePassword:info];
+ }
+}
+
+// error
+- (void) handleError: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = nil;
+
+ aClient = [self clientForInfo:info];
+ if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+ else {
+ err = [aClient handleError:info];
+ }
+}
+
+// fini
+- (void) removeClient: (NSDictionary *) info
+{
+ kim_error err = KIM_NO_ERROR;
+ IPCClient *aClient = [self clientForInfo:info];
+
+ if (!aClient) {
+ err = KIM_IDENTITY_NOT_IN_LIST_ERR;
+ } else {
+ // close all windows associated with it
+ [aClient cleanup];
+ [self.clients removeObject:aClient];
+ if ([self.clients count] == 0) {
+ // the client removes itself after select identity,
+ // but might come back shortly afterward in need of an auth prompt
+ autoQuitTimer = [NSTimer scheduledTimerWithTimeInterval:SECONDS_BEFORE_AUTO_QUIT_ON_NO_CLIENTS
+ target:self
+ selector:@selector(quitIfIdle:)
+ userInfo:nil
+ repeats:NO];
+ }
+ }
+
+ // called after user finishes prompt
+ [KerberosAgentListener didRemoveClient:info error:err];
+ [info release];
}
@end
diff --git a/src/kim/agent/mac/KerberosAgentListener.h b/src/kim/agent/mac/KerberosAgentListener.h
new file mode 100644
index 0000000000..f58ce3324d
--- /dev/null
+++ b/src/kim/agent/mac/KerberosAgentListener.h
@@ -0,0 +1,91 @@
+//
+// KerberosAgentListener.h
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+
+#define kCheckinMessage 100
+
+@interface KerberosAgentListener : NSObject {
+ NSThread *thread;
+}
+
+@property (readwrite, retain) NSThread *thread;
+
++ (KerberosAgentListener *) sharedListener;
+
++ (void) startListening;
+
+- (void) threadMain;
+
++ (void) addClientWithPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ name: (kim_string) name
+ path: (kim_string) path;
+
+// contains reply_port
++ (void) didAddClient: (NSDictionary *) info
+ error: (int32_t) error;
+
++ (void) enterIdentityWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port;
+
+// contains reply_port, kim_identity
++ (void) didEnterIdentity: (NSDictionary *) info
+ error: (int32_t) error;
+
++ (void) selectIdentityWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ hints: (kim_selection_hints) hints;
+
+// contains reply_port, kim_identity
++ (void) didSelectIdentity: (NSDictionary *) info
+ error: (int32_t) error;
+
++ (void) promptForAuthWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ promptType: (uint32_t) prompt_type
+ allowSave: (kim_boolean) allow_save
+ hideReply: (kim_boolean) hide_reply
+ title: (kim_string) title
+ message: (kim_string) message
+ description: (kim_string) description;
+
+// contains reply_port, (string) prompt_response
++ (void) didPromptForAuth: (NSDictionary *) info
+ error: (int32_t) error;
+
++ (void) changePasswordWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ expired: (kim_boolean) expired;
+
+// contains reply_port, old password, new password, verify password
++ (void) didChangePassword: (NSDictionary *) info
+ error: (int32_t) error;
+
++ (void) handleErrorWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ error: (kim_error) error
+ message: (kim_string) message
+ description: (kim_string) description;
+
+// contains reply_port
++ (void) didHandleError: (NSDictionary *) info
+ error: (int32_t) error;
+
+
++ (void) removeClientMatchingPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port;
+
++ (void) didRemoveClient: (NSDictionary *)info
+ error: (int32_t) error;
+
+@end
diff --git a/src/kim/agent/mac/KerberosAgentListener.m b/src/kim/agent/mac/KerberosAgentListener.m
new file mode 100644
index 0000000000..f765997269
--- /dev/null
+++ b/src/kim/agent/mac/KerberosAgentListener.m
@@ -0,0 +1,316 @@
+//
+// KerberosAgentListener.m
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import "KerberosAgentListener.h"
+#import "KIMUtilities.h"
+#import "ServerDemux.h"
+#import "IPCClient.h"
+
+@implementation KerberosAgentListener
+
+@synthesize thread;
+
+- (id) init
+{
+ self = [super init];
+ if (self != nil) {
+ self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMain) object:nil];
+ }
+ return self;
+}
+
+static KerberosAgentListener *sharedListener = nil;
+
++ (KerberosAgentListener *) sharedListener
+{
+ @synchronized(self) {
+ if (sharedListener == nil) {
+ [[self alloc] init]; // assignment not done here
+ }
+ }
+ return sharedListener;
+}
+
++ (id)allocWithZone:(NSZone *)zone
+{
+ @synchronized(self) {
+ if (sharedListener == nil) {
+ sharedListener = [super allocWithZone:zone];
+ return sharedListener; // assignment and return on first allocation
+ }
+ }
+ return nil; //on subsequent allocation attempts return nil
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+ return self;
+}
+
+- (id)retain
+{
+ return self;
+}
+
+- (unsigned)retainCount
+{
+ return UINT_MAX; //denotes an object that cannot be released
+}
+
+- (void)release
+{
+ //do nothing
+}
+
+- (id)autorelease
+{
+ return self;
+}
+
+#pragma mark Thread management
+
+// called from main thread to start listen thread
++ (void) startListening
+{
+// NSLog(@"%s %@ thread", __FUNCTION__, ([NSThread isMainThread]) ? @"main" : @"not main");
+
+ [[KerberosAgentListener sharedListener].thread start];
+}
+
+- (void) threadMain
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ int32_t err = 0;
+
+// NSLog(@"%s starting up", __FUNCTION__);
+
+ while (!err && ![self.thread isCancelled]) {
+ err = kim_agent_listen_loop();
+ if (!err) {
+// NSLog (@"%s loop resetting %@", __FUNCTION__, [[NSThread currentThread] description]);
+ } else {
+ NSLog (@"%s got error %d (%@) %@", __FUNCTION__, err, [KIMUtilities stringForLastKIMError:err], [[NSThread currentThread] description]);
+ err = 0; /* The server quit unexpectedly -- just try again */
+ }
+ sleep(10);
+ }
+
+ [pool release];
+}
+
+#pragma mark IPC handlers
+
++ (void) addClientWithPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ name: (kim_string) name
+ path: (kim_string) path
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ [NSString stringWithUTF8String:name], @"name",
+ [NSString stringWithUTF8String:path], @"path",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(addClient:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
++ (void) didAddClient: (NSDictionary *) info
+ error: (kim_error) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+ err = kim_handle_reply_init(reply_port, error);
+}
+
++ (void) enterIdentityWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(enterIdentity:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
+// contains reply_port, identity_string
++ (void) didEnterIdentity: (NSDictionary *) info
+ error: (kim_error) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+ kim_identity identity = NULL;
+
+ if (!err) {
+ err = kim_identity_create_from_string(&identity, [[info objectForKey:@"identity_string"] UTF8String]);
+ }
+
+ err = kim_handle_reply_enter_identity(reply_port, identity, error);
+}
+
++ (void) selectIdentityWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ hints: (kim_selection_hints) hints
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_selection_hints new_hints = NULL;
+ NSDictionary *info = nil;
+
+ // new hints will be freed by main thread
+ err = kim_selection_hints_copy(&new_hints, hints);
+
+ info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ [NSValue valueWithPointer:new_hints], @"hints",
+ nil];
+
+ [[NSApp delegate] performSelectorOnMainThread:@selector(selectIdentity:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
+// contains reply_port, identity_string
++ (void) didSelectIdentity: (NSDictionary *) info
+ error: (int32_t) error
+{
+ kim_error err = KIM_NO_ERROR;
+ NSNumber *portNumber = [info objectForKey:@"reply_port"];
+ NSString *identityString = [info objectForKey:@"identity_string"];
+ mach_port_t reply_port = [portNumber integerValue];
+ kim_identity identity = NULL;
+ kim_identity_create_from_string(&identity, (identityString) ? [identityString UTF8String] : "");
+
+ err = kim_handle_reply_select_identity(reply_port, identity, error);
+}
+
++ (void) promptForAuthWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ promptType: (uint32_t) prompt_type
+ allowSave: (kim_boolean) allow_save
+ hideReply: (kim_boolean) hide_reply
+ title: (kim_string) title
+ message: (kim_string) message
+ description: (kim_string) description
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ [NSString stringWithUTF8String:identity_string], @"identity_string",
+ [NSNumber numberWithUnsignedInt:prompt_type], @"prompt_type",
+ [NSNumber numberWithBool:allow_save], @"allow_save",
+ [NSNumber numberWithBool:hide_reply], @"hide_reply",
+ [NSString stringWithUTF8String:title], @"title",
+ [NSString stringWithUTF8String:message], @"message",
+ [NSString stringWithUTF8String:description], @"description",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(promptForAuth:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
+// contains reply_port, (string) prompt_response
++ (void) didPromptForAuth: (NSDictionary *) info
+ error: (int32_t) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+ kim_string prompt_response = [[info objectForKey:@"prompt_response"] UTF8String];
+ kim_boolean save_response = [[info objectForKey:@"save_response"] boolValue];
+
+ err = kim_handle_reply_auth_prompt(reply_port, prompt_response, save_response, error);
+}
+
++ (void) changePasswordWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ expired: (kim_boolean) expired
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ [NSString stringWithUTF8String:identity_string], @"identity_string",
+ [NSNumber numberWithBool:expired], @"expired",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(changePassword:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
+// contains reply_port, old password, new password, verify password
++ (void) didChangePassword: (NSDictionary *) info
+ error: (int32_t) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+ kim_string old_pw = [[info objectForKey:@"old_password"] UTF8String];
+ kim_string new_pw = [[info objectForKey:@"new_password"] UTF8String];
+ kim_string verify_pw = [[info objectForKey:@"verify_password"] UTF8String];
+
+ err = kim_handle_reply_change_password(reply_port, old_pw, new_pw, verify_pw, error);
+}
+
++ (void) handleErrorWithClientPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+ identity: (kim_string) identity_string
+ error: (kim_error) error
+ message: (kim_string) message
+ description: (kim_string) description
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ [NSString stringWithUTF8String:identity_string], @"identity_string",
+ [NSNumber numberWithUnsignedInt:error], @"error",
+ [NSString stringWithUTF8String:message], @"message",
+ [NSString stringWithUTF8String:description], @"description",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(handleError:)
+ withObject:info
+ waitUntilDone:NO];
+
+}
+
+// contains reply_port
++ (void) didHandleError: (NSDictionary *) info
+ error: (int32_t) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+
+ err = kim_handle_reply_handle_error(reply_port, error);
+}
+
++ (void) removeClientMatchingPort: (mach_port_t) client_port
+ replyPort: (mach_port_t) reply_port
+{
+ NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSNumber numberWithInteger:client_port], @"client_port",
+ [NSNumber numberWithInteger:reply_port], @"reply_port",
+ nil];
+ [[NSApp delegate] performSelectorOnMainThread:@selector(removeClient:)
+ withObject:info
+ waitUntilDone:NO];
+}
+
+// contains reply_port
++ (void) didRemoveClient: (NSDictionary *)info
+ error: (int32_t) error
+{
+ kim_error err = KIM_NO_ERROR;
+ mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+ if (reply_port) {
+ err = kim_handle_reply_fini(reply_port, error);
+ }
+}
+
+@end
diff --git a/src/kim/agent/mac/SelectIdentityController.h b/src/kim/agent/mac/SelectIdentityController.h
index 01bcd92287..2251d2773e 100644
--- a/src/kim/agent/mac/SelectIdentityController.h
+++ b/src/kim/agent/mac/SelectIdentityController.h
@@ -26,8 +26,11 @@
#import "BadgedImageView.h"
#import "Identities.h"
-@interface SelectIdentityController : NSWindowController {
+@class IPCClient;
+@interface SelectIdentityController : NSWindowController {
+ IPCClient *associatedClient;
+
IBOutlet NSObjectController *identitiesController;
IBOutlet NSArrayController *identityArrayController;
@@ -49,8 +52,12 @@
IBOutlet NSObjectController *identityOptionsController;
IBOutlet NSTextField *nameField;
IBOutlet NSTextField *realmField;
+
+ IBOutlet NSButton *ticketOptionsOkButton;
}
+@property (readwrite, retain) IPCClient *associatedClient;
+
- (IBAction) newIdentity: (id) sender;
- (IBAction) addToFavorites: (id) sender;
- (IBAction) removeFromFavorites: (id) sender;
@@ -63,14 +70,12 @@
- (IBAction) select: (id) sender;
- (IBAction) cancel: (id) sender;
-- (int) runWindow;
+- (void)controlTextDidChange:(NSNotification *)aNotification;
+
- (void) showOptions: (NSString *) contextInfo;
- (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo;
- (void) saveOptions;
-- (void) reloadData;
-- (void) refreshTable;
-
- (void) timedRefresh:(NSTimer *)timer;
@end
diff --git a/src/kim/agent/mac/SelectIdentityController.m b/src/kim/agent/mac/SelectIdentityController.m
index e70189d68e..897e0dcc76 100644
--- a/src/kim/agent/mac/SelectIdentityController.m
+++ b/src/kim/agent/mac/SelectIdentityController.m
@@ -23,22 +23,19 @@
*/
#import "SelectIdentityController.h"
+#import "IPCClient.h"
#define identities_key_path @"identities"
@implementation SelectIdentityController
+@synthesize associatedClient;
+
// ---------------------------------------------------------------------------
- (id) initWithWindowNibName: (NSString *) windowNibName
{
if ((self = [super initWithWindowNibName: windowNibName])) {
- identities = [[Identities alloc] init];
- [identities addObserver:self
- forKeyPath:identities_key_path
- options:NSKeyValueObservingOptionNew
- context:@"selectIdentityController"];
- refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];
}
return self;
@@ -56,7 +53,6 @@
- (void) dealloc
{
[refreshTimer release];
- [identities removeObserver:self forKeyPath:identities_key_path];
[identities release];
[super dealloc];
}
@@ -65,20 +61,36 @@
- (void) awakeFromNib
{
- [headerTextField setStringValue: @"Some header text"];
- [identityTableView setDoubleAction:@selector(select:)];
-}
+ NSString *key = nil;
+ NSString *message = nil;
-// ---------------------------------------------------------------------------
+ // We need to float over the loginwindow and SecurityAgent so use its hardcoded level.
+ [[self window] center];
+ [[self window] setLevel:2003];
-- (void) windowDidLoad
-{
- [explanationTextField setStringValue: @"Some explanation text"];
+ [identityTableView setDoubleAction:@selector(select:)];
+ identities = [[Identities alloc] init];
[identitiesController setContent:identities];
-}
+ refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];
+
+ [kerberosIconImageView setBadgePath:associatedClient.path];
+
+ if ([associatedClient.name isEqualToString:[[NSBundle mainBundle] bundlePath]]) {
+ key = @"SelectIdentityRequest";
+ message = NSLocalizedStringFromTable(key, @"SelectIdentity", NULL);
+ }
+ else {
+ key = @"SelectIdentityApplicationRequest";
+ message = [NSString stringWithFormat:
+ NSLocalizedStringFromTable(key, @"SelectIdentity", NULL),
+ associatedClient.name];
+ }
+ [headerTextField setStringValue:message];
+}
// ---------------------------------------------------------------------------
+
- (IBAction) newIdentity: (id) sender
{
Identity *newIdentity = [[Identity alloc] init];
@@ -87,7 +99,6 @@
identityOptionsController.content = newIdentity;
[newIdentity release];
- NSLog(@"New identity %@", [newIdentity description]);
[self showOptions:@"new"];
}
@@ -97,7 +108,7 @@
{
Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
identityOptionsController.content = nil;
- NSLog(@"Add %@ to favorites", [anIdentity description]);
+
anIdentity.favorite = TRUE;
[self saveOptions];
@@ -109,7 +120,7 @@
{
Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
identityOptionsController.content = anIdentity;
- NSLog(@"Remove %@ from favorites", [anIdentity description]);
+
anIdentity.favorite = FALSE;
[self saveOptions];
@@ -119,18 +130,22 @@
- (IBAction) select: (id) sender
{
+ Identity *selectedIdentity = nil;
+
// ignore double-click on header
if ([sender respondsToSelector:@selector(clickedRow)] && [sender clickedRow] < 0) {
return;
}
- NSLog(@"Select identity: %@", identityArrayController.selectedObjects.description);
+ selectedIdentity = [[identityArrayController selectedObjects] lastObject];
+
+ [associatedClient didSelectIdentity: selectedIdentity.principalString];
}
// ---------------------------------------------------------------------------
- (IBAction) cancel: (id) sender
{
- NSLog(@"Cancel identity selection");
+ [associatedClient didCancel];
}
// ---------------------------------------------------------------------------
@@ -176,21 +191,12 @@
[NSApp endSheet: identityOptionsWindow];
}
-// ---------------------------------------------------------------------------
-
-- (int) runWindow
+- (void)controlTextDidChange:(NSNotification *)aNotification
{
- //[[NSApp delegate] addActiveWindow: [self window]];
- //NSWindow *window = [self window];
-
- //[window center];
- [self showWindow: self];
-// [NSApp run];
-// [self close];
-
- //[[NSApp delegate] removeActiveWindow: [self window]];
-
- return 0;
+ BOOL valid = [KIMUtilities validatePrincipalWithName:[nameField stringValue]
+ realm:[realmField stringValue]];
+ [ticketOptionsOkButton setEnabled:valid];
+ [ticketOptionsOkButton setNeedsDisplay];
}
// ---------------------------------------------------------------------------
@@ -219,9 +225,8 @@
Identity *newIdentity = identityOptionsController.content;
err = [identities addIdentity:newIdentity];
-#warning Add validation to prevent the addition of existing principals and invalid principals
if (err) {
- NSLog(@"%s received error %@ trying to add identity %@", _cmd, [NSString stringForLastKIMError:err], [newIdentity description]);
+ NSLog(@"%s received error %@ trying to add identity %@", _cmd, [KIMUtilities stringForLastKIMError:err], [newIdentity description]);
}
[self saveOptions];
}
@@ -258,52 +263,10 @@
// ---------------------------------------------------------------------------
-- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
- if ([(NSString *) context isEqualToString:@"selectIdentityController"]) {
- if ([keyPath isEqualToString:identities_key_path]) {
-// [self reloadData];
- }
- }
- else {
- [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
- }
-}
-
-// ---------------------------------------------------------------------------
-
-- (void) reloadData
-{
- // Preserve selection
- Identity *selectedIdentity = [[identityArrayController.selectedObjects lastObject] retain];
- NSUInteger a, b, c;
- a = [identityArrayController selectionIndex];
- b = [[identityArrayController content] count];
- c = NSNotFound;
-
- NSLog(@"== updating table == %s", _cmd);
- identityArrayController.content = identities.identities;
-
- c = [identityArrayController.content indexOfObject:selectedIdentity];
- if ([[identityArrayController content] count] >= a)
- [identityArrayController setSelectionIndex:(c == NSNotFound) ? (a > b) ? b : a : c];
-
- [selectedIdentity release];
-}
-
-// ---------------------------------------------------------------------------
-
-- (void) refreshTable
-{
- [identityArrayController rearrangeObjects];
-}
-
-// ---------------------------------------------------------------------------
-
- (void) timedRefresh:(NSTimer *)timer
{
// refetch data to update expiration times
- [self refreshTable];
+ [identityArrayController rearrangeObjects];
}
@end
diff --git a/src/kim/agent/mac/ServerDemux.m b/src/kim/agent/mac/ServerDemux.m
index ed4e73d1d6..b24011d74c 100644
--- a/src/kim/agent/mac/ServerDemux.m
+++ b/src/kim/agent/mac/ServerDemux.m
@@ -24,6 +24,7 @@
#import "ServerDemux.h"
#import "kim_selection_hints_private.h"
+#import "KerberosAgentListener.h"
// ---------------------------------------------------------------------------
@@ -91,10 +92,11 @@ static int32_t kim_handle_request_init (mach_port_t in_client_port,
}
if (!err) {
-#warning Send init message to main thread with 2 ports, name and path
- NSLog (@"Got init message with pid '%d', name '%s', path '%s'",
- pid, name, path);
- err = kim_handle_reply_init (in_reply_port, 0);
+ // performs selector on main thread
+ [KerberosAgentListener addClientWithPort:in_client_port
+ replyPort:in_reply_port
+ name:name
+ path:path];
}
k5_ipc_stream_free_string (name);
@@ -139,14 +141,9 @@ static int32_t kim_handle_request_enter_identity (mach_port_t in_client_port,
int32_t err = 0;
if (!err) {
-#warning Send enter identity message to main thread with 2 ports
- kim_identity identity = NULL;
- NSLog (@"Got enter identity message");
- err = kim_identity_create_from_string (&identity, "nobody@TEST-KERBEROS-1.3.1");
- if (!err) {
- err = kim_handle_reply_enter_identity (in_reply_port, identity, 0);
- }
- kim_identity_free (&identity);
+ // performs selector on main thread
+ [KerberosAgentListener enterIdentityWithClientPort:in_client_port
+ replyPort:in_reply_port];
}
return err;
@@ -162,7 +159,7 @@ int32_t kim_handle_reply_enter_identity (mach_port_t in_reply_port,
k5_ipc_stream reply = NULL;
kim_string identity_string = NULL;
- if (!err) {
+ if (!err && !in_error) {
err = kim_identity_get_string (in_identity, &identity_string);
}
@@ -198,21 +195,17 @@ static int32_t kim_handle_request_select_identity (mach_port_t in_client_port,
{
int32_t err = 0;
kim_selection_hints hints = NULL;
-
+
if (!err) {
err = kim_selection_hints_create_from_stream (&hints,
in_request_stream);
}
if (!err) {
-#warning Send select identity message to main thread with 2 ports
- kim_identity identity = NULL;
- NSLog (@"Got select identity message");
- err = kim_identity_create_from_string (&identity, "nobody@TEST-KERBEROS-1.3.1");
- if (!err) {
- err = kim_handle_reply_select_identity (in_reply_port, identity, 0);
- }
- kim_identity_free (&identity);
+ // performs selector on main thread
+ [KerberosAgentListener selectIdentityWithClientPort:in_client_port
+ replyPort:in_reply_port
+ hints:hints];
}
kim_selection_hints_free (&hints);
@@ -230,7 +223,7 @@ int32_t kim_handle_reply_select_identity (mach_port_t in_reply_port,
k5_ipc_stream reply = NULL;
kim_string identity_string = NULL;
- if (!err) {
+ if (!err && !in_error) {
err = kim_identity_get_string (in_identity, &identity_string);
}
@@ -302,10 +295,16 @@ static int32_t kim_handle_request_auth_prompt (mach_port_t in_client_port,
}
if (!err) {
- NSLog (@"Got auth prompt with identity '%s', type '%d', allow_save_reply '%d', hide '%d', title '%s', message '%s', description '%s'",
- identity_string, type, allow_save_reply, hide_reply, title, message, description);
- err = kim_handle_reply_auth_prompt (in_reply_port, "ydobon", 0, 0);
-#warning Send auth prompt message to main thread with 2 ports and arguments
+ // performs selector on main thread
+ [KerberosAgentListener promptForAuthWithClientPort:in_client_port
+ replyPort:in_reply_port
+ identity:identity_string
+ promptType:type
+ allowSave:allow_save_reply
+ hideReply:hide_reply
+ title:title
+ message:message
+ description:description];
}
k5_ipc_stream_free_string (identity_string);
@@ -373,13 +372,11 @@ static int32_t kim_handle_request_change_password (mach_port_t in_client_port,
}
if (!err) {
-#warning Send change password message to main thread with 2 ports and arguments
- NSLog (@"Got change password with identity '%s', old_password_expired '%d'",
- identity_string, old_password_expired);
- err = kim_handle_reply_change_password (in_reply_port,
- "ydobon",
- "foo",
- "bar", 0);
+ // performs selector on main thread
+ [KerberosAgentListener changePasswordWithClientPort:in_client_port
+ replyPort:in_reply_port
+ identity:identity_string
+ expired:old_password_expired];
}
k5_ipc_stream_free_string (identity_string);
@@ -458,10 +455,13 @@ static int32_t kim_handle_request_handle_error (mach_port_t in_client_port,
}
if (!err) {
-#warning Send handle error message to main thread with 2 ports and arguments
- NSLog (@"Got handle error with identity '%s', error '%d', message '%s', description '%s'",
- identity_string, error, message, description);
- err = kim_handle_reply_handle_error (in_reply_port, 0);
+ // performs selector on main thread
+ [KerberosAgentListener handleErrorWithClientPort:in_client_port
+ replyPort:in_reply_port
+ identity:identity_string
+ error:error
+ message:message
+ description:description];
}
k5_ipc_stream_free_string (identity_string);
@@ -505,12 +505,8 @@ static int32_t kim_handle_request_fini (mach_port_t in_client_port,
k5_ipc_stream in_request_stream)
{
int32_t err = 0;
-
- if (!err) {
-#warning Send fini message to main thread with 2 ports
- NSLog (@"Got fini message");
- err = kim_handle_reply_fini (in_reply_port, 0);
- }
+
+ [KerberosAgentListener removeClientMatchingPort:in_client_port replyPort:in_reply_port];
return err;
}
@@ -564,7 +560,7 @@ int32_t k5_ipc_server_remove_client (mach_port_t in_client_port)
if (!err) {
/* Client exited. Main thread should check for windows belonging to
* in_client_port and close any it finds. */
-#warning Insert code to handle client death here
+ [KerberosAgentListener removeClientMatchingPort:in_client_port replyPort:0];
}
return err;
diff --git a/src/kim/agent/mac/main.m b/src/kim/agent/mac/main.m
index dec6940932..1e887a0037 100644
--- a/src/kim/agent/mac/main.m
+++ b/src/kim/agent/mac/main.m
@@ -1,27 +1,6 @@
#import <Cocoa/Cocoa.h>
-#import "ServerDemux.h"
-#import "k5_mig_server.h"
-#include <Kerberos/kipc_server.h>
-#include <syslog.h>
-
-
-int main(int argc, const char *argv[])
+int main(int argc, char *argv[])
{
- int err = 0;
- NSAutoreleasePool *pool = NULL;
-
- openlog (argv[0], LOG_CONS | LOG_PID, LOG_AUTH);
- syslog (LOG_INFO, "Starting up.");
-
- pool = [[NSAutoreleasePool alloc] init];
-
- [NSApplication sharedApplication];
- [NSBundle loadNibNamed: @"MainMenu" owner: NSApp];
-
- err = k5_ipc_server_listen_loop ();
-
- syslog (LOG_NOTICE, "Exiting: %s (%d)", kipc_error_string (err), err);
-
- return err;
+ return NSApplicationMain(argc, (const char **) argv);
}
diff --git a/src/kim/agent/mac/resources/English.lproj/Authentication.xib b/src/kim/agent/mac/resources/English.lproj/Authentication.xib
index 67d1b41a75..6b2aad9cd0 100644
--- a/src/kim/agent/mac/resources/English.lproj/Authentication.xib
+++ b/src/kim/agent/mac/resources/English.lproj/Authentication.xib
@@ -2,14 +2,17 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9E17</string>
- <string key="IBDocument.InterfaceBuilderVersion">670</string>
- <string key="IBDocument.AppKitVersion">949.33</string>
+ <string key="IBDocument.SystemVersion">9F33</string>
+ <string key="IBDocument.InterfaceBuilderVersion">672</string>
+ <string key="IBDocument.AppKitVersion">949.34</string>
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="20"/>
<integer value="300157"/>
+ <integer value="300274"/>
+ <integer value="300193"/>
+ <integer value="20"/>
+ <integer value="300175"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -18,7 +21,7 @@
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000842439">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="262677138">
- <string key="NSClassName">NSApplication</string>
+ <string key="NSClassName">AuthenticationController</string>
</object>
<object class="NSCustomObject" id="553445653">
<string key="NSClassName">FirstResponder</string>
@@ -26,6 +29,39 @@
<object class="NSCustomObject" id="714830734">
<string key="NSClassName">NSApplication</string>
</object>
+ <object class="NSObjectController" id="57033499">
+ <object class="NSMutableArray" key="NSDeclaredKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>username</string>
+ <string>realm</string>
+ <string>old_password</string>
+ <string>new_password</string>
+ <string>verify_password</string>
+ <string>title</string>
+ <string>message</string>
+ <string>description</string>
+ <string>allow_save_password</string>
+ <string>realm_history</string>
+ <string>should_save_password</string>
+ <string>isPrincipalValid</string>
+ <string>prompt_response</string>
+ <string>isPromptValid</string>
+ <string>isChangePasswordValid</string>
+ <string>save_response</string>
+ <string>allow_save</string>
+ <string>forwardable</string>
+ <string>addressless</string>
+ <string>renewable</string>
+ <string>valid_lifetime</string>
+ <string>renewal_lifetime</string>
+ <string>min_renewal_lifetime</string>
+ <string>max_renewal_lifetime</string>
+ <string>max_valid_lifetime</string>
+ <string>min_valid_lifetime</string>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ <object class="_NSManagedProxy" key="_NSManagedProxy"/>
+ </object>
<object class="NSCustomView" id="92892041">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
@@ -33,8 +69,8 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextField" id="498665267">
<reference key="NSNextResponder" ref="92892041"/>
- <int key="NSvFlags">282</int>
- <string key="NSFrame">{{101, 126}, {382, 40}}</string>
+ <int key="NSvFlags">264</int>
+ <string key="NSFrame">{{101, 126}, {382, 54}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="645367368">
@@ -143,7 +179,7 @@
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn">
- <integer value="0" key="NSIdentifier"/>
+ <integer value="0" key="NSIdentifier" id="8"/>
<double key="NSWidth">1.200000e+01</double>
<double key="NSMinWidth">1.000000e+01</double>
<double key="NSMaxWidth">1.000000e+03</double>
@@ -264,54 +300,112 @@
<int key="NSPeriodicInterval">25</int>
</object>
</object>
- <object class="NSButton" id="980345926">
+ <object class="NSCustomView" id="1001544034">
<reference key="NSNextResponder" ref="92892041"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{18, 16}, {51, 27}}</string>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 126}, {64, 64}}</string>
+ <reference key="NSSuperview" ref="92892041"/>
+ <string key="NSClassName">BadgedImageView</string>
+ </object>
+ <object class="NSPopUpButton" id="1016187493">
+ <reference key="NSNextResponder" ref="92892041"/>
+ <int key="NSvFlags">-2147483356</int>
+ <string key="NSFrame">{{20, 17}, {38, 26}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="432989262">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.000000e+01</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="980345926"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">Gear</string>
- </object>
+ <object class="NSPopUpButtonCell" key="NSCell" id="690863814">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">134219776</int>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="1016187493"/>
+ <int key="NSButtonFlags">-2030944001</int>
+ <int key="NSButtonFlags2">34</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="1020091532">
+ <reference key="NSMenu" ref="594991555"/>
+ <bool key="NSIsHidden">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <object class="NSCustomResource" key="NSImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSActionTemplate</string>
+ </object>
+ <object class="NSCustomResource" key="NSOnImage" id="530784694">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="790891323">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="690863814"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="594991555">
+ <string key="NSTitle">OtherViews</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1020091532"/>
+ <object class="NSMenuItem" id="452996455">
+ <reference key="NSMenu" ref="594991555"/>
+ <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="530784694"/>
+ <reference key="NSMixedImage" ref="790891323"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="690863814"/>
+ </object>
+ <object class="NSMenuItem" id="917012637">
+ <reference key="NSMenu" ref="594991555"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="530784694"/>
+ <reference key="NSMixedImage" ref="790891323"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="690863814"/>
+ </object>
+ <object class="NSMenuItem" id="8728780">
+ <reference key="NSMenu" ref="594991555"/>
+ <string type="base64-UTF8" key="NSTitle">QWJvdXQgS2VyYmVyb3PigKY</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="530784694"/>
+ <reference key="NSMixedImage" ref="790891323"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="690863814"/>
+ </object>
+ </object>
+ </object>
+ <bool key="NSPullDown">YES</bool>
+ <int key="NSPreferredEdge">1</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
</object>
</object>
- <object class="NSCustomView" id="1001544034">
- <reference key="NSNextResponder" ref="92892041"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 126}, {64, 64}}</string>
- <reference key="NSSuperview" ref="92892041"/>
- <string key="NSClassName">BadgedImageView</string>
- </object>
</object>
<string key="NSFrameSize">{500, 210}</string>
<reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="866582848">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextField" id="225475172">
<reference key="NSNextResponder" ref="866582848"/>
- <int key="NSvFlags">290</int>
+ <int key="NSvFlags">266</int>
<string key="NSFrame">{{104, 82}, {376, 22}}</string>
<reference key="NSSuperview" ref="866582848"/>
<bool key="NSEnabled">YES</bool>
@@ -370,7 +464,7 @@
</object>
<object class="NSTextField" id="464070473">
<reference key="NSNextResponder" ref="866582848"/>
- <int key="NSvFlags">282</int>
+ <int key="NSvFlags">266</int>
<string key="NSFrame">{{101, 126}, {382, 41}}</string>
<reference key="NSSuperview" ref="866582848"/>
<bool key="NSEnabled">YES</bool>
@@ -386,7 +480,7 @@
</object>
<object class="NSTextField" id="427167925">
<reference key="NSNextResponder" ref="866582848"/>
- <int key="NSvFlags">292</int>
+ <int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 84}, {80, 17}}</string>
<reference key="NSSuperview" ref="866582848"/>
<bool key="NSEnabled">YES</bool>
@@ -402,7 +496,7 @@
</object>
<object class="NSButton" id="645528597">
<reference key="NSNextResponder" ref="866582848"/>
- <int key="NSvFlags">294</int>
+ <int key="NSvFlags">290</int>
<string key="NSFrame">{{102, 58}, {380, 18}}</string>
<reference key="NSSuperview" ref="866582848"/>
<bool key="NSEnabled">YES</bool>
@@ -414,11 +508,11 @@
<reference key="NSControlView" ref="645528597"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">130</int>
- <object class="NSCustomResource" key="NSNormalImage">
+ <object class="NSCustomResource" key="NSNormalImage" id="375544883">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
- <object class="NSButtonImageSource" key="NSAlternateImage">
+ <object class="NSButtonImageSource" key="NSAlternateImage" id="875913500">
<string key="NSImageName">NSSwitch</string>
</object>
<string key="NSAlternateContents"/>
@@ -436,10 +530,11 @@
</object>
</object>
<string key="NSFrameSize">{500, 210}</string>
+ <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="898191415">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -563,65 +658,25 @@
</object>
</object>
<string key="NSFrameSize">{500, 210}</string>
+ <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="60326189">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">286</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomView" id="1061510403">
<reference key="NSNextResponder" ref="60326189"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 126}, {64, 64}}</string>
+ <string key="NSFrame">{{20, 146}, {64, 64}}</string>
<reference key="NSSuperview" ref="60326189"/>
<string key="NSClassName">BadgedImageView</string>
</object>
- <object class="NSButton" id="655431516">
- <reference key="NSNextResponder" ref="60326189"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{404, 12}, {82, 32}}</string>
- <reference key="NSSuperview" ref="60326189"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="544381563">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Yes</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="655431516"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="604532625"/>
- <string key="NSAlternateContents"/>
- <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="331992464">
- <reference key="NSNextResponder" ref="60326189"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{322, 12}, {82, 32}}</string>
- <reference key="NSSuperview" ref="60326189"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="418342109">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">No</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="331992464"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
<object class="NSTextField" id="299103498">
<reference key="NSNextResponder" ref="60326189"/>
<int key="NSvFlags">274</int>
- <string key="NSFrame">{{101, 60}, {382, 76}}</string>
+ <string key="NSFrame">{{101, 146}, {382, 19}}</string>
<reference key="NSSuperview" ref="60326189"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="627916817">
@@ -640,7 +695,7 @@
<object class="NSTextField" id="1064523274">
<reference key="NSNextResponder" ref="60326189"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{101, 144}, {382, 17}}</string>
+ <string key="NSFrame">{{101, 173}, {382, 17}}</string>
<reference key="NSSuperview" ref="60326189"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="246958577">
@@ -653,8 +708,150 @@
<reference key="NSTextColor" ref="883746258"/>
</object>
</object>
+ <object class="NSTextField" id="441176528">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{161, 116}, {319, 22}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="453153516">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="441176528"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="490771653"/>
+ <reference key="NSTextColor" ref="955928389"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="962648515">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{62, 118}, {94, 17}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="678162638">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">Old Password:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="962648515"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="29184344">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{57, 90}, {99, 17}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="698626122">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">New Password:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="29184344"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="255611063">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{17, 62}, {139, 17}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="742145870">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">Verify New Password:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="255611063"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="158061">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{161, 88}, {319, 22}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="899060580">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="158061"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="490771653"/>
+ <reference key="NSTextColor" ref="955928389"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="576133689">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{161, 60}, {319, 22}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="696656312">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="576133689"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="490771653"/>
+ <reference key="NSTextColor" ref="955928389"/>
+ </object>
+ </object>
+ <object class="NSButton" id="105446308">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{388, 12}, {98, 32}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="676106072">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Continue</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="105446308"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="288995352">
+ <reference key="NSNextResponder" ref="60326189"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{295, 12}, {93, 32}}</string>
+ <reference key="NSSuperview" ref="60326189"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="613041994">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="288995352"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
</object>
- <string key="NSFrameSize">{500, 210}</string>
+ <string key="NSFrameSize">{500, 230}</string>
+ <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="861423802">
@@ -725,32 +922,12 @@
<int key="NSPeriodicInterval">25</int>
</object>
</object>
- <object class="NSButton" id="424661587">
- <reference key="NSNextResponder" ref="861423802"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{314, 12}, {90, 32}}</string>
- <reference key="NSSuperview" ref="861423802"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="517774830">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Cancel</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="424661587"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
</object>
<string key="NSFrameSize">{500, 210}</string>
<string key="NSClassName">NSView</string>
</object>
<object class="NSWindowTemplate" id="236877202">
- <int key="NSWindowStyleMask">13</int>
+ <int key="NSWindowStyleMask">5</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{378, 236}, {500, 210}}</string>
<int key="NSWTFlags">1886912512</int>
@@ -774,56 +951,237 @@
<string key="NSMaxSize">{600, 422}</string>
<string key="NSFrameAutosaveName"/>
</object>
- <object class="NSMenu" id="161772700">
- <string key="NSTitle">Menu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1064438280">
- <reference key="NSMenu" ref="161772700"/>
- <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="947702371">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="868037723">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- </object>
- <object class="NSMenuItem" id="466925177">
- <reference key="NSMenu" ref="161772700"/>
- <string type="base64-UTF8" key="NSTitle">Q2hhbmdlIFBhc3N3b3Jk4oCmA</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="947702371"/>
- <reference key="NSMixedImage" ref="868037723"/>
- </object>
- <object class="NSMenuItem" id="278140056">
- <reference key="NSMenu" ref="161772700"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="947702371"/>
- <reference key="NSMixedImage" ref="868037723"/>
- </object>
- <object class="NSMenuItem" id="738897734">
- <reference key="NSMenu" ref="161772700"/>
- <string key="NSTitle">About Kerberos...</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="947702371"/>
- <reference key="NSMixedImage" ref="868037723"/>
- </object>
- </object>
- <string key="NSName"/>
+ <object class="NSWindowTemplate" id="102029948">
+ <int key="NSWindowStyleMask">1</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{21, 50}, {430, 283}}</string>
+ <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowTitle">Kerberos Ticket Options</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMinSize">{430, 283}</string>
+ <object class="NSView" key="NSWindowView" id="389112266">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSSlider" id="486016405">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{38, 214}, {374, 25}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="624979516">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">0</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <object class="NSFont" key="NSSupport" id="784855171">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">1.200000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="486016405"/>
+ <double key="NSMaxValue">1.000000e+02</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">11</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="318596865">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 246}, {396, 17}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="254246330">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">Get tickets that are valid for:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="318596865"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="523287828">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{37, 192}, {376, 14}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="175033886">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4325376</int>
+ <string key="NSContents">10 hours</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="523287828"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="594182616">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{37, 82}, {375, 25}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="734223932">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">0</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="784855171"/>
+ <reference key="NSControlView" ref="594182616"/>
+ <double key="NSMaxValue">1.000000e+05</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">11</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSButton" id="198913348">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{18, 134}, {394, 18}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="452074655">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets without IP addresses (NAT mode)</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="198913348"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="375544883"/>
+ <reference key="NSAlternateImage" ref="875913500"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="964499406">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{18, 156}, {394, 18}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="873232825">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets that can be forwarded to other computers</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="964499406"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="375544883"/>
+ <reference key="NSAlternateImage" ref="875913500"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="368169141">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{18, 112}, {394, 18}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="535311584">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets that can be renewed for:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="368169141"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="375544883"/>
+ <reference key="NSAlternateImage" ref="875913500"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="332956369">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{36, 60}, {377, 14}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="931635862">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4325376</int>
+ <string key="NSContents">7 days</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="332956369"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSButton" id="681646907">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{334, 12}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="88378654">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">OK</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="681646907"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="284195308">
+ <reference key="NSNextResponder" ref="389112266"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{252, 12}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="389112266"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="12024755">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="284195308"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{430, 283}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSMinSize">{430, 305}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
@@ -847,19 +1205,848 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">menu</string>
- <reference key="source" ref="980345926"/>
- <reference key="destination" ref="161772700"/>
+ <string key="label">identityView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="92892041"/>
+ </object>
+ <int key="connectionID">300295</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">passwordView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="866582848"/>
+ </object>
+ <int key="connectionID">300296</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">samView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="898191415"/>
+ </object>
+ <int key="connectionID">300297</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">expiredPasswordView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="60326189"/>
+ </object>
+ <int key="connectionID">300298</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.message</string>
+ <reference key="source" ref="464070473"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="464070473"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.message</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.message</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300301</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.message</string>
+ <reference key="source" ref="1024084044"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="1024084044"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.message</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.message</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300303</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.description</string>
+ <reference key="source" ref="860880966"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="860880966"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.description</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.description</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300304</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">glueController</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="57033499"/>
+ </object>
+ <int key="connectionID">300326</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="236877202"/>
+ </object>
+ <int key="connectionID">300339</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">contentValues: selection.realm_history</string>
+ <reference key="source" ref="529434335"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="756729013">
+ <reference key="NSSource" ref="529434335"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">contentValues: selection.realm_history</string>
+ <string key="NSBinding">contentValues</string>
+ <string key="NSKeyPath">selection.realm_history</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300342</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.message</string>
+ <reference key="source" ref="498665267"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="498665267"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.message</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.message</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300344</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">enterIdentity:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="207178735"/>
+ </object>
+ <int key="connectionID">300347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="523041784"/>
+ </object>
+ <int key="connectionID">300348</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.username</string>
+ <reference key="source" ref="409092758"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="409092758"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.username</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.username</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <integer value="1" key="NS.object.0" id="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300349</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.realm</string>
+ <reference key="source" ref="529434335"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="529434335"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.realm</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.realm</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <reference key="NSPreviousConnector" ref="756729013"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300350</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.isPrincipalValid</string>
+ <reference key="source" ref="207178735"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="207178735"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">enabled: selection.isPrincipalValid</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.isPrincipalValid</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300351</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">usernameField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="409092758"/>
+ </object>
+ <int key="connectionID">300352</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">enterBadge</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="1001544034"/>
+ </object>
+ <int key="connectionID">300353</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">passwordField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="225475172"/>
+ </object>
+ <int key="connectionID">300354</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="494687042"/>
+ </object>
+ <int key="connectionID">300359</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">passwordBadge</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="775546934"/>
+ </object>
+ <int key="connectionID">300360</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">answerAuthPrompt:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="133507311"/>
+ </object>
+ <int key="connectionID">300361</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">rememberPasswordInKeychainCheckBox</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="645528597"/>
+ </object>
+ <int key="connectionID">300364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.isPromptValid</string>
+ <reference key="source" ref="133507311"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="133507311"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">enabled: selection.isPromptValid</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.isPromptValid</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.prompt_response</string>
+ <reference key="source" ref="225475172"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="225475172"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.prompt_response</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.prompt_response</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">samBadge</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="944021079"/>
+ </object>
+ <int key="connectionID">300369</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">samPromptField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="270897371"/>
+ </object>
+ <int key="connectionID">300370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">answerAuthPrompt:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="499090485"/>
+ </object>
+ <int key="connectionID">300371</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="907069022"/>
+ </object>
+ <int key="connectionID">300372</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.title</string>
+ <reference key="source" ref="1041175973"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="1041175973"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.title</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.title</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.message</string>
+ <reference key="source" ref="1018438662"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="1018438662"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.message</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.message</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.description</string>
+ <reference key="source" ref="798767897"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="798767897"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.description</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.description</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300375</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.prompt_response</string>
+ <reference key="source" ref="270897371"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="270897371"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.prompt_response</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.prompt_response</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300377</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.isPromptValid</string>
+ <reference key="source" ref="499090485"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="499090485"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">enabled: selection.isPromptValid</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.isPromptValid</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300378</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">errorView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="861423802"/>
+ </object>
+ <int key="connectionID">300379</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">errorBadge</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="41252477"/>
</object>
- <int key="connectionID">300259</int>
+ <int key="connectionID">300380</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showedError:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="432972501"/>
+ </object>
+ <int key="connectionID">300381</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">changePasswordView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="60326189"/>
+ </object>
+ <int key="connectionID">300382</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">changePasswordBadge</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="1061510403"/>
+ </object>
+ <int key="connectionID">300383</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">changePassword:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="105446308"/>
+ </object>
+ <int key="connectionID">300403</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="288995352"/>
+ </object>
+ <int key="connectionID">300404</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.message</string>
+ <reference key="source" ref="1064523274"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="1064523274"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.message</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.message</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300405</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.description</string>
+ <reference key="source" ref="299103498"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="299103498"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.description</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.description</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300406</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">oldPasswordField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="441176528"/>
+ </object>
+ <int key="connectionID">300407</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">nextKeyView</string>
+ <reference key="source" ref="441176528"/>
+ <reference key="destination" ref="158061"/>
+ </object>
+ <int key="connectionID">300408</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">menu</string>
- <reference key="source" ref="432989262"/>
- <reference key="destination" ref="161772700"/>
+ <string key="label">nextKeyView</string>
+ <reference key="source" ref="158061"/>
+ <reference key="destination" ref="576133689"/>
</object>
- <int key="connectionID">300261</int>
+ <int key="connectionID">300409</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">nextKeyView</string>
+ <reference key="source" ref="576133689"/>
+ <reference key="destination" ref="441176528"/>
+ </object>
+ <int key="connectionID">300410</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.isChangePasswordValid</string>
+ <reference key="source" ref="105446308"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="105446308"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">enabled: selection.isChangePasswordValid</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.isChangePasswordValid</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300411</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.old_password</string>
+ <reference key="source" ref="441176528"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="441176528"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.old_password</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.old_password</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300412</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.new_password</string>
+ <reference key="source" ref="158061"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="158061"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.new_password</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.new_password</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300413</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.verify_password</string>
+ <reference key="source" ref="576133689"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="576133689"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.verify_password</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.verify_password</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="9"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300414</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">containerView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="632526042"/>
+ </object>
+ <int key="connectionID">300415</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.save_response</string>
+ <reference key="source" ref="645528597"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="645528597"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.save_response</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.save_response</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300416</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.allow_save</string>
+ <reference key="source" ref="645528597"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="645528597"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">hidden: selection.allow_save</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.allow_save</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300417</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">takeObjectValueFrom:</string>
+ <reference key="source" ref="332956369"/>
+ <reference key="destination" ref="594182616"/>
+ </object>
+ <int key="connectionID">300441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">takeObjectValueFrom:</string>
+ <reference key="source" ref="523287828"/>
+ <reference key="destination" ref="486016405"/>
+ </object>
+ <int key="connectionID">300442</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="523287828"/>
+ <reference key="destination" ref="486016405"/>
+ </object>
+ <int key="connectionID">300443</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="332956369"/>
+ <reference key="destination" ref="594182616"/>
+ </object>
+ <int key="connectionID">300444</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.forwardable</string>
+ <reference key="source" ref="964499406"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="964499406"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.forwardable</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.forwardable</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300445</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.addressless</string>
+ <reference key="source" ref="198913348"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="198913348"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.addressless</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.addressless</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300446</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.renewable</string>
+ <reference key="source" ref="368169141"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="368169141"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.renewable</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.renewable</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300447</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.renewable</string>
+ <reference key="source" ref="594182616"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="594182616"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">enabled: selection.renewable</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.renewable</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300450</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.max_renewal_lifetime</string>
+ <reference key="source" ref="594182616"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="970138044">
+ <reference key="NSSource" ref="594182616"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">maxValue: selection.max_renewal_lifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.max_renewal_lifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300453</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.min_renewal_lifetime</string>
+ <reference key="source" ref="594182616"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="564091763">
+ <reference key="NSSource" ref="594182616"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">minValue: selection.min_renewal_lifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.min_renewal_lifetime</string>
+ <reference key="NSPreviousConnector" ref="970138044"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300454</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.renewal_lifetime</string>
+ <reference key="source" ref="594182616"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="594182616"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.renewal_lifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.renewal_lifetime</string>
+ <reference key="NSPreviousConnector" ref="564091763"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300455</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.max_valid_lifetime</string>
+ <reference key="source" ref="486016405"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="72846604">
+ <reference key="NSSource" ref="486016405"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">maxValue: selection.max_valid_lifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.max_valid_lifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.min_valid_lifetime</string>
+ <reference key="source" ref="486016405"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="337570750">
+ <reference key="NSSource" ref="486016405"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">minValue: selection.min_valid_lifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.min_valid_lifetime</string>
+ <reference key="NSPreviousConnector" ref="72846604"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.valid_lifetime</string>
+ <reference key="source" ref="486016405"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="486016405"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">value: selection.valid_lifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.valid_lifetime</string>
+ <reference key="NSPreviousConnector" ref="337570750"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300459</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -910,52 +2097,19 @@
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300030</int>
- <reference key="object" ref="161772700"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="738897734"/>
- <reference ref="278140056"/>
- <reference ref="466925177"/>
- <reference ref="1064438280"/>
- </object>
- <reference key="parent" ref="0"/>
- <string key="objectName">GearMenu</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300031</int>
- <reference key="object" ref="738897734"/>
- <reference key="parent" ref="161772700"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300032</int>
- <reference key="object" ref="278140056"/>
- <reference key="parent" ref="161772700"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300033</int>
- <reference key="object" ref="466925177"/>
- <reference key="parent" ref="161772700"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300034</int>
- <reference key="object" ref="1064438280"/>
- <reference key="parent" ref="161772700"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300157</int>
<reference key="object" ref="92892041"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="523041784"/>
<reference ref="207178735"/>
- <reference ref="980345926"/>
<reference ref="238778309"/>
<reference ref="409092758"/>
<reference ref="930407441"/>
<reference ref="1001544034"/>
<reference ref="529434335"/>
<reference ref="498665267"/>
+ <reference ref="1016187493"/>
</object>
<reference key="parent" ref="0"/>
<string key="objectName">Enter Identity</string>
@@ -979,15 +2133,6 @@
<reference key="parent" ref="92892041"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300164</int>
- <reference key="object" ref="980345926"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="432989262"/>
- </object>
- <reference key="parent" ref="92892041"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300162</int>
<reference key="object" ref="238778309"/>
<object class="NSMutableArray" key="children">
@@ -1063,11 +2208,6 @@
<reference key="parent" ref="238778309"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300166</int>
- <reference key="object" ref="432989262"/>
- <reference key="parent" ref="980345926"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300167</int>
<reference key="object" ref="563505192"/>
<reference key="parent" ref="207178735"/>
@@ -1292,23 +2432,20 @@
<reference key="object" ref="60326189"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="655431516"/>
<reference ref="1061510403"/>
<reference ref="1064523274"/>
<reference ref="299103498"/>
- <reference ref="331992464"/>
+ <reference ref="255611063"/>
+ <reference ref="962648515"/>
+ <reference ref="29184344"/>
+ <reference ref="441176528"/>
+ <reference ref="158061"/>
+ <reference ref="576133689"/>
+ <reference ref="105446308"/>
+ <reference ref="288995352"/>
</object>
<reference key="parent" ref="0"/>
- <string key="objectName">Expired Password</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300278</int>
- <reference key="object" ref="655431516"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="544381563"/>
- </object>
- <reference key="parent" ref="60326189"/>
+ <string key="objectName">Change Password</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">300275</int>
@@ -1334,20 +2471,6 @@
<reference key="parent" ref="60326189"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300284</int>
- <reference key="object" ref="331992464"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="418342109"/>
- </object>
- <reference key="parent" ref="60326189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300285</int>
- <reference key="object" ref="418342109"/>
- <reference key="parent" ref="331992464"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300287</int>
<reference key="object" ref="627916817"/>
<reference key="parent" ref="299103498"/>
@@ -1358,17 +2481,11 @@
<reference key="parent" ref="1064523274"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300281</int>
- <reference key="object" ref="544381563"/>
- <reference key="parent" ref="655431516"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300211</int>
<reference key="object" ref="861423802"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="860880966"/>
- <reference ref="424661587"/>
<reference ref="41252477"/>
<reference ref="432972501"/>
<reference ref="1024084044"/>
@@ -1386,15 +2503,6 @@
<reference key="parent" ref="861423802"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300290</int>
- <reference key="object" ref="424661587"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="517774830"/>
- </object>
- <reference key="parent" ref="861423802"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300212</int>
<reference key="object" ref="41252477"/>
<reference key="parent" ref="861423802"/>
@@ -1428,15 +2536,346 @@
<reference key="parent" ref="432972501"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300291</int>
- <reference key="object" ref="517774830"/>
- <reference key="parent" ref="424661587"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">300216</int>
<reference key="object" ref="1060905079"/>
<reference key="parent" ref="860880966"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300300</int>
+ <reference key="object" ref="57033499"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Glue Controller</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300312</int>
+ <reference key="object" ref="1016187493"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="690863814"/>
+ </object>
+ <reference key="parent" ref="92892041"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300313</int>
+ <reference key="object" ref="690863814"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="594991555"/>
+ </object>
+ <reference key="parent" ref="1016187493"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300314</int>
+ <reference key="object" ref="594991555"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1020091532"/>
+ <reference ref="8728780"/>
+ <reference ref="917012637"/>
+ <reference ref="452996455"/>
+ </object>
+ <reference key="parent" ref="690863814"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300316</int>
+ <reference key="object" ref="1020091532"/>
+ <reference key="parent" ref="594991555"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300317</int>
+ <reference key="object" ref="8728780"/>
+ <reference key="parent" ref="594991555"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300320</int>
+ <reference key="object" ref="917012637"/>
+ <reference key="parent" ref="594991555"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300384</int>
+ <reference key="object" ref="441176528"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="453153516"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300385</int>
+ <reference key="object" ref="962648515"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="678162638"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300386</int>
+ <reference key="object" ref="678162638"/>
+ <reference key="parent" ref="962648515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300387</int>
+ <reference key="object" ref="453153516"/>
+ <reference key="parent" ref="441176528"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300388</int>
+ <reference key="object" ref="29184344"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="698626122"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300389</int>
+ <reference key="object" ref="698626122"/>
+ <reference key="parent" ref="29184344"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300390</int>
+ <reference key="object" ref="255611063"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="742145870"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300391</int>
+ <reference key="object" ref="742145870"/>
+ <reference key="parent" ref="255611063"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300392</int>
+ <reference key="object" ref="158061"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="899060580"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300393</int>
+ <reference key="object" ref="899060580"/>
+ <reference key="parent" ref="158061"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300394</int>
+ <reference key="object" ref="576133689"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="696656312"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300395</int>
+ <reference key="object" ref="696656312"/>
+ <reference key="parent" ref="576133689"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300396</int>
+ <reference key="object" ref="105446308"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="676106072"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300397</int>
+ <reference key="object" ref="288995352"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="613041994"/>
+ </object>
+ <reference key="parent" ref="60326189"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300398</int>
+ <reference key="object" ref="613041994"/>
+ <reference key="parent" ref="288995352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300399</int>
+ <reference key="object" ref="676106072"/>
+ <reference key="parent" ref="105446308"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300419</int>
+ <reference key="object" ref="102029948"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="389112266"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Options</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300420</int>
+ <reference key="object" ref="389112266"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="284195308"/>
+ <reference ref="681646907"/>
+ <reference ref="332956369"/>
+ <reference ref="368169141"/>
+ <reference ref="964499406"/>
+ <reference ref="198913348"/>
+ <reference ref="594182616"/>
+ <reference ref="523287828"/>
+ <reference ref="318596865"/>
+ <reference ref="486016405"/>
+ </object>
+ <reference key="parent" ref="102029948"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300421</int>
+ <reference key="object" ref="284195308"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="12024755"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300422</int>
+ <reference key="object" ref="681646907"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="88378654"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300423</int>
+ <reference key="object" ref="332956369"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="931635862"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300424</int>
+ <reference key="object" ref="368169141"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="535311584"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300425</int>
+ <reference key="object" ref="964499406"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="873232825"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300426</int>
+ <reference key="object" ref="198913348"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="452074655"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300427</int>
+ <reference key="object" ref="594182616"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="734223932"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300428</int>
+ <reference key="object" ref="523287828"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="175033886"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300429</int>
+ <reference key="object" ref="318596865"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="254246330"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300430</int>
+ <reference key="object" ref="486016405"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="624979516"/>
+ </object>
+ <reference key="parent" ref="389112266"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300431</int>
+ <reference key="object" ref="624979516"/>
+ <reference key="parent" ref="486016405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300432</int>
+ <reference key="object" ref="254246330"/>
+ <reference key="parent" ref="318596865"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300433</int>
+ <reference key="object" ref="175033886"/>
+ <reference key="parent" ref="523287828"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300434</int>
+ <reference key="object" ref="734223932"/>
+ <reference key="parent" ref="594182616"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300435</int>
+ <reference key="object" ref="452074655"/>
+ <reference key="parent" ref="198913348"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300436</int>
+ <reference key="object" ref="873232825"/>
+ <reference key="parent" ref="964499406"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300437</int>
+ <reference key="object" ref="535311584"/>
+ <reference key="parent" ref="368169141"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300438</int>
+ <reference key="object" ref="931635862"/>
+ <reference key="parent" ref="332956369"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300439</int>
+ <reference key="object" ref="88378654"/>
+ <reference key="parent" ref="681646907"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300440</int>
+ <reference key="object" ref="12024755"/>
+ <reference key="parent" ref="284195308"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300464</int>
+ <reference key="object" ref="452996455"/>
+ <reference key="parent" ref="594991555"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -1457,17 +2896,6 @@
<string>19.windowTemplate.minSize</string>
<string>20.IBPluginDependency</string>
<string>20.ImportedFromIB2</string>
- <string>300030.IBEditorWindowLastContentRect</string>
- <string>300030.IBPluginDependency</string>
- <string>300030.ImportedFromIB2</string>
- <string>300031.IBPluginDependency</string>
- <string>300031.ImportedFromIB2</string>
- <string>300032.IBPluginDependency</string>
- <string>300032.ImportedFromIB2</string>
- <string>300033.IBPluginDependency</string>
- <string>300033.ImportedFromIB2</string>
- <string>300034.IBPluginDependency</string>
- <string>300034.ImportedFromIB2</string>
<string>300157.IBEditorWindowLastContentRect</string>
<string>300157.IBPluginDependency</string>
<string>300158.IBPluginDependency</string>
@@ -1482,9 +2910,6 @@
<string>300162.ImportedFromIB2</string>
<string>300163.IBPluginDependency</string>
<string>300163.ImportedFromIB2</string>
- <string>300164.CustomClassName</string>
- <string>300164.IBPluginDependency</string>
- <string>300164.ImportedFromIB2</string>
<string>300165.IBPluginDependency</string>
<string>300175.IBEditorWindowLastContentRect</string>
<string>300175.IBPluginDependency</string>
@@ -1532,117 +2957,207 @@
<string>300274.IBEditorWindowLastContentRect</string>
<string>300274.IBPluginDependency</string>
<string>300275.IBPluginDependency</string>
- <string>300278.IBPluginDependency</string>
- <string>300278.ImportedFromIB2</string>
- <string>300284.IBPluginDependency</string>
- <string>300285.IBPluginDependency</string>
<string>300286.IBPluginDependency</string>
<string>300286.ImportedFromIB2</string>
<string>300288.IBPluginDependency</string>
<string>300288.ImportedFromIB2</string>
- <string>300290.IBPluginDependency</string>
- <string>300291.IBPluginDependency</string>
+ <string>300300.IBPluginDependency</string>
+ <string>300312.IBPluginDependency</string>
+ <string>300313.IBPluginDependency</string>
+ <string>300314.IBEditorWindowLastContentRect</string>
+ <string>300314.IBPluginDependency</string>
+ <string>300316.IBPluginDependency</string>
+ <string>300317.IBPluginDependency</string>
+ <string>300320.IBPluginDependency</string>
+ <string>300384.CustomClassName</string>
+ <string>300384.IBPluginDependency</string>
+ <string>300384.ImportedFromIB2</string>
+ <string>300385.IBPluginDependency</string>
+ <string>300386.IBPluginDependency</string>
+ <string>300388.IBPluginDependency</string>
+ <string>300389.IBPluginDependency</string>
+ <string>300390.IBPluginDependency</string>
+ <string>300391.IBPluginDependency</string>
+ <string>300392.CustomClassName</string>
+ <string>300392.IBPluginDependency</string>
+ <string>300392.ImportedFromIB2</string>
+ <string>300394.CustomClassName</string>
+ <string>300394.IBPluginDependency</string>
+ <string>300394.ImportedFromIB2</string>
+ <string>300396.IBPluginDependency</string>
+ <string>300396.ImportedFromIB2</string>
+ <string>300397.IBPluginDependency</string>
+ <string>300397.ImportedFromIB2</string>
+ <string>300419.IBEditorWindowLastContentRect</string>
+ <string>300419.IBPluginDependency</string>
+ <string>300419.IBWindowTemplateEditedContentRect</string>
+ <string>300419.ImportedFromIB2</string>
+ <string>300419.windowTemplate.hasMaxSize</string>
+ <string>300419.windowTemplate.hasMinSize</string>
+ <string>300419.windowTemplate.maxSize</string>
+ <string>300419.windowTemplate.minSize</string>
+ <string>300420.IBPluginDependency</string>
+ <string>300420.ImportedFromIB2</string>
+ <string>300421.IBPluginDependency</string>
+ <string>300421.ImportedFromIB2</string>
+ <string>300422.IBPluginDependency</string>
+ <string>300422.ImportedFromIB2</string>
+ <string>300423.IBPluginDependency</string>
+ <string>300423.ImportedFromIB2</string>
+ <string>300424.IBPluginDependency</string>
+ <string>300424.ImportedFromIB2</string>
+ <string>300425.IBPluginDependency</string>
+ <string>300425.ImportedFromIB2</string>
+ <string>300426.IBPluginDependency</string>
+ <string>300426.ImportedFromIB2</string>
+ <string>300427.IBPluginDependency</string>
+ <string>300427.ImportedFromIB2</string>
+ <string>300428.IBPluginDependency</string>
+ <string>300428.ImportedFromIB2</string>
+ <string>300429.IBPluginDependency</string>
+ <string>300429.ImportedFromIB2</string>
+ <string>300430.IBPluginDependency</string>
+ <string>300430.ImportedFromIB2</string>
+ <string>300464.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{696, 646}, {500, 210}}</string>
+ <string>{{628, 646}, {500, 210}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{696, 646}, {500, 210}}</string>
- <integer value="1" id="5"/>
- <reference ref="5"/>
+ <string>{{628, 646}, {500, 210}}</string>
+ <reference ref="9"/>
+ <reference ref="9"/>
<string>{{932, 664}, {484, 199}}</string>
- <reference ref="5"/>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <reference ref="9"/>
<string>{600, 400}</string>
<string>{484, 199}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <string>{{557, 1049}, {203, 73}}</string>
+ <reference ref="9"/>
+ <string>{{602, 432}, {500, 210}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{477, 611}, {500, 210}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>NSSecureTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <string>{{602, 364}, {500, 210}}</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <string>PopupButton</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <string>{{628, 163}, {500, 210}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{547, 453}, {500, 210}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>NSSecureTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{553, 638}, {500, 210}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{557, 743}, {500, 210}}</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>{{512, 496}, {500, 230}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{611, 402}, {176, 73}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>NSSecureTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>NSSecureTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{546, 628}, {500, 210}}</string>
+ <reference ref="9"/>
+ <string>NSSecureTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <string>{{579, 449}, {430, 283}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <string>{{579, 449}, {430, 283}}</string>
+ <reference ref="9"/>
+ <reference ref="8"/>
+ <reference ref="9"/>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>{430, 283}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <string>{{619, 442}, {500, 210}}</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
@@ -1666,42 +3181,94 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300293</int>
+ <int key="maxID">300467</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
- <string key="className">BadgedImageView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">../Sources/kim/agent/mac/BadgedImageView.h</string>
+ <string key="className">AuthenticationController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>answerAuthPrompt:</string>
+ <string>cancel:</string>
+ <string>changePassword:</string>
+ <string>enterIdentity:</string>
+ <string>showedError:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>changePasswordBadge</string>
+ <string>changePasswordView</string>
+ <string>containerView</string>
+ <string>enterBadge</string>
+ <string>errorBadge</string>
+ <string>errorView</string>
+ <string>expiredPasswordView</string>
+ <string>glueController</string>
+ <string>identityView</string>
+ <string>oldPasswordField</string>
+ <string>passwordBadge</string>
+ <string>passwordField</string>
+ <string>passwordView</string>
+ <string>rememberPasswordInKeychainCheckBox</string>
+ <string>samBadge</string>
+ <string>samPromptField</string>
+ <string>samView</string>
+ <string>usernameField</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>BadgedImageView</string>
+ <string>NSView</string>
+ <string>NSView</string>
+ <string>BadgedImageView</string>
+ <string>BadgedImageView</string>
+ <string>NSView</string>
+ <string>NSView</string>
+ <string>NSObjectController</string>
+ <string>NSView</string>
+ <string>NSTextField</string>
+ <string>BadgedImageView</string>
+ <string>NSTextField</string>
+ <string>NSView</string>
+ <string>NSButton</string>
+ <string>BadgedImageView</string>
+ <string>NSTextField</string>
+ <string>NSView</string>
+ <string>NSTextField</string>
+ </object>
</object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">FirstResponder</string>
- <string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBUserSource</string>
- <string key="minorKey"/>
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../Sources/kim/agent/mac/AuthenticationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">PopupButton</string>
- <string key="superclassName">NSButton</string>
+ <string key="className">BadgedImageView</string>
+ <string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">../Sources/kim/agent/mac/PopupButton.h</string>
+ <string key="minorKey">../Sources/kim/agent/mac/BadgedImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">PopupButton</string>
- <string key="superclassName">NSButton</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">popupMenu</string>
- <string key="NS.object.0">NSMenu</string>
- </object>
+ <string key="className">FirstResponder</string>
+ <string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
diff --git a/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings b/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings
new file mode 100644
index 0000000000..fc0f2f711a
--- /dev/null
+++ b/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings
Binary files differ
diff --git a/src/kim/agent/mac/resources/English.lproj/MainMenu.xib b/src/kim/agent/mac/resources/English.lproj/MainMenu.xib
index da6d9efed3..f56ab63372 100644
--- a/src/kim/agent/mac/resources/English.lproj/MainMenu.xib
+++ b/src/kim/agent/mac/resources/English.lproj/MainMenu.xib
@@ -2,12 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9E17</string>
- <string key="IBDocument.InterfaceBuilderVersion">670</string>
- <string key="IBDocument.AppKitVersion">949.33</string>
+ <string key="IBDocument.SystemVersion">9F33</string>
+ <string key="IBDocument.InterfaceBuilderVersion">672</string>
+ <string key="IBDocument.AppKitVersion">949.34</string>
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="57"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -57,114 +58,6 @@
<reference key="NSOnImage" ref="42192827"/>
<reference key="NSMixedImage" ref="708750045"/>
</object>
- <object class="NSMenuItem" id="941049996">
- <reference key="NSMenu" ref="980333367"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="885473566">
- <reference key="NSMenu" ref="980333367"/>
- <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="773057625">
- <reference key="NSMenu" ref="980333367"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="701559942">
- <reference key="NSMenu" ref="980333367"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="297859549">
- <object class="NSMutableString" key="NSTitle">
- <characters key="NS.bytes">Services</characters>
- </object>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="2694966">
- <reference key="NSMenu" ref="980333367"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="329699580">
- <reference key="NSMenu" ref="980333367"/>
- <string key="NSTitle">Hide KerberosAgent</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="844777333">
- <reference key="NSMenu" ref="980333367"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="110892548">
- <reference key="NSMenu" ref="980333367"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="354292100">
- <reference key="NSMenu" ref="980333367"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
- <object class="NSMenuItem" id="10506244">
- <reference key="NSMenu" ref="980333367"/>
- <string key="NSTitle">Quit KerberosAgent</string>
- <string key="NSKeyEquiv">q</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="42192827"/>
- <reference key="NSMixedImage" ref="708750045"/>
- </object>
</object>
<string key="NSName">_NSAppleMenu</string>
</object>
@@ -389,14 +282,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="58791012"/>
- <reference key="destination" ref="10506244"/>
- </object>
- <int key="connectionID">139</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
<string key="label">orderFrontStandardAboutPanel:</string>
<reference key="source" ref="58791012"/>
<reference key="destination" ref="104201360"/>
@@ -405,30 +290,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="58791012"/>
- <reference key="destination" ref="844777333"/>
- </object>
- <int key="connectionID">146</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="58791012"/>
- <reference key="destination" ref="329699580"/>
- </object>
- <int key="connectionID">152</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="58791012"/>
- <reference key="destination" ref="110892548"/>
- </object>
- <int key="connectionID">153</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
<string key="label">cut:</string>
<reference key="source" ref="506161835"/>
<reference key="destination" ref="644214546"/>
@@ -523,6 +384,14 @@
</object>
<int key="connectionID">300448</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="364998124"/>
+ <reference key="destination" ref="620802461"/>
+ </object>
+ <int key="connectionID">300468</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -622,16 +491,6 @@
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="104201360"/>
- <reference ref="885473566"/>
- <reference ref="701559942"/>
- <reference ref="329699580"/>
- <reference ref="10506244"/>
- <reference ref="773057625"/>
- <reference ref="2694966"/>
- <reference ref="844777333"/>
- <reference ref="354292100"/>
- <reference ref="110892548"/>
- <reference ref="941049996"/>
</object>
<reference key="parent" ref="946093663"/>
</object>
@@ -641,65 +500,6 @@
<reference key="parent" ref="980333367"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="885473566"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="701559942"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="297859549"/>
- </object>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="297859549"/>
- <reference key="parent" ref="701559942"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="329699580"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="10506244"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="773057625"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="2694966"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="844777333"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="354292100"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="110892548"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="941049996"/>
- <reference key="parent" ref="980333367"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">103</int>
<reference key="object" ref="608222506"/>
<object class="NSMutableArray" key="children">
@@ -819,26 +619,6 @@
<string>106.editorWindowContentRectSynchronizationRect</string>
<string>111.IBPluginDependency</string>
<string>111.ImportedFromIB2</string>
- <string>129.IBPluginDependency</string>
- <string>129.ImportedFromIB2</string>
- <string>130.IBPluginDependency</string>
- <string>130.ImportedFromIB2</string>
- <string>131.IBPluginDependency</string>
- <string>131.ImportedFromIB2</string>
- <string>134.IBPluginDependency</string>
- <string>134.ImportedFromIB2</string>
- <string>136.IBPluginDependency</string>
- <string>136.ImportedFromIB2</string>
- <string>143.IBPluginDependency</string>
- <string>143.ImportedFromIB2</string>
- <string>144.IBPluginDependency</string>
- <string>144.ImportedFromIB2</string>
- <string>145.IBPluginDependency</string>
- <string>145.ImportedFromIB2</string>
- <string>149.IBPluginDependency</string>
- <string>149.ImportedFromIB2</string>
- <string>150.IBPluginDependency</string>
- <string>150.ImportedFromIB2</string>
<string>156.IBPluginDependency</string>
<string>156.ImportedFromIB2</string>
<string>157.IBPluginDependency</string>
@@ -851,6 +631,7 @@
<string>163.ImportedFromIB2</string>
<string>164.IBPluginDependency</string>
<string>164.ImportedFromIB2</string>
+ <string>169.IBEditorWindowLastContentRect</string>
<string>169.IBPluginDependency</string>
<string>169.ImportedFromIB2</string>
<string>169.editorWindowContentRectSynchronizationRect</string>
@@ -862,8 +643,6 @@
<string>173.ImportedFromIB2</string>
<string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string>
- <string>202.IBPluginDependency</string>
- <string>202.ImportedFromIB2</string>
<string>203.IBPluginDependency</string>
<string>203.ImportedFromIB2</string>
<string>210.IBPluginDependency</string>
@@ -886,6 +665,7 @@
<string>5.ImportedFromIB2</string>
<string>56.IBPluginDependency</string>
<string>56.ImportedFromIB2</string>
+ <string>57.IBEditorWindowLastContentRect</string>
<string>57.IBPluginDependency</string>
<string>57.ImportedFromIB2</string>
<string>57.editorWindowContentRectSynchronizationRect</string>
@@ -915,26 +695,7 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
+ <string>{{630, 563}, {253, 173}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>{{1022, 430}, {253, 173}}</string>
@@ -958,10 +719,8 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>{{1066, 510}, {197, 93}}</string>
- <string>{{492, 1079}, {314, 20}}</string>
+ <string>{{492, 736}, {314, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>{{884, 603}, {314, 20}}</string>
@@ -970,6 +729,7 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
+ <string>{{504, 713}, {202, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>{{896, 420}, {240, 183}}</string>
@@ -997,7 +757,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300448</int>
+ <int key="maxID">300484</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1013,6 +773,10 @@
<object class="IBPartialClassDescription">
<string key="className">KerberosAgentController</string>
<string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">fakeANewClient:</string>
+ <string key="NS.object.0">id</string>
+ </object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../Sources/kim/agent/mac/KerberosAgentController.h</string>
diff --git a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings
new file mode 100644
index 0000000000..6eb2109b23
--- /dev/null
+++ b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings
Binary files differ
diff --git a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
index bf65e894d4..3a1fb160ef 100644
--- a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
+++ b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
@@ -8,8 +8,8 @@
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="300428"/>
<integer value="300295"/>
+ <integer value="6"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -464,7 +464,6 @@
</object>
</object>
</object>
- <int key="NSSelectedIndex">1</int>
<bool key="NSPullDown">YES</bool>
<int key="NSPreferredEdge">2</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -818,7 +817,7 @@
<reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="870649207">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">604110336</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">OK</string>
<reference key="NSSupport" ref="604532625"/>
@@ -1653,6 +1652,30 @@
</object>
<int key="connectionID">300455</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">ticketOptionsOkButton</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="932240937"/>
+ </object>
+ <int key="connectionID">300459</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="623163777"/>
+ <reference key="destination" ref="262677138"/>
+ </object>
+ <int key="connectionID">300460</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="485004197"/>
+ <reference key="destination" ref="262677138"/>
+ </object>
+ <int key="connectionID">300461</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -2373,10 +2396,10 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{360, 291}, {427, 378}}</string>
+ <string>{{553, 305}, {427, 378}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{360, 291}, {427, 378}}</string>
- <integer value="0"/>
+ <string>{{553, 305}, {427, 378}}</string>
+ <reference ref="75542549"/>
<reference ref="75542549"/>
<string>{10000, 354}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2464,7 +2487,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300455</int>
+ <int key="maxID">300461</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -2547,6 +2570,7 @@
<string>nameField</string>
<string>realmField</string>
<string>selectIdentityButton</string>
+ <string>ticketOptionsOkButton</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -2565,6 +2589,7 @@
<string>NSTextField</string>
<string>NSTextField</string>
<string>NSButton</string>
+ <string>NSButton</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">