OM_uint32 GSSAPI_CALLCONV _gk_wrap_iov_length(OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count) { const gsskrb5_ctx ctx = (const gsskrb5_ctx) context_handle; krb5_context context; OM_uint32 ret; krb5_keytype keytype; krb5_keyblock *key; GSSAPI_KRB5_INIT (&context); if (ctx->more_flags & IS_CFX) return _gssapi_wrap_iov_length_cfx(minor_status, ctx, context, conf_req_flag, qop_req, conf_state, iov, iov_count); HEIMDAL_MUTEX_lock(&ctx->ctx_id_mutex); ret = _gsskrb5i_get_token_key(ctx, context, &key); HEIMDAL_MUTEX_unlock(&ctx->ctx_id_mutex); if (ret) { *minor_status = ret; return GSS_S_FAILURE; } krb5_enctype_to_keytype(context, key->keytype, &keytype); switch (keytype) { case KEYTYPE_ARCFOUR: case KEYTYPE_ARCFOUR_56: ret = _gssapi_wrap_iov_length_arcfour(minor_status, ctx, context, conf_req_flag, qop_req, conf_state, iov, iov_count); break; default: ret = GSS_S_FAILURE; break; } krb5_free_keyblock(context, key); return ret; }
OM_uint32 GSSAPI_CALLCONV _gk_wrap_iov_length(OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, int *conf_state, gss_iov_buffer_desc *iov, int iov_count) { const gsskrb5_ctx ctx = (const gsskrb5_ctx) context_handle; krb5_context context; GSSAPI_KRB5_INIT (&context); if (ctx->more_flags & IS_CFX) return _gssapi_wrap_iov_length_cfx(minor_status, ctx, context, conf_req_flag, qop_req, conf_state, iov, iov_count); return GSS_S_FAILURE; }