gss: add oid/buffer storage helpers to mechglue

The functions for storing and retrieving GSS OIDs and buffers from
krb5_storage, added in 6554dc69, are generally useful. Move those into private
_gss_mg_XXX() API and update gss_{export,import}_{cred,sec_context} to use them
where appropriate.
This commit is contained in:
Luke Howard
2021-08-10 10:15:08 +10:00
parent 490173b417
commit 43858eaf9b
7 changed files with 210 additions and 218 deletions

View File

@@ -38,11 +38,12 @@ _gsskrb5_export_cred(OM_uint32 *minor_status,
gss_cred_id_t cred_handle,
gss_buffer_t cred_token)
{
OM_uint32 major_status;
gsskrb5_cred handle = (gsskrb5_cred)cred_handle;
krb5_context context;
krb5_error_code ret;
krb5_storage *sp;
krb5_data data, mech;
krb5_data data;
const char *type;
char *str;
@@ -141,15 +142,11 @@ _gsskrb5_export_cred(OM_uint32 *minor_status,
return GSS_S_FAILURE;
}
mech.data = GSS_KRB5_MECHANISM->elements;
mech.length = GSS_KRB5_MECHANISM->length;
ret = krb5_store_data(sp, mech);
if (ret) {
major_status = _gss_mg_store_oid(minor_status, sp, GSS_KRB5_MECHANISM);
if (major_status != GSS_S_COMPLETE) {
krb5_data_free(&data);
krb5_storage_free(sp);
*minor_status = ret;
return GSS_S_FAILURE;
return major_status;
}
ret = krb5_store_data(sp, data);