/* Read a wrap token from stdin and verify that it says "userwrap". */ static void read_wrap_token(gss_ctx_id_t ctx) { OM_uint32 major, minor; gss_buffer_desc wrapped, buf; read_data(STDIN_FILENO, &wrapped.value, &wrapped.length); major = krb5_gss_unwrap(&minor, ctx, &wrapped, &buf, NULL, NULL); check(major, minor, "krb5_gss_unwrap"); assert(buf.length == 8 && memcmp(buf.value, "userwrap", 8) == 0); free(buf.value); free(wrapped.value); }
OM_uint32 KRB5_CALLCONV iakerb_gss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle, gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int *conf_state, gss_qop_t *qop_state) { iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; if (ctx->gssc == GSS_C_NO_CONTEXT) return GSS_S_NO_CONTEXT; return krb5_gss_unwrap(minor_status, ctx->gssc, input_message_buffer, output_message_buffer, conf_state, qop_state); }