1 /*
2 * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
3 * All rights reserved.
4 */
5
6 #pragma ident "@(#)g_process_context.c 1.13 04/09/08 SMI"
7
8 /*
9 * glue routine gss_process_context
10 */
11
12 #include <mechglueP.h>
13
14 OM_uint32
15 gss_process_context_token(minor_status,
16 context_handle,
17 token_buffer)
18
19 OM_uint32 * minor_status;
20 const gss_ctx_id_t context_handle;
21 gss_buffer_t token_buffer;
22
23 {
24 OM_uint32 status;
25 gss_union_ctx_id_t ctx;
26 gss_mechanism mech;
27
28 gss_initialize();
29
30 if (context_handle == GSS_C_NO_CONTEXT)
31 return (GSS_S_NO_CONTEXT);
32
33 /*
34 * select the approprate underlying mechanism routine and
35 * call it.
36 */
37
38 ctx = (gss_union_ctx_id_t) context_handle;
39 mech = __gss_get_mechanism(ctx->mech_type);
40
41 if (mech) {
42
43 if (mech->gss_process_context_token)
44 status = mech->gss_process_context_token(
45 mech->context,
46 minor_status,
47 ctx->internal_ctx_id,
48 token_buffer);
49 else
50 status = GSS_S_BAD_BINDINGS;
51
52 return (status);
53 }
54
55 return (GSS_S_NO_CONTEXT);
56 }
|
1 /*
2 * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
3 * All rights reserved.
4 */
5
6 #pragma ident "@(#)g_process_context.c 1.12 98/01/22 SMI"
7
8 /*
9 * glue routine gss_process_context
10 */
11
12 #include <mechglueP.h>
13
14 OM_uint32
15 gss_process_context_token(minor_status,
16 context_handle,
17 token_buffer)
18
19 OM_uint32 * minor_status;
20 const gss_ctx_id_t context_handle;
21 gss_buffer_t token_buffer;
22
23 {
24 OM_uint32 status;
25 gss_union_ctx_id_t ctx;
26 gss_mechanism mech;
27
28 if (minor_status == NULL)
29 return (GSS_S_CALL_INACCESSIBLE_WRITE);
30 *minor_status = 0;
31
32 if (context_handle == GSS_C_NO_CONTEXT)
33 return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
34
35 if (GSS_EMPTY_BUFFER(token_buffer))
36 return (GSS_S_CALL_INACCESSIBLE_READ);
37
38 /*
39 * select the approprate underlying mechanism routine and
40 * call it.
41 */
42
43 ctx = (gss_union_ctx_id_t) context_handle;
44 mech = __gss_get_mechanism(ctx->mech_type);
45
46 if (mech) {
47
48 if (mech->gss_process_context_token)
49 status = mech->gss_process_context_token(
50 mech->context,
51 minor_status,
52 ctx->internal_ctx_id,
53 token_buffer);
54 else
55 status = GSS_S_UNAVAILABLE;
56
57 return (status);
58 }
59
60 return (GSS_S_BAD_MECH);
61 }
|