summaryrefslogtreecommitdiffstats
path: root/src/kim/agent/mac
diff options
context:
space:
mode:
authorAlexandra Ellwood <lxs@mit.edu>2008-10-01 15:35:48 +0000
committerAlexandra Ellwood <lxs@mit.edu>2008-10-01 15:35:48 +0000
commit3f0979ee8bf09c9d5190c56f9facdcebb17a7680 (patch)
treeb27699c9208cfd180485037dbcd7fbd7d0330cd8 /src/kim/agent/mac
parent8294739d8cbc7b91ae11c0fb8fbb3c918bb90348 (diff)
downloadkrb5-3f0979ee8bf09c9d5190c56f9facdcebb17a7680.tar.gz
krb5-3f0979ee8bf09c9d5190c56f9facdcebb17a7680.tar.xz
krb5-3f0979ee8bf09c9d5190c56f9facdcebb17a7680.zip
Support for passing options back and forth for enter_identity and
hints back for select_identity. ticket: 6055 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20794 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kim/agent/mac')
-rw-r--r--src/kim/agent/mac/KerberosAgentListener.m29
-rw-r--r--src/kim/agent/mac/ServerDemux.h2
-rw-r--r--src/kim/agent/mac/ServerDemux.m16
3 files changed, 43 insertions, 4 deletions
diff --git a/src/kim/agent/mac/KerberosAgentListener.m b/src/kim/agent/mac/KerberosAgentListener.m
index f76599726..cc634e2cf 100644
--- a/src/kim/agent/mac/KerberosAgentListener.m
+++ b/src/kim/agent/mac/KerberosAgentListener.m
@@ -148,12 +148,22 @@ static KerberosAgentListener *sharedListener = nil;
kim_error err = KIM_NO_ERROR;
mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
kim_identity identity = NULL;
+ kim_options options = NULL;
if (!err) {
- err = kim_identity_create_from_string(&identity, [[info objectForKey:@"identity_string"] UTF8String]);
+ err = kim_identity_create_from_string (&identity, [[info objectForKey:@"identity_string"] UTF8String]);
}
- err = kim_handle_reply_enter_identity(reply_port, identity, error);
+ if (!err) {
+#warning Placeholder for returning options
+ err = kim_options_create (&options);
+ }
+
+ if (!err) {
+ err = kim_handle_reply_enter_identity(reply_port, identity, options, error);
+ }
+
+ kim_options_free (&options);
}
+ (void) selectIdentityWithClientPort: (mach_port_t) client_port
@@ -187,9 +197,20 @@ static KerberosAgentListener *sharedListener = nil;
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] : "");
+ kim_options options = NULL;
+
+ err = kim_identity_create_from_string(&identity, (identityString) ? [identityString UTF8String] : "");
- err = kim_handle_reply_select_identity(reply_port, identity, error);
+ if (!err) {
+#warning Placeholder for returning options
+ err = kim_options_create (&options);
+ }
+
+ if (!err) {
+ err = kim_handle_reply_select_identity(reply_port, identity, options, error);
+ }
+
+ kim_options_free (&options);
}
+ (void) promptForAuthWithClientPort: (mach_port_t) client_port
diff --git a/src/kim/agent/mac/ServerDemux.h b/src/kim/agent/mac/ServerDemux.h
index 1f1de5964..09076d4dd 100644
--- a/src/kim/agent/mac/ServerDemux.h
+++ b/src/kim/agent/mac/ServerDemux.h
@@ -35,10 +35,12 @@ int32_t kim_handle_reply_init (mach_port_t in_reply_port,
int32_t kim_handle_reply_enter_identity (mach_port_t in_reply_port,
kim_identity in_identity,
+ kim_options in_options,
int32_t in_error);
int32_t kim_handle_reply_select_identity (mach_port_t in_reply_port,
kim_identity in_identity,
+ kim_options in_options,
int32_t in_error);
int32_t kim_handle_reply_auth_prompt (mach_port_t in_reply_port,
diff --git a/src/kim/agent/mac/ServerDemux.m b/src/kim/agent/mac/ServerDemux.m
index b24011d74..3cda9be64 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 "kim_options_private.h"
#import "KerberosAgentListener.h"
// ---------------------------------------------------------------------------
@@ -139,6 +140,11 @@ static int32_t kim_handle_request_enter_identity (mach_port_t in_client_port,
k5_ipc_stream in_request_stream)
{
int32_t err = 0;
+ kim_options options = NULL;
+
+ if (!err) {
+ err = kim_options_create_from_stream (&options, in_request_stream);
+ }
if (!err) {
// performs selector on main thread
@@ -153,6 +159,7 @@ static int32_t kim_handle_request_enter_identity (mach_port_t in_client_port,
int32_t kim_handle_reply_enter_identity (mach_port_t in_reply_port,
kim_identity in_identity,
+ kim_options in_options,
int32_t in_error)
{
int32_t err = 0;
@@ -175,6 +182,10 @@ int32_t kim_handle_reply_enter_identity (mach_port_t in_reply_port,
err = k5_ipc_stream_write_string (reply, identity_string);
}
+ if (!err && !in_error) {
+ err = kim_options_write_to_stream (in_options, reply);
+ }
+
if (!err) {
err = k5_ipc_server_send_reply (in_reply_port, reply);
}
@@ -217,6 +228,7 @@ static int32_t kim_handle_request_select_identity (mach_port_t in_client_port,
int32_t kim_handle_reply_select_identity (mach_port_t in_reply_port,
kim_identity in_identity,
+ kim_options in_options,
int32_t in_error)
{
int32_t err = 0;
@@ -239,6 +251,10 @@ int32_t kim_handle_reply_select_identity (mach_port_t in_reply_port,
err = k5_ipc_stream_write_string (reply, identity_string);
}
+ if (!err && !in_error) {
+ err = kim_options_write_to_stream (in_options, reply);
+ }
+
if (!err) {
err = k5_ipc_server_send_reply (in_reply_port, reply);
}