diff options
| author | Alexandra Ellwood <lxs@mit.edu> | 2008-10-01 15:35:48 +0000 |
|---|---|---|
| committer | Alexandra Ellwood <lxs@mit.edu> | 2008-10-01 15:35:48 +0000 |
| commit | 3f0979ee8bf09c9d5190c56f9facdcebb17a7680 (patch) | |
| tree | b27699c9208cfd180485037dbcd7fbd7d0330cd8 /src/kim/agent/mac | |
| parent | 8294739d8cbc7b91ae11c0fb8fbb3c918bb90348 (diff) | |
| download | krb5-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.m | 29 | ||||
| -rw-r--r-- | src/kim/agent/mac/ServerDemux.h | 2 | ||||
| -rw-r--r-- | src/kim/agent/mac/ServerDemux.m | 16 |
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); } |
