Sdiff g_process_context.c
  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 }