Sdiff g_sign.c
  1 /*
  2  * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
  3  * All rights reserved.
  4  */
  5 
  6 #pragma ident   "@(#)g_sign.c   1.15    04/09/08 SMI" 
  7 
  8 /*
  9  *  glue routine gss_sign
 10  */
 11 
 12 #include <mechglueP.h>
 13 
 14 OM_uint32
 15 gss_sign(minor_status,
 16         context_handle,
 17         qop_req,
 18         message_buffer,
 19         msg_token)
 20 
 21 OM_uint32 *             minor_status;
 22 gss_ctx_id_t            context_handle;
 23 int                     qop_req;
 24 gss_buffer_t            message_buffer;
 25 gss_buffer_t            msg_token;
 26 
 27 {
 28         OM_uint32               status;
 29         gss_union_ctx_id_t      ctx;
 30         gss_mechanism           mech;
 31 
 32         gss_initialize(); 


 33 











 34         /*
 35          * select the approprate underlying mechanism routine and
 36          * call it.
 37          */
 38 
 39         ctx = (gss_union_ctx_id_t) context_handle;
 40         mech = __gss_get_mechanism(ctx->mech_type);
 41 
 42         if (mech) {
 43                 if (mech->gss_sign)
 44                         status = mech->gss_sign(
 45                                                 mech->context,
 46                                                 minor_status,
 47                                                 ctx->internal_ctx_id,
 48                                                 qop_req,
 49                                                 message_buffer,
 50                                                 msg_token);
 51                 else
 52                         status = GSS_S_BAD_BINDINGS; 
 53 
 54                 return (status);
 55         }
 56 
 57         return (GSS_S_NO_CONTEXT); 
 58 }
 59 
 60 OM_uint32
 61 gss_get_mic(minor_status,
 62                 context_handle,
 63                 qop_req,
 64                 message_buffer,
 65                 msg_token)
 66 
 67 OM_uint32 *             minor_status;
 68 const gss_ctx_id_t      context_handle;
 69 gss_qop_t               qop_req;
 70 const gss_buffer_t      message_buffer;
 71 gss_buffer_t            msg_token;
 72 
 73 {
 74         return (gss_sign(minor_status, (gss_ctx_id_t)context_handle,
 75                 (int) qop_req, (gss_buffer_t)message_buffer, msg_token));
 76 }
  1 /*
  2  * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
  3  * All rights reserved.
  4  */
  5 
  6 #pragma ident   "@(#)g_sign.c   1.14    98/04/23 SMI" 
  7 
  8 /*
  9  *  glue routine gss_sign
 10  */
 11 
 12 #include <mechglueP.h>
 13 
 14 OM_uint32
 15 gss_sign(minor_status,
 16         context_handle,
 17         qop_req,
 18         message_buffer,
 19         msg_token)
 20 
 21 OM_uint32 *             minor_status;
 22 gss_ctx_id_t            context_handle;
 23 int                     qop_req;
 24 gss_buffer_t            message_buffer;
 25 gss_buffer_t            msg_token;
 26 
 27 {
 28         OM_uint32               status;
 29         gss_union_ctx_id_t      ctx;
 30         gss_mechanism           mech;
 31 
 32         if (minor_status == NULL) 
 33                 return (GSS_S_CALL_INACCESSIBLE_WRITE); 
 34         *minor_status = 0; 
 35 
 36         if (context_handle == GSS_C_NO_CONTEXT)
 37                 return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
 38 
 39         if (message_buffer == NULL)
 40                 return (GSS_S_CALL_INACCESSIBLE_READ);
 41 
 42         if (msg_token == NULL)
 43                 return (GSS_S_CALL_INACCESSIBLE_WRITE);
 44 
 45         msg_token->value = NULL;
 46         msg_token->length = 0;
 47         /*
 48          * select the approprate underlying mechanism routine and
 49          * call it.
 50          */
 51 
 52         ctx = (gss_union_ctx_id_t) context_handle;
 53         mech = __gss_get_mechanism(ctx->mech_type);
 54 
 55         if (mech) {
 56                 if (mech->gss_sign)
 57                         status = mech->gss_sign(
 58                                                 mech->context,
 59                                                 minor_status,
 60                                                 ctx->internal_ctx_id,
 61                                                 qop_req,
 62                                                 message_buffer,
 63                                                 msg_token);
 64                 else
 65                         status = GSS_S_UNAVAILABLE; 
 66 
 67                 return (status);
 68         }
 69 
 70         return (GSS_S_BAD_MECH); 
 71 }
 72 
 73 OM_uint32
 74 gss_get_mic(minor_status,
 75                 context_handle,
 76                 qop_req,
 77                 message_buffer,
 78                 msg_token)
 79 
 80 OM_uint32 *             minor_status;
 81 const gss_ctx_id_t      context_handle;
 82 gss_qop_t               qop_req;
 83 const gss_buffer_t      message_buffer;
 84 gss_buffer_t            msg_token;
 85 
 86 {
 87         return (gss_sign(minor_status, (gss_ctx_id_t)context_handle,
 88                 (int) qop_req, (gss_buffer_t)message_buffer, msg_token));
 89 }