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