#import <Cocoa/Cocoa.h>
@class IPCClient;
+@class KerberosTimeFormatter;
@class BadgedImageView;
@interface AuthenticationController : NSWindowController {
IPCClient *associatedClient;
+ IBOutlet KerberosTimeFormatter *lifetimeFormatter;
+
IBOutlet NSView *containerView;
IBOutlet NSView *identityView;
IBOutlet NSView *passwordView;
IBOutlet BadgedImageView *errorBadge;
// Controls that need to be made key
- IBOutlet NSTextField *usernameField;
+ IBOutlet NSTextField *identityField;
IBOutlet NSTextField *passwordField;
IBOutlet NSTextField *samPromptField;
IBOutlet NSTextField *oldPasswordField;
IBOutlet NSSlider *validLifetimeSlider;
IBOutlet NSSlider *renewableLifetimeSlider;
+
+ NSMutableArray *favoriteIdentities;
+ NSMutableDictionary *favoriteOptions;
}
@property (readwrite, retain) IPCClient *associatedClient;
+@property (readwrite, retain) NSMutableArray *favoriteIdentities;
+@property (readwrite, retain) NSMutableDictionary *favoriteOptions;
- (void) setContent: (NSMutableDictionary *) newContent;
#import "AuthenticationController.h"
#import "IPCClient.h"
+#import "KerberosFormatters.h"
#import "BadgedImageView.h"
// to get kim_prompt_type enum
* 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 options_keypath @"content.options"
-
-#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 min_valid_keypath @"content.minValidLifetime"
-#define max_valid_keypath @"content.maxValidLifetime"
-#define min_renewable_keypath @"content.minRenewableLifetime"
-#define max_renewable_keypath @"content.maxRenewableLifetime"
-
-#define ACKVOContext @"authenticationController"
-
// localization keys and tables
#define ACLocalizationTable @"AuthenticationController"
@implementation AuthenticationController
@synthesize associatedClient;
+@synthesize favoriteIdentities;
+@synthesize favoriteOptions;
- (id) init
{
// We need to float over the loginwindow and SecurityAgent so use its hardcoded level.
[[self window] setLevel:2003];
+ lifetimeFormatter.displaySeconds = NO;
+ lifetimeFormatter.displayShortFormat = NO;
+
[glueController addObserver:self
- forKeyPath:username_keypath
+ forKeyPath:identity_string_keypath
options:NSKeyValueObservingOptionNew
context:ACKVOContext];
- [glueController addObserver:self
- forKeyPath:realm_keypath
- options:NSKeyValueObservingOptionNew
- context:ACKVOContext];
[glueController addObserver:self
forKeyPath:prompt_response_keypath
options:NSKeyValueObservingOptionNew
- (void) dealloc
{
- [glueController removeObserver:self forKeyPath:username_keypath];
- [glueController removeObserver:self forKeyPath:realm_keypath];
+ [glueController removeObserver:self forKeyPath:identity_string_keypath];
[glueController removeObserver:self forKeyPath:prompt_response_keypath];
[super dealloc];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
+ BOOL valid = NO;
+
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]];
+ if ([keyPath isEqualToString:identity_string_keypath]) {
+ valid = [KIMUtilities validateIdentity:[glueController valueForKeyPath:identity_string_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);
+ valid = ([[glueController valueForKeyPath:prompt_response_keypath] length] > 0);
[glueController setValue:[NSNumber numberWithBool:valid]
forKeyPath:enable_prompt_ok_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]);
+ valid = ([oldString length] > 0 && [newString length] > 0 &&
+ [verifyString length] > 0 && [newString isEqualToString:verifyString]);
[glueController setValue:[NSNumber numberWithBool:valid]
forKeyPath:change_password_ok_keypath];
}
- (void) showEnterIdentity
{
+ kim_error err = KIM_NO_ERROR;
NSString *key = (associatedClient.name) ? ACAppPrincReqKey : ACPrincReqKey;
NSString *message = [NSString stringWithFormat:
NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
associatedClient.name];
+ self.favoriteIdentities = [NSMutableArray array];
+ self.favoriteOptions = [NSMutableDictionary dictionary];
+ // get array of favorite identity strings and associated options
+
+ if (!err) {
+ kim_preferences preferences = NULL;
+ kim_options kimOptions = NULL;
+ kim_count i;
+ kim_count count = 0;
+
+ err = kim_preferences_create(&preferences);
+
+ if (!err) {
+ err = kim_preferences_get_number_of_favorite_identities(preferences,
+ &count);
+ }
+
+ for (i = 0; !err && i < count; i++) {
+ kim_identity kimIdentity = NULL;
+ kim_string display_string = NULL;
+ NSString *identityString = nil;
+
+ err = kim_preferences_get_favorite_identity_at_index(preferences,
+ i,
+ &kimIdentity,
+ &kimOptions);
+ if (!err) {
+ err = kim_identity_get_display_string(kimIdentity, &display_string);
+ }
+ if (!err && display_string) {
+ identityString = [NSString stringWithUTF8String:display_string];
+ [favoriteIdentities addObject:identityString];
+ }
+ if (!err) {
+ [favoriteOptions setObject:[KIMUtilities dictionaryForKimOptions:kimOptions]
+ forKey:identityString];
+ }
+
+ kim_options_free(&kimOptions);
+ kim_string_free (&display_string);
+ kim_identity_free (&kimIdentity);
+ }
+
+ kim_preferences_free(&preferences);
+ }
+
+ [glueController setValue:favoriteIdentities forKeyPath:favorite_strings_keypath];
+
// wake up the nib connections and adjust window size
[self window];
// set up controls with info from associatedClient
[glueController setValue:message
forKeyPath:message_keypath];
[self showWindow:nil];
- [[self window] makeFirstResponder:usernameField];
+ [[self window] makeFirstResponder:identityField];
}
- (void) showAuthPrompt
- (IBAction) showTicketOptions: (id) sender
{
+ NSDictionary *options = nil;
+ // if this is a favorite, try to load its default options
+ [identityField validateEditing];
+
+ options = [favoriteOptions valueForKey:[identityField stringValue]];
+
+ if (!options) {
+ options = [[[glueController valueForKeyPath:options_keypath] mutableCopy] autorelease];
+ }
+
+ // else fallback to options passed from client
// use a copy of the current options
- [ticketOptionsController setContent:
- [[[glueController valueForKeyPath:options_keypath] mutableCopy] autorelease]];
+ [ticketOptionsController setContent:options];
[ticketOptionsController setValue:[NSNumber numberWithInteger:[KIMUtilities minValidLifetime]]
forKeyPath:min_valid_keypath];
[ticketOptionsController setContent:nil];
} else {
// replace existing options with new
- [glueController setValue:[ticketOptionsController content] forKeyPath:options_keypath];
+ // add to favorites if not already in list
+
+ // replace options of existing if already in list
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+ kim_identity identity = NULL;
+ kim_options options = NULL;
+
+ [glueController setValue:[ticketOptionsController content]
+ forKeyPath:options_keypath];
+
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ err = kim_identity_create_from_string(&identity, [[identityField stringValue] UTF8String]);
+ }
+ if (!err) {
+ options = [KIMUtilities kimOptionsForDictionary:[ticketOptionsController content]];
+ }
+ if (!identity) { err = KIM_BAD_PRINCIPAL_STRING_ERR; }
+ if (!options) { err = KIM_BAD_OPTIONS_ERR; }
+
+ if (!err && identity) {
+ err = kim_preferences_remove_favorite_identity(prefs, identity);
+ }
+ if (!err && identity && options) {
+ err = kim_preferences_add_favorite_identity(prefs, identity, options);
+ }
+
+ if (!err) {
+ err = kim_preferences_synchronize(prefs);
+ }
+
+ kim_preferences_free(&prefs);
+ kim_options_free(&options);
+ kim_identity_free(&identity);
}
[ticketOptionsSheet orderOut:nil];
}
- (IBAction) enterIdentity: (id) sender
{
- NSString *usernameString = [glueController valueForKeyPath:username_keypath];
- NSString *realmString = [glueController valueForKeyPath:realm_keypath];
- NSString *identityString = [NSString stringWithFormat:@"%@@%@", usernameString, realmString];
+ NSString *identityString = [glueController valueForKeyPath:identity_string_keypath];
NSDictionary *options = [glueController valueForKeyPath:options_keypath];
- NSLog(@"%s options == %@", __FUNCTION__, options);
// the principal must already be valid to get this far
[associatedClient didEnterIdentity:identityString options:options];
-//
-// IPCClient.h
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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>
#import "KIMUtilities.h"
- (kim_error) handleError: (NSDictionary *) info;
- (void) didCancel;
-- (void) didSelectIdentity: (NSString *) identityString;
+- (void) didSelectIdentity: (NSString *) identityString options: (NSDictionary *) options;
- (void) didEnterIdentity: (NSString *) identityString options: (NSDictionary *) options;
- (void) didPromptForAuth: (NSString *) responseString saveResponse: (NSNumber *) saveResponse;
- (void) didChangePassword: (NSString *) oldPassword
-//
-// IPCClient.m
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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 "IPCClient.h"
#import "SelectIdentityController.h"
return 0;
}
-- (void) didSelectIdentity: (NSString *) identityString
+- (void) didSelectIdentity: (NSString *) identityString options: (NSDictionary *) options
{
[self.currentInfo setObject:identityString forKey:@"identity_string"];
+ [self.currentInfo setObject:options forKey:@"options"];
[KerberosAgentListener didSelectIdentity:self.currentInfo error:0];
if (self.kimIdentity) {
err = kim_identity_get_components_string(self.kimIdentity, &display_string);
}
-
+
if (!err && display_string) {
result = [NSString stringWithUTF8String:display_string];
}
[parts addObject:[NSString stringWithFormat:@"%d minutes", minutes]];
}
if ([parts count] == 0) {
- [parts addObject:@"0 lifetime"];
+ [parts addObject:@"0"];
}
return [parts componentsJoinedByString:@", "];
}
-//
-// KIMUtilities.h
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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>
#import <Kerberos/kim.h>
#define VALID_LIFETIME_INCREMENT (5 * 60)
#define RENEWABLE_LIFETIME_INCREMENT (15 * 60)
+#define client_name_keypath @"content.name"
+#define client_path_keypath @"content.path"
+
+#define identity_string_keypath @"content.identity_string"
+#define favorite_strings_keypath @"content.favorite_identity_strings"
+#define title_keypath @"content.title"
+#define message_keypath @"content.message"
+#define description_keypath @"content.description"
+
+#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 options_keypath @"content.options"
+
+#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 min_valid_keypath @"content.minValidLifetime"
+#define max_valid_keypath @"content.maxValidLifetime"
+#define min_renewable_keypath @"content.minRenewableLifetime"
+#define max_renewable_keypath @"content.maxRenewableLifetime"
+
+#define ACKVOContext @"authenticationController"
+
+
+
#define log_kim_error_to_console(err)\
{\
NSLog(@"%s got error %@", __FUNCTION__, [KIMUtilities stringForLastKIMError:err]);\
+ (BOOL) validatePrincipalWithName: (NSString *) name
realm: (NSString *) realm;
-+ (NSDictionary *) dictionaryForKimOptions: (kim_options) options;
++ (BOOL) validateIdentity: (NSString *) identityString;
++ (NSDictionary *) dictionaryForKimOptions: (kim_options) options;
+ (kim_options) kimOptionsForDictionary: (NSDictionary *) aDict;
++ (NSDictionary *) dictionaryForKimSelectionHints: (kim_selection_hints) hints;
+
+ (NSUInteger)minValidLifetime;
+ (NSUInteger)maxValidLifetime;
+ (NSUInteger)minRenewableLifetime;
-//
-// KIMUtilities.m
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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 "KIMUtilities.h"
realm: (NSString *) realm
{
kim_error err = KIM_NO_ERROR;
- kim_identity identity = NULL;
- NSString *principal = nil;
+ NSString *identityString = 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];
+ identityString = [[NSString alloc] initWithFormat:@"%@@%@", name, realm];
+ err = [KIMUtilities validateIdentity:identityString];
+ [identityString release];
+ }
+
+ return (err == KIM_NO_ERROR);
+}
+
++ (BOOL) validateIdentity: (NSString *) identityString
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_identity identity = NULL;
+ if (!identityString || [identityString length] <= 1) {
+ err = KIM_BAD_PRINCIPAL_STRING_ERR;
+ }
+ if (!err) {
+ err = kim_identity_create_from_string(&identity, [identityString UTF8String]);
}
if (!identity) {
err = KIM_BAD_PRINCIPAL_STRING_ERR;
return options;
}
++ (NSDictionary *) dictionaryForKimSelectionHints: (kim_selection_hints) hints
+{
+ kim_error err = KIM_NO_ERROR;
+
+ NSMutableDictionary *newDict = [NSMutableDictionary dictionaryWithCapacity:20];
+
+ kim_string explanation = NULL;
+ kim_options options = NULL;
+ kim_string service_identity = NULL;
+ kim_string client_realm = NULL;
+ kim_string user = NULL;
+ kim_string service_realm = NULL;
+ kim_string service = NULL;
+ kim_string server = NULL;
+
+ if (!err) {
+ err = kim_selection_hints_get_explanation(hints, &explanation);
+ [newDict setValue:(explanation) ? [NSString stringWithUTF8String:explanation] : @""
+ forKey:@"explanation"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_options(hints, &options);
+ [newDict setValue:[KIMUtilities dictionaryForKimOptions:options]
+ forKey:@"options"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_client_realm, &client_realm);
+ [newDict setValue:(client_realm) ? [NSString stringWithUTF8String:client_realm] : @""
+ forKey:@"client_realm"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_user, &user);
+ [newDict setValue:(user) ? [NSString stringWithUTF8String:user] : @""
+ forKey:@"user"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_service_realm, &service_realm);
+ [newDict setValue:(service_realm) ? [NSString stringWithUTF8String:service_realm] : @""
+ forKey:@"service_realm"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_service, &service);
+ [newDict setValue:(service) ? [NSString stringWithUTF8String:service] : @""
+ forKey:@"service"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_server, &server);
+ [newDict setValue:(server) ? [NSString stringWithUTF8String:server] : @""
+ forKey:@"server"];
+ }
+ if (!err) {
+ err = kim_selection_hints_get_hint(hints, kim_hint_key_service_identity, &service_identity);
+ [newDict setValue:(service_identity) ? [NSString stringWithUTF8String:service_identity] : @""
+ forKey:@"service_identity"];
+ }
+
+ return newDict;
+}
+
+ (NSUInteger)minValidLifetime
{
kim_error err = KIM_NO_ERROR;
#import "IPCClient.h"
#import "ServerDemux.h"
-#define SECONDS_BEFORE_AUTO_QUIT_ON_START 5
+#define SECONDS_BEFORE_AUTO_QUIT_ON_START 600
#define SECONDS_BEFORE_AUTO_QUIT_ON_NO_CLIENTS 1
@implementation KerberosAgentController
-//
-// KerberosAgentListener.h
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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>
#import <Kerberos/kim.h>
-//
-// KerberosAgentListener.m
-// Kerberos5
-//
-// Created by Justin Anderson on 9/28/08.
-// Copyright 2008 MIT. All rights reserved.
-//
+/*
+ * 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 "KerberosAgentListener.h"
#import "KIMUtilities.h"
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",
+ [KIMUtilities dictionaryForKimSelectionHints:hints], @"hints",
nil];
[[NSApp delegate] performSelectorOnMainThread:@selector(selectIdentity:)
options = [KIMUtilities kimOptionsForDictionary:[info objectForKey:@"options"]];
}
- log_kim_error_to_console(err);
- log_kim_error_to_console(error);
-
if (!err) {
err = kim_handle_reply_select_identity(reply_port, identity, options, error);
}
{
NSString *result = nil;
- if (anObject == nil || ![anObject respondsToSelector:@selector(timeIntervalSinceNow)]) {
- result = @"";
- }
- else {
- result = [self stringForLifetime:(time_t)[(NSDate *)anObject timeIntervalSinceNow]];
+ if (anObject) {
+ if ([anObject respondsToSelector:@selector(timeIntervalSinceNow)]) {
+ result = [self stringForLifetime:(time_t)[(NSDate *)anObject timeIntervalSinceNow]];
+ }
+ else if ([anObject respondsToSelector:@selector(unsignedIntegerValue)]) {
+ result = [self stringForLifetime:(time_t)[(NSNumber *)anObject unsignedIntegerValue]];
+ }
}
return result;
IBOutlet NSTextField *explanationTextField;
IBOutlet NSTableView *identityTableView;
- IBOutlet NSTableColumn *identityTableColumn;
IBOutlet NSButton *addIdentityButton;
IBOutlet NSPopUpButton *actionPopupButton;
IBOutlet NSButton *selectIdentityButton;
Identities *identities;
NSTimer *refreshTimer;
+ IBOutlet NSObjectController *glueController;
+
IBOutlet NSWindow *identityOptionsWindow;
IBOutlet NSObjectController *identityOptionsController;
- IBOutlet NSTextField *nameField;
- IBOutlet NSTextField *realmField;
+ IBOutlet NSTextField *identityField;
+ IBOutlet NSTextField *staticIdentityField;
+
+ IBOutlet NSSlider *validLifetimeSlider;
+ IBOutlet NSSlider *renewableLifetimeSlider;
IBOutlet NSButton *ticketOptionsOkButton;
}
@property (readwrite, retain) IPCClient *associatedClient;
+- (void) setContent: (NSMutableDictionary *) newContent;
+
- (IBAction) newIdentity: (id) sender;
- (IBAction) addToFavorites: (id) sender;
- (IBAction) removeFromFavorites: (id) sender;
- (IBAction) select: (id) sender;
- (IBAction) cancel: (id) sender;
+- (IBAction) sliderDidChange: (id) sender;
- (void)controlTextDidChange:(NSNotification *)aNotification;
- (void) showOptions: (NSString *) contextInfo;
// ---------------------------------------------------------------------------
-- (id) initWithWindowNibName: (NSString *) windowNibName
-{
- if ((self = [super initWithWindowNibName: windowNibName])) {
- }
-
- return self;
-}
-
-// ---------------------------------------------------------------------------
-
- (id) init
{
return [self initWithWindowNibName: @"SelectIdentity"];
associatedClient.name];
}
[headerTextField setStringValue:message];
+ [explanationTextField setStringValue:@"explanation!"];
}
// ---------------------------------------------------------------------------
+- (void) setContent: (NSMutableDictionary *) newContent
+{
+ [self window]; // wake up the nib connections
+// [glueController setContent:newContent];
+}
+
+// ---------------------------------------------------------------------------
- (IBAction) newIdentity: (id) sender
{
}
selectedIdentity = [[identityArrayController selectedObjects] lastObject];
- [associatedClient didSelectIdentity: selectedIdentity.principalString];
+ [associatedClient didSelectIdentity: selectedIdentity.principalString
+ options: [identityOptionsController valueForKeyPath:@"content.options"]];
}
// ---------------------------------------------------------------------------
- (IBAction) cancel: (id) sender
{
[associatedClient didCancel];
+ [self close];
}
// ---------------------------------------------------------------------------
- (IBAction) doneOptions: (id) sender
{
- Identity *anIdentity = identityOptionsController.content;
+// Identity *anIdentity = identityOptionsController.content;
- [anIdentity setPrincipalComponents: [nameField stringValue]
- realm: [realmField stringValue]];
[NSApp endSheet: identityOptionsWindow];
}
+- (IBAction) sliderDidChange: (id) sender
+{
+
+}
+
- (void)controlTextDidChange:(NSNotification *)aNotification
{
- BOOL valid = [KIMUtilities validatePrincipalWithName:[nameField stringValue]
- realm:[realmField stringValue]];
- [ticketOptionsOkButton setEnabled:valid];
+// BOOL valid = [KIMUtilities validateIdentity:];
+ [ticketOptionsOkButton setEnabled:false];
[ticketOptionsOkButton setNeedsDisplay];
}
{
Identity *anIdentity = identityOptionsController.content;
- [nameField setStringValue:anIdentity.componentsString];
- [realmField setStringValue:anIdentity.realmString];
+ [identityField setStringValue:anIdentity.principalString];
+ [staticIdentityField setStringValue:anIdentity.principalString];
+
+ // use a copy of the current options
+ [identityOptionsController setContent:
+ [[[glueController valueForKeyPath:options_keypath] mutableCopy] autorelease]];
+
+ [identityOptionsController setValue:[NSNumber numberWithInteger:[KIMUtilities minValidLifetime]]
+ forKeyPath:min_valid_keypath];
+ [identityOptionsController setValue:[NSNumber numberWithInteger:[KIMUtilities maxValidLifetime]]
+ forKeyPath:max_valid_keypath];
+ [identityOptionsController setValue:[NSNumber numberWithInteger:[KIMUtilities minRenewableLifetime]]
+ forKeyPath:min_renewable_keypath];
+ [identityOptionsController setValue:[NSNumber numberWithInteger:[KIMUtilities maxRenewableLifetime]]
+ forKeyPath:max_renewable_keypath];
+
+ [validLifetimeSlider setIntegerValue:
+ [[identityOptionsController valueForKeyPath:valid_lifetime_keypath] integerValue]];
+ [renewableLifetimeSlider setIntegerValue:
+ [[identityOptionsController valueForKeyPath:renewal_lifetime_keypath] integerValue]];
+ [self sliderDidChange:validLifetimeSlider];
+ [self sliderDidChange:renewableLifetimeSlider];
[NSApp beginSheet: identityOptionsWindow
modalForWindow: [self window]
/* Can be empty string "" if there is no identity */
if (!err && !identity_string[0]) {
k5_ipc_stream_free_string (identity_string);
- identity_string = KIM_IDENTITY_ANY;
+ identity_string = NULL;
}
}
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="20"/>
- <integer value="300314"/>
- <integer value="300193"/>
- <integer value="300175"/>
- <integer value="300274"/>
+ <integer value="300157"/>
<integer value="300420"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<string>max_renewal_lifetime</string>
<string>max_valid_lifetime</string>
<string>min_valid_lifetime</string>
+ <string>identity_string</string>
+ <string>favorite_identity_strings</string>
</object>
<bool key="NSEditable">YES</bool>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
<object class="NSTextField" id="498665267">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">264</int>
- <string key="NSFrame">{{101, 126}, {382, 54}}</string>
+ <string key="NSFrame">{{101, 103}, {382, 54}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="645367368">
</object>
</object>
</object>
- <object class="NSTextField" id="409092758">
+ <object class="NSComboBox" id="529434335">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">290</int>
- <string key="NSFrame">{{104, 88}, {376, 22}}</string>
+ <string key="NSFrame">{{104, 59}, {379, 26}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="951097344">
- <int key="NSCellFlags">-1804468671</int>
+ <object class="NSComboBoxCell" key="NSCell" id="100557652">
+ <int key="NSCellFlags">343014976</int>
<int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
+ <object class="NSMutableString" key="NSContents" id="645290524">
+ <characters key="NS.bytes"/>
+ </object>
<reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="409092758"/>
+ <reference key="NSControlView" ref="529434335"/>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSColor" key="NSBackgroundColor" id="490771653">
<int key="NSColorSpace">6</int>
<bytes key="NSWhite">MQA</bytes>
</object>
</object>
- <object class="NSColor" key="NSTextColor" id="955928389">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <reference key="NSColor" ref="18538584"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="930407441">
- <reference key="NSNextResponder" ref="92892041"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{17, 90}, {82, 17}}</string>
- <reference key="NSSuperview" ref="92892041"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="990670119">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">71303168</int>
- <string key="NSContents">Name:</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="930407441"/>
- <reference key="NSBackgroundColor" ref="876444531"/>
- <reference key="NSTextColor" ref="883746258"/>
- </object>
- </object>
- <object class="NSComboBox" id="529434335">
- <reference key="NSNextResponder" ref="92892041"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{104, 56}, {379, 26}}</string>
- <reference key="NSSuperview" ref="92892041"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSComboBoxCell" key="NSCell" id="100557652">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">272630784</int>
- <object class="NSMutableString" key="NSContents" id="645290524">
- <characters key="NS.bytes"/>
- </object>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="529434335"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="490771653"/>
<reference key="NSTextColor" ref="883746258"/>
<int key="NSVisibleItemCount">5</int>
<bool key="NSHasVerticalScroller">YES</bool>
+ <bool key="NSCompletes">YES</bool>
<reference key="NSDelegate" ref="529434335"/>
<object class="NSComboTableView" key="NSTableView" id="474321365">
<reference key="NSNextResponder"/>
<object class="NSTextField" id="238778309">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">292</int>
- <string key="NSFrame">{{17, 61}, {82, 17}}</string>
+ <string key="NSFrame">{{17, 64}, {82, 17}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1073582594">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">71303168</int>
- <string key="NSContents">Realm:</string>
+ <string key="NSContents">Identity:</string>
<reference key="NSSupport" ref="604532625"/>
<reference key="NSControlView" ref="238778309"/>
<reference key="NSBackgroundColor" ref="876444531"/>
<object class="NSButton" id="207178735">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">289</int>
- <string key="NSFrame">{{388, 12}, {98, 32}}</string>
+ <string key="NSFrame">{{388, 15}, {98, 32}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="563505192">
<object class="NSButton" id="523041784">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">289</int>
- <string key="NSFrame">{{295, 12}, {93, 32}}</string>
+ <string key="NSFrame">{{295, 15}, {93, 32}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="927675304">
<object class="NSCustomView" id="1001544034">
<reference key="NSNextResponder" ref="92892041"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 126}, {64, 64}}</string>
+ <string key="NSFrame">{{20, 103}, {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">292</int>
- <string key="NSFrame">{{20, 17}, {38, 26}}</string>
+ <string key="NSFrame">{{20, 20}, {38, 26}}</string>
<reference key="NSSuperview" ref="92892041"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="690863814">
</object>
</object>
</object>
- <string key="NSFrameSize">{500, 210}</string>
+ <string key="NSFrameSize">{500, 187}</string>
<reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{104, 82}, {376, 22}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="508869457">
<int key="NSCellFlags">-1804468671</int>
<reference key="NSControlView" ref="225475172"/>
<bool key="NSDrawsBackground">YES</bool>
<reference key="NSBackgroundColor" ref="490771653"/>
- <reference key="NSTextColor" ref="955928389"/>
+ <object class="NSColor" key="NSTextColor" id="955928389">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="18538584"/>
+ </object>
</object>
</object>
<object class="NSButton" id="133507311">
<int key="NSvFlags">289</int>
<string key="NSFrame">{{388, 12}, {98, 32}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="200893597">
<int key="NSCellFlags">67239424</int>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{295, 12}, {93, 32}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="935364959">
<int key="NSCellFlags">67239424</int>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{101, 126}, {382, 41}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="999660494">
<int key="NSCellFlags">67239424</int>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 84}, {80, 17}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="916263740">
<int key="NSCellFlags">68288064</int>
<int key="NSvFlags">290</int>
<string key="NSFrame">{{102, 58}, {380, 18}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="883697888">
<int key="NSCellFlags">-2080244224</int>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 126}, {64, 64}}</string>
<reference key="NSSuperview" ref="866582848"/>
+ <reference key="NSWindow"/>
<string key="NSClassName">BadgedImageView</string>
</object>
</object>
<string key="NSFrameSize">{500, 210}</string>
<reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="898191415">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<string key="NSFrameSize">{500, 210}</string>
- <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="60326189">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">286</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<string key="NSFrameSize">{500, 230}</string>
- <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="861423802">
<string key="NSWindowContentMaxSize">{600, 400}</string>
<string key="NSWindowContentMinSize">{484, 199}</string>
<object class="NSView" key="NSWindowView" id="632526042">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{500, 210}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{484, 221}</string>
<string key="NSMinSize">{430, 305}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
+ <object class="NSCustomObject" id="752049494">
+ <string key="NSClassName">KerberosTimeFormatter</string>
+ </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">nextKeyView</string>
- <reference key="source" ref="409092758"/>
- <reference key="destination" ref="529434335"/>
- </object>
- <int key="connectionID">300173</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">nextKeyView</string>
- <reference key="source" ref="529434335"/>
- <reference key="destination" ref="409092758"/>
- </object>
- <int key="connectionID">300174</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">identityView</string>
</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>
</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>
</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>
<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"/>
+ <integer value="1" key="NS.object.0" id="9"/>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">300497</int>
</object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: selection.renewal_lifetime</string>
- <reference key="source" ref="332956369"/>
- <reference key="destination" ref="633725892"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="332956369"/>
- <reference key="NSDestination" ref="633725892"/>
- <string key="NSLabel">value: selection.renewal_lifetime</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">selection.renewal_lifetime</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300500</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: selection.valid_lifetime</string>
- <reference key="source" ref="523287828"/>
- <reference key="destination" ref="633725892"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="523287828"/>
- <reference key="NSDestination" ref="633725892"/>
- <string key="NSLabel">value: selection.valid_lifetime</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">selection.valid_lifetime</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300501</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showTicketOptions:</string>
</object>
<int key="connectionID">300509</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">formatter</string>
+ <reference key="source" ref="332956369"/>
+ <reference key="destination" ref="752049494"/>
+ </object>
+ <int key="connectionID">300511</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identityField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="529434335"/>
+ </object>
+ <int key="connectionID">300513</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">contentValues: selection.favorite_identity_strings</string>
+ <reference key="source" ref="529434335"/>
+ <reference key="destination" ref="57033499"/>
+ <object class="NSNibBindingConnector" key="connector" id="407856422">
+ <reference key="NSSource" ref="529434335"/>
+ <reference key="NSDestination" ref="57033499"/>
+ <string key="NSLabel">contentValues: selection.favorite_identity_strings</string>
+ <string key="NSBinding">contentValues</string>
+ <string key="NSKeyPath">selection.favorite_identity_strings</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300515</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.identity_string</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.identity_string</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.identity_string</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <integer value="1" key="NS.object.0" id="5"/>
+ </object>
+ <reference key="NSPreviousConnector" ref="407856422"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300516</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.valid_lifetime</string>
+ <reference key="source" ref="523287828"/>
+ <reference key="destination" ref="633725892"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="523287828"/>
+ <reference key="NSDestination" ref="633725892"/>
+ <string key="NSLabel">value: selection.valid_lifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.valid_lifetime</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="5"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300517</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.renewal_lifetime</string>
+ <reference key="source" ref="332956369"/>
+ <reference key="destination" ref="633725892"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="332956369"/>
+ <reference key="NSDestination" ref="633725892"/>
+ <string key="NSLabel">value: selection.renewal_lifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.renewal_lifetime</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+ <reference key="NS.object.0" ref="5"/>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">lifetimeFormatter</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="752049494"/>
+ </object>
+ <int key="connectionID">300519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">formatter</string>
+ <reference key="source" ref="523287828"/>
+ <reference key="destination" ref="752049494"/>
+ </object>
+ <int key="connectionID">300520</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<reference ref="523041784"/>
<reference ref="207178735"/>
<reference ref="238778309"/>
- <reference ref="409092758"/>
- <reference ref="930407441"/>
<reference ref="1001544034"/>
<reference ref="529434335"/>
<reference ref="498665267"/>
</object>
<reference key="parent" ref="92892041"/>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">300159</int>
- <reference key="object" ref="409092758"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="951097344"/>
- </object>
- <reference key="parent" ref="92892041"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300160</int>
- <reference key="object" ref="930407441"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="990670119"/>
- </object>
- <reference key="parent" ref="92892041"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">300165</int>
<reference key="object" ref="1001544034"/>
<reference key="object" ref="100557652"/>
<reference key="parent" ref="529434335"/>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">300170</int>
- <reference key="object" ref="990670119"/>
- <reference key="parent" ref="930407441"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300171</int>
- <reference key="object" ref="951097344"/>
- <reference key="parent" ref="409092758"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">300168</int>
<reference key="object" ref="1073582594"/>
<reference ref="964499406"/>
<reference ref="198913348"/>
<reference ref="594182616"/>
- <reference ref="523287828"/>
<reference ref="318596865"/>
<reference ref="486016405"/>
+ <reference ref="523287828"/>
</object>
<reference key="parent" ref="102029948"/>
</object>
<reference key="object" ref="744766544"/>
<reference key="parent" ref="594991555"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300510</int>
+ <reference key="object" ref="752049494"/>
+ <reference key="parent" ref="0"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<string>300157.IBPluginDependency</string>
<string>300158.IBPluginDependency</string>
<string>300158.ImportedFromIB2</string>
- <string>300159.IBPluginDependency</string>
- <string>300159.ImportedFromIB2</string>
- <string>300160.IBPluginDependency</string>
- <string>300160.ImportedFromIB2</string>
<string>300161.IBPluginDependency</string>
<string>300161.ImportedFromIB2</string>
<string>300162.IBPluginDependency</string>
<string>300464.IBPluginDependency</string>
<string>300469.IBPluginDependency</string>
<string>300502.IBPluginDependency</string>
+ <string>300510.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{484, 199}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>{{602, 432}, {500, 210}}</string>
+ <string>{{602, 455}, {500, 187}}</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>
- <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>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>{{979, 209}, {430, 283}}</string>
+ <string>{{647, 412}, {430, 283}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{979, 209}, {430, 283}}</string>
+ <string>{{647, 412}, {430, 283}}</string>
<reference ref="9"/>
<reference ref="8"/>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300509</int>
+ <int key="maxID">300520</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<string>errorView</string>
<string>expiredPasswordView</string>
<string>glueController</string>
+ <string>identityField</string>
<string>identityView</string>
+ <string>lifetimeFormatter</string>
<string>oldPasswordField</string>
<string>passwordBadge</string>
<string>passwordField</string>
<string>samView</string>
<string>ticketOptionsController</string>
<string>ticketOptionsSheet</string>
- <string>usernameField</string>
<string>validLifetimeSlider</string>
</object>
<object class="NSMutableArray" key="dict.values">
<string>NSView</string>
<string>NSView</string>
<string>NSObjectController</string>
+ <string>NSTextField</string>
<string>NSView</string>
+ <string>KerberosTimeFormatter</string>
<string>NSTextField</string>
<string>BadgedImageView</string>
<string>NSTextField</string>
<string>NSView</string>
<string>NSObjectController</string>
<string>NSWindow</string>
- <string>NSTextField</string>
<string>NSSlider</string>
</object>
</object>
<string key="minorKey"/>
</object>
</object>
+ <object class="IBPartialClassDescription">
+ <string key="className">KerberosTimeFormatter</string>
+ <string key="superclassName">NSFormatter</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../Sources/kim/agent/mac/KerberosFormatters.h</string>
+ </object>
+ </object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="300295"/>
<integer value="6"/>
+ <integer value="300301"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSWindowTemplate" id="370461416">
<int key="NSWindowStyleMask">7</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 132}, {427, 378}}</string>
+ <string key="NSWindowRect">{{196, 162}, {427, 348}}</string>
<int key="NSWTFlags">603979776</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSWindow</string>
<object class="NSTextField" id="485004197">
<reference key="NSNextResponder" ref="1019868804"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{69, 336}, {338, 22}}</string>
+ <string key="NSFrame">{{78, 306}, {338, 22}}</string>
<reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1047482753">
<string key="NSColorName">textBackgroundColor</string>
<reference key="NSColor" ref="591379363"/>
</object>
- <object class="NSColor" key="NSTextColor" id="894652286">
+ <object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textColor</string>
<object class="NSTextField" id="404880622">
<reference key="NSNextResponder" ref="1019868804"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{19, 338}, {45, 17}}</string>
+ <string key="NSFrame">{{17, 308}, {60, 17}}</string>
<reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="775341038">
<int key="NSCellFlags">68288064</int>
<int key="NSCellFlags2">71304192</int>
- <string key="NSContents">Name:</string>
+ <string key="NSContents">Identity: </string>
<reference key="NSSupport" ref="604532625"/>
<reference key="NSControlView" ref="404880622"/>
<reference key="NSBackgroundColor" ref="876444531"/>
<reference key="NSTextColor" ref="883746258"/>
</object>
</object>
- <object class="NSTextField" id="623163777">
- <reference key="NSNextResponder" ref="1019868804"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{69, 306}, {338, 22}}</string>
- <reference key="NSSuperview" ref="1019868804"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="327568348">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="604532625"/>
- <string key="NSPlaceholderString">REALM.ORG</string>
- <reference key="NSControlView" ref="623163777"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="830301085"/>
- <reference key="NSTextColor" ref="894652286"/>
- </object>
- </object>
- <object class="NSTextField" id="609534695">
- <reference key="NSNextResponder" ref="1019868804"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 308}, {47, 17}}</string>
- <reference key="NSSuperview" ref="1019868804"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="424319976">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">71304192</int>
- <string key="NSContents">Realm:</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="609534695"/>
- <reference key="NSBackgroundColor" ref="876444531"/>
- <reference key="NSTextColor" ref="883746258"/>
- </object>
- </object>
<object class="NSBox" id="282101470">
<reference key="NSNextResponder" ref="1019868804"/>
<int key="NSvFlags">266</int>
<object class="NSTextField" id="958176038">
<reference key="NSNextResponder" ref="1019868804"/>
<int key="NSvFlags">-2147483380</int>
- <string key="NSFrame">{{66, 338}, {344, 17}}</string>
+ <string key="NSFrame">{{75, 308}, {344, 17}}</string>
<reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="196100637">
<reference key="NSTextColor" ref="883746258"/>
</object>
</object>
- <object class="NSTextField" id="546844125">
- <reference key="NSNextResponder" ref="1019868804"/>
- <int key="NSvFlags">-2147483380</int>
- <string key="NSFrame">{{66, 308}, {344, 17}}</string>
- <reference key="NSSuperview" ref="1019868804"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="725579124">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Label</string>
- <reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="546844125"/>
- <reference key="NSBackgroundColor" ref="876444531"/>
- <reference key="NSTextColor" ref="883746258"/>
- </object>
- </object>
</object>
- <string key="NSFrameSize">{427, 378}</string>
+ <string key="NSFrameSize">{427, 348}</string>
<reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<object class="NSObjectController" id="196152721">
<object class="NSMutableArray" key="NSDeclaredKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>realmString</string>
- <string>isForwardable</string>
- <string>isProxiable</string>
- <string>isRenewable</string>
+ <string>forwardable</string>
+ <string>renewable</string>
<string>renewableLifetime</string>
- <string>componentsString</string>
+ <string>identityString</string>
<string>favorite</string>
- <string>isAddressless</string>
+ <string>addressless</string>
<string>validLifetime</string>
<string>renewableLifetimeString</string>
<string>validLifetimeString</string>
<string>hasCCache</string>
+ <string>minValidLifetime</string>
+ <string>maxValidLifetime</string>
+ <string>maxRenewableLifetime</string>
</object>
<string key="NSObjectClassName">Identity</string>
<bool key="NSEditable">YES</bool>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
</object>
+ <object class="NSObjectController" id="252123121">
+ <bool key="NSEditable">YES</bool>
+ <object class="_NSManagedProxy" key="_NSManagedProxy"/>
+ </object>
<object class="NSObjectController" id="1031761104">
<object class="NSMutableArray" key="NSDeclaredKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>maximumRenewableLifetime</string>
<string>favorite</string>
<string>identities</string>
+ <string>minRenewableLifetime</string>
</object>
<string key="NSObjectClassName">Identities</string>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
</object>
<int key="connectionID">300369</int>
</object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">maxValue: selection.maximumValidLifetime</string>
- <reference key="source" ref="552234083"/>
- <reference key="destination" ref="1031761104"/>
- <object class="NSNibBindingConnector" key="connector" id="716397596">
- <reference key="NSSource" ref="552234083"/>
- <reference key="NSDestination" ref="1031761104"/>
- <string key="NSLabel">maxValue: selection.maximumValidLifetime</string>
- <string key="NSBinding">maxValue</string>
- <string key="NSKeyPath">selection.maximumValidLifetime</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300372</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">minValue: selection.minimumValidLifetime</string>
- <reference key="source" ref="552234083"/>
- <reference key="destination" ref="1031761104"/>
- <object class="NSNibBindingConnector" key="connector" id="445222138">
- <reference key="NSSource" ref="552234083"/>
- <reference key="NSDestination" ref="1031761104"/>
- <string key="NSLabel">minValue: selection.minimumValidLifetime</string>
- <string key="NSBinding">minValue</string>
- <string key="NSKeyPath">selection.minimumValidLifetime</string>
- <reference key="NSPreviousConnector" ref="716397596"/>
- <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.validLifetime</string>
- <reference key="source" ref="552234083"/>
- <reference key="destination" ref="196152721"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="552234083"/>
- <reference key="NSDestination" ref="196152721"/>
- <string key="NSLabel">value: selection.validLifetime</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">selection.validLifetime</string>
- <reference key="NSPreviousConnector" ref="445222138"/>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300378</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">identitiesController</string>
</object>
<int key="connectionID">300380</int>
</object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">maxValue: selection.maximumRenewableLifetime</string>
- <reference key="source" ref="373804676"/>
- <reference key="destination" ref="1031761104"/>
- <object class="NSNibBindingConnector" key="connector" id="436583425">
- <reference key="NSSource" ref="373804676"/>
- <reference key="NSDestination" ref="1031761104"/>
- <string key="NSLabel">maxValue: selection.maximumRenewableLifetime</string>
- <string key="NSBinding">maxValue</string>
- <string key="NSKeyPath">selection.maximumRenewableLifetime</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300381</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">minValue: selection.minimumRenewableLifetime</string>
- <reference key="source" ref="373804676"/>
- <reference key="destination" ref="1031761104"/>
- <object class="NSNibBindingConnector" key="connector" id="601981852">
- <reference key="NSSource" ref="373804676"/>
- <reference key="NSDestination" ref="1031761104"/>
- <string key="NSLabel">minValue: selection.minimumRenewableLifetime</string>
- <string key="NSBinding">minValue</string>
- <string key="NSKeyPath">selection.minimumRenewableLifetime</string>
- <reference key="NSPreviousConnector" ref="436583425"/>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300384</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: selection.renewableLifetime</string>
- <reference key="source" ref="373804676"/>
- <reference key="destination" ref="196152721"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="373804676"/>
- <reference key="NSDestination" ref="196152721"/>
- <string key="NSLabel">value: selection.renewableLifetime</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">selection.renewableLifetime</string>
- <reference key="NSPreviousConnector" ref="601981852"/>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300385</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: selection.renewableLifetimeString</string>
</object>
<int key="connectionID">300388</int>
</object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">nameField</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="485004197"/>
- </object>
- <int key="connectionID">300396</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">realmField</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="623163777"/>
- </object>
- <int key="connectionID">300397</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: selection.componentsString</string>
</object>
<int key="connectionID">300404</int>
</object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: selection.realmString</string>
- <reference key="source" ref="546844125"/>
- <reference key="destination" ref="196152721"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="546844125"/>
- <reference key="NSDestination" ref="196152721"/>
- <string key="NSLabel">value: selection.realmString</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">selection.realmString</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">hidden: selection.hasCCache</string>
- <reference key="source" ref="623163777"/>
- <reference key="destination" ref="196152721"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="623163777"/>
- <reference key="NSDestination" ref="196152721"/>
- <string key="NSLabel">hidden: selection.hasCCache</string>
- <string key="NSBinding">hidden</string>
- <string key="NSKeyPath">selection.hasCCache</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">300419</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">hidden: selection.hasCCache</string>
- <reference key="source" ref="546844125"/>
- <reference key="destination" ref="196152721"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="546844125"/>
- <reference key="NSDestination" ref="196152721"/>
- <string key="NSLabel">hidden: selection.hasCCache</string>
- <string key="NSBinding">hidden</string>
- <string key="NSKeyPath">selection.hasCCache</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">300420</int>
- </object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: selection.hasCCache</string>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
- <reference key="source" ref="623163777"/>
+ <reference key="source" ref="485004197"/>
<reference key="destination" ref="262677138"/>
</object>
- <int key="connectionID">300460</int>
+ <int key="connectionID">300461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.maxValidLifetime</string>
+ <reference key="source" ref="552234083"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector" id="1045274898">
+ <reference key="NSSource" ref="552234083"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">maxValue: selection.maxValidLifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.maxValidLifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300470</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.minValidLifetime</string>
+ <reference key="source" ref="552234083"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="552234083"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">minValue: selection.minValidLifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.minValidLifetime</string>
+ <reference key="NSPreviousConnector" ref="1045274898"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300471</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"/>
+ <string key="label">validLifetimeSlider</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="552234083"/>
</object>
- <int key="connectionID">300461</int>
+ <int key="connectionID">300473</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">renewableLifetimeSlider</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="373804676"/>
+ </object>
+ <int key="connectionID">300474</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sliderDidChange:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="552234083"/>
+ </object>
+ <int key="connectionID">300475</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sliderDidChange:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="373804676"/>
+ </object>
+ <int key="connectionID">300476</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.maxRenewableLifetime</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector" id="992990082">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">maxValue: selection.maxRenewableLifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.maxRenewableLifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300481</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.minRenewableLifetime</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">minValue: selection.minRenewableLifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.minRenewableLifetime</string>
+ <reference key="NSPreviousConnector" ref="992990082"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300482</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">staticIdentityField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="958176038"/>
+ </object>
+ <int key="connectionID">300483</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identityField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="485004197"/>
+ </object>
+ <int key="connectionID">300484</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<reference key="object" ref="1019868804"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="609534695"/>
- <reference ref="623163777"/>
- <reference ref="404880622"/>
- <reference ref="485004197"/>
<reference ref="932240937"/>
<reference ref="871834199"/>
<reference ref="282101470"/>
<reference ref="669516699"/>
<reference ref="958176038"/>
- <reference ref="546844125"/>
+ <reference ref="485004197"/>
+ <reference ref="404880622"/>
</object>
<reference key="parent" ref="370461416"/>
</object>
</object>
<reference key="parent" ref="1019868804"/>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">300298</int>
- <reference key="object" ref="609534695"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="424319976"/>
- </object>
- <reference key="parent" ref="1019868804"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300299</int>
- <reference key="object" ref="623163777"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="327568348"/>
- </object>
- <reference key="parent" ref="1019868804"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">300300</int>
<reference key="object" ref="404880622"/>
<reference key="object" ref="775341038"/>
<reference key="parent" ref="404880622"/>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">300304</int>
- <reference key="object" ref="327568348"/>
- <reference key="parent" ref="623163777"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300305</int>
- <reference key="object" ref="424319976"/>
- <reference key="parent" ref="609534695"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">300307</int>
<reference key="object" ref="373804676"/>
<reference key="parent" ref="0"/>
<string key="objectName">Identities Controller</string>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">300402</int>
- <reference key="object" ref="958176038"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="196100637"/>
- </object>
- <reference key="parent" ref="1019868804"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300403</int>
- <reference key="object" ref="196100637"/>
- <reference key="parent" ref="958176038"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300407</int>
- <reference key="object" ref="546844125"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="725579124"/>
- </object>
- <reference key="parent" ref="1019868804"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300408</int>
- <reference key="object" ref="725579124"/>
- <reference key="parent" ref="546844125"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">300426</int>
<reference key="object" ref="263312988"/>
<reference key="object" ref="778570067"/>
<reference key="parent" ref="600123164"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300402</int>
+ <reference key="object" ref="958176038"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="196100637"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300403</int>
+ <reference key="object" ref="196100637"/>
+ <reference key="parent" ref="958176038"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300462</int>
+ <reference key="object" ref="252123121"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Glue Controller</string>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<string>300295.IBPluginDependency</string>
<string>300296.IBPluginDependency</string>
<string>300296.ImportedFromIB2</string>
- <string>300298.IBPluginDependency</string>
- <string>300299.IBPluginDependency</string>
<string>300300.IBPluginDependency</string>
<string>300301.IBPluginDependency</string>
<string>300302.IBPluginDependency</string>
<string>300303.IBPluginDependency</string>
- <string>300304.IBPluginDependency</string>
- <string>300305.IBPluginDependency</string>
<string>300307.IBPluginDependency</string>
<string>300307.ImportedFromIB2</string>
<string>300308.IBPluginDependency</string>
<string>300370.IBPluginDependency</string>
<string>300402.IBPluginDependency</string>
<string>300403.IBPluginDependency</string>
- <string>300407.IBPluginDependency</string>
- <string>300408.IBPluginDependency</string>
<string>300426.IBPluginDependency</string>
<string>300427.IBPluginDependency</string>
<string>300428.IBEditorWindowLastContentRect</string>
<string>300430.IBPluginDependency</string>
<string>300431.IBPluginDependency</string>
<string>300432.IBPluginDependency</string>
+ <string>300462.IBPluginDependency</string>
<string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string>
<string>5.IBWindowTemplateEditedContentRect</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{553, 305}, {427, 378}}</string>
+ <string>{{553, 335}, {427, 348}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{553, 305}, {427, 378}}</string>
+ <string>{{553, 335}, {427, 348}}</string>
<reference ref="75542549"/>
<reference ref="75542549"/>
<string>{10000, 354}</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>
- <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>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{535, 102}, {198, 83}}</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>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{499, 142}, {491, 316}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{499, 142}, {491, 316}}</string>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300461</int>
+ <int key="maxID">300484</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<string>removeFromFavorites:</string>
<string>resetOptions:</string>
<string>select:</string>
+ <string>sliderDidChange:</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>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string>addIdentityButton</string>
<string>cancelButton</string>
<string>explanationTextField</string>
+ <string>glueController</string>
<string>headerTextField</string>
<string>identitiesController</string>
<string>identityArrayController</string>
+ <string>identityField</string>
<string>identityOptionsController</string>
<string>identityOptionsWindow</string>
- <string>identityTableColumn</string>
<string>identityTableView</string>
<string>kerberosIconImageView</string>
- <string>nameField</string>
- <string>realmField</string>
+ <string>renewableLifetimeSlider</string>
<string>selectIdentityButton</string>
+ <string>staticIdentityField</string>
<string>ticketOptionsOkButton</string>
+ <string>validLifetimeSlider</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSButton</string>
<string>NSButton</string>
<string>NSTextField</string>
+ <string>NSObjectController</string>
<string>NSTextField</string>
<string>NSObjectController</string>
<string>NSArrayController</string>
+ <string>NSTextField</string>
<string>NSObjectController</string>
<string>NSWindow</string>
- <string>NSTableColumn</string>
<string>NSTableView</string>
<string>BadgedImageView</string>
- <string>NSTextField</string>
- <string>NSTextField</string>
+ <string>NSSlider</string>
<string>NSButton</string>
+ <string>NSTextField</string>
<string>NSButton</string>
+ <string>NSSlider</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">