1 /* 2 * Copyright (c) 1996,1997, by Sun Microsystems, Inc. 3 * All rights reserved. 4 */ 5 6 | #pragma ident "@(#)g_verify.c 1.14 04/09/08 SMI" 6 | #pragma ident "@(#)g_verify.c 1.13 98/04/23 SMI" 7 8 /* 9 * glue routine for gss_verify 10 */ 11 12 #include <mechglueP.h> 13 14 OM_uint32 15 gss_verify(minor_status, 16 context_handle, 17 message_buffer, 18 token_buffer, 19 qop_state) 20 21 OM_uint32 * minor_status; 22 gss_ctx_id_t context_handle; 23 gss_buffer_t message_buffer; 24 gss_buffer_t token_buffer; 25 int * qop_state; 26 { 27 OM_uint32 status; 28 gss_union_ctx_id_t ctx; 29 gss_mechanism mech; 30 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) 32 | return GSS_S_NO_CONTEXT; 37 | return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT); 38 39 + if ((message_buffer == NULL) || GSS_EMPTY_BUFFER(token_buffer)) 40 + return (GSS_S_CALL_INACCESSIBLE_READ); 41 + 42 /* 43 * select the approprate underlying mechanism routine and 44 * call it. 45 */ 46 47 ctx = (gss_union_ctx_id_t) context_handle; 48 mech = __gss_get_mechanism(ctx->mech_type); 49 50 if (mech) { 51 if (mech->gss_verify) 52 status = mech->gss_verify( 53 mech->context, 54 minor_status, 55 ctx->internal_ctx_id, 56 message_buffer, 57 token_buffer, 58 qop_state); 59 else 52 | status = GSS_S_BAD_BINDINGS; 60 | status = GSS_S_UNAVAILABLE; 61 62 return (status); 63 } 64 57 | return (GSS_S_NO_CONTEXT); 65 | return (GSS_S_BAD_MECH); 66 } ----Unchanged portion omitted----