Esempio n. 1
0
static krb5_error_code KRB5_CALLCONV
acc_store_cred(krb5_context context,
	       krb5_ccache id,
	       krb5_creds *creds)
{
    krb5_acc *a = ACACHE(id);
    cc_credentials_union cred;
    cc_credentials_v5_t v5cred;
    krb5_error_code ret;
    cc_int32 error;

    if (a->ccache == NULL) {
	krb5_set_error_message(context, KRB5_CC_NOTFOUND,
			       N_("No API credential found", ""));
	return KRB5_CC_NOTFOUND;
    }

    cred.version = cc_credentials_v5;
    cred.credentials.credentials_v5 = &v5cred;

    ret = make_ccred_from_cred(context,
			       creds,
			       &v5cred);
    if (ret)
	return ret;

    error = (*a->ccache->func->store_credentials)(a->ccache, &cred);
    if (error)
	ret = translate_cc_error(context, error);

    free_ccred(&v5cred);

    return ret;
}
Esempio n. 2
0
static cc_credentials_t
create_credentials(krb5_creds *cred)
{
    struct cred *c;

    c = calloc(1, sizeof(*c));
    c->data = calloc(1, sizeof(*c->data));
    c->data->version = cc_credentials_v5;
    c->data->credentials.credentials_v5 = calloc(1, sizeof(*c->data->credentials.credentials_v5));
    c->functions = &credential_functions;
    
    heim_krb5_copy_creds_contents(milcontext, cred, &c->cred);
    make_ccred_from_cred(milcontext, &c->cred, c->data->credentials.credentials_v5);

    return (cc_credentials_t)c;
}