Lines Matching +full:client +full:- +full:id
2 * Copyright (c) 2004 - 2007 Kungliga Tekniska Högskolan
61 #define ACACHE(X) ((krb5_acc *)(X)->data.data)
197 ret = krb5_parse_name(context, incred->client, &cred->client); in make_cred_from_ccred()
201 ret = krb5_parse_name(context, incred->server, &cred->server); in make_cred_from_ccred()
205 cred->session.keytype = incred->keyblock.type; in make_cred_from_ccred()
206 cred->session.keyvalue.length = incred->keyblock.length; in make_cred_from_ccred()
207 cred->session.keyvalue.data = malloc(incred->keyblock.length); in make_cred_from_ccred()
208 if (cred->session.keyvalue.data == NULL) in make_cred_from_ccred()
210 memcpy(cred->session.keyvalue.data, incred->keyblock.data, in make_cred_from_ccred()
211 incred->keyblock.length); in make_cred_from_ccred()
213 cred->times.authtime = incred->authtime; in make_cred_from_ccred()
214 cred->times.starttime = incred->starttime; in make_cred_from_ccred()
215 cred->times.endtime = incred->endtime; in make_cred_from_ccred()
216 cred->times.renew_till = incred->renew_till; in make_cred_from_ccred()
218 ret = krb5_data_copy(&cred->ticket, in make_cred_from_ccred()
219 incred->ticket.data, in make_cred_from_ccred()
220 incred->ticket.length); in make_cred_from_ccred()
224 ret = krb5_data_copy(&cred->second_ticket, in make_cred_from_ccred()
225 incred->second_ticket.data, in make_cred_from_ccred()
226 incred->second_ticket.length); in make_cred_from_ccred()
230 cred->authdata.val = NULL; in make_cred_from_ccred()
231 cred->authdata.len = 0; in make_cred_from_ccred()
233 cred->addresses.val = NULL; in make_cred_from_ccred()
234 cred->addresses.len = 0; in make_cred_from_ccred()
236 for (i = 0; incred->authdata && incred->authdata[i]; i++) in make_cred_from_ccred()
240 cred->authdata.val = calloc(i, sizeof(cred->authdata.val[0])); in make_cred_from_ccred()
241 if (cred->authdata.val == NULL) in make_cred_from_ccred()
243 cred->authdata.len = i; in make_cred_from_ccred()
244 for (i = 0; i < cred->authdata.len; i++) { in make_cred_from_ccred()
245 cred->authdata.val[i].ad_type = incred->authdata[i]->type; in make_cred_from_ccred()
246 ret = krb5_data_copy(&cred->authdata.val[i].ad_data, in make_cred_from_ccred()
247 incred->authdata[i]->data, in make_cred_from_ccred()
248 incred->authdata[i]->length); in make_cred_from_ccred()
254 for (i = 0; incred->addresses && incred->addresses[i]; i++) in make_cred_from_ccred()
258 cred->addresses.val = calloc(i, sizeof(cred->addresses.val[0])); in make_cred_from_ccred()
259 if (cred->addresses.val == NULL) in make_cred_from_ccred()
261 cred->addresses.len = i; in make_cred_from_ccred()
263 for (i = 0; i < cred->addresses.len; i++) { in make_cred_from_ccred()
264 cred->addresses.val[i].addr_type = incred->addresses[i]->type; in make_cred_from_ccred()
265 ret = krb5_data_copy(&cred->addresses.val[i].address, in make_cred_from_ccred()
266 incred->addresses[i]->data, in make_cred_from_ccred()
267 incred->addresses[i]->length); in make_cred_from_ccred()
273 cred->flags.i = 0; in make_cred_from_ccred()
274 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_FORWARDABLE) in make_cred_from_ccred()
275 cred->flags.b.forwardable = 1; in make_cred_from_ccred()
276 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_FORWARDED) in make_cred_from_ccred()
277 cred->flags.b.forwarded = 1; in make_cred_from_ccred()
278 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_PROXIABLE) in make_cred_from_ccred()
279 cred->flags.b.proxiable = 1; in make_cred_from_ccred()
280 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_PROXY) in make_cred_from_ccred()
281 cred->flags.b.proxy = 1; in make_cred_from_ccred()
282 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_MAY_POSTDATE) in make_cred_from_ccred()
283 cred->flags.b.may_postdate = 1; in make_cred_from_ccred()
284 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_POSTDATED) in make_cred_from_ccred()
285 cred->flags.b.postdated = 1; in make_cred_from_ccred()
286 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_INVALID) in make_cred_from_ccred()
287 cred->flags.b.invalid = 1; in make_cred_from_ccred()
288 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_RENEWABLE) in make_cred_from_ccred()
289 cred->flags.b.renewable = 1; in make_cred_from_ccred()
290 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_INITIAL) in make_cred_from_ccred()
291 cred->flags.b.initial = 1; in make_cred_from_ccred()
292 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_PRE_AUTH) in make_cred_from_ccred()
293 cred->flags.b.pre_authent = 1; in make_cred_from_ccred()
294 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_HW_AUTH) in make_cred_from_ccred()
295 cred->flags.b.hw_authent = 1; in make_cred_from_ccred()
296 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_TRANSIT_POLICY_CHECKED) in make_cred_from_ccred()
297 cred->flags.b.transited_policy_checked = 1; in make_cred_from_ccred()
298 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_OK_AS_DELEGATE) in make_cred_from_ccred()
299 cred->flags.b.ok_as_delegate = 1; in make_cred_from_ccred()
300 if (incred->ticket_flags & KRB5_CCAPI_TKT_FLG_ANONYMOUS) in make_cred_from_ccred()
301 cred->flags.b.anonymous = 1; in make_cred_from_ccred()
319 if (cred->addresses) { in free_ccred()
320 for (i = 0; cred->addresses[i] != 0; i++) { in free_ccred()
321 if (cred->addresses[i]->data) in free_ccred()
322 free(cred->addresses[i]->data); in free_ccred()
323 free(cred->addresses[i]); in free_ccred()
325 free(cred->addresses); in free_ccred()
327 if (cred->server) in free_ccred()
328 free(cred->server); in free_ccred()
329 if (cred->client) in free_ccred()
330 free(cred->client); in free_ccred()
344 ret = krb5_unparse_name(context, incred->client, &cred->client); in make_ccred_from_cred()
348 ret = krb5_unparse_name(context, incred->server, &cred->server); in make_ccred_from_cred()
352 cred->keyblock.type = incred->session.keytype; in make_ccred_from_cred()
353 cred->keyblock.length = incred->session.keyvalue.length; in make_ccred_from_cred()
354 cred->keyblock.data = incred->session.keyvalue.data; in make_ccred_from_cred()
356 cred->authtime = incred->times.authtime; in make_ccred_from_cred()
357 cred->starttime = incred->times.starttime; in make_ccred_from_cred()
358 cred->endtime = incred->times.endtime; in make_ccred_from_cred()
359 cred->renew_till = incred->times.renew_till; in make_ccred_from_cred()
361 cred->ticket.length = incred->ticket.length; in make_ccred_from_cred()
362 cred->ticket.data = incred->ticket.data; in make_ccred_from_cred()
364 cred->second_ticket.length = incred->second_ticket.length; in make_ccred_from_cred()
365 cred->second_ticket.data = incred->second_ticket.data; in make_ccred_from_cred()
368 cred->authdata = NULL; in make_ccred_from_cred()
370 cred->addresses = calloc(incred->addresses.len + 1, in make_ccred_from_cred()
371 sizeof(cred->addresses[0])); in make_ccred_from_cred()
372 if (cred->addresses == NULL) { in make_ccred_from_cred()
378 for (i = 0; i < incred->addresses.len; i++) { in make_ccred_from_cred()
385 addr->type = incred->addresses.val[i].addr_type; in make_ccred_from_cred()
386 addr->length = incred->addresses.val[i].address.length; in make_ccred_from_cred()
387 addr->data = malloc(addr->length); in make_ccred_from_cred()
388 if (addr->data == NULL) { in make_ccred_from_cred()
393 memcpy(addr->data, incred->addresses.val[i].address.data, in make_ccred_from_cred()
394 addr->length); in make_ccred_from_cred()
395 cred->addresses[i] = addr; in make_ccred_from_cred()
397 cred->addresses[i] = NULL; in make_ccred_from_cred()
399 cred->ticket_flags = 0; in make_ccred_from_cred()
400 if (incred->flags.b.forwardable) in make_ccred_from_cred()
401 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_FORWARDABLE; in make_ccred_from_cred()
402 if (incred->flags.b.forwarded) in make_ccred_from_cred()
403 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_FORWARDED; in make_ccred_from_cred()
404 if (incred->flags.b.proxiable) in make_ccred_from_cred()
405 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_PROXIABLE; in make_ccred_from_cred()
406 if (incred->flags.b.proxy) in make_ccred_from_cred()
407 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_PROXY; in make_ccred_from_cred()
408 if (incred->flags.b.may_postdate) in make_ccred_from_cred()
409 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_MAY_POSTDATE; in make_ccred_from_cred()
410 if (incred->flags.b.postdated) in make_ccred_from_cred()
411 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_POSTDATED; in make_ccred_from_cred()
412 if (incred->flags.b.invalid) in make_ccred_from_cred()
413 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_INVALID; in make_ccred_from_cred()
414 if (incred->flags.b.renewable) in make_ccred_from_cred()
415 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_RENEWABLE; in make_ccred_from_cred()
416 if (incred->flags.b.initial) in make_ccred_from_cred()
417 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_INITIAL; in make_ccred_from_cred()
418 if (incred->flags.b.pre_authent) in make_ccred_from_cred()
419 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_PRE_AUTH; in make_ccred_from_cred()
420 if (incred->flags.b.hw_authent) in make_ccred_from_cred()
421 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_HW_AUTH; in make_ccred_from_cred()
422 if (incred->flags.b.transited_policy_checked) in make_ccred_from_cred()
423 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_TRANSIT_POLICY_CHECKED; in make_ccred_from_cred()
424 if (incred->flags.b.ok_as_delegate) in make_ccred_from_cred()
425 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_OK_AS_DELEGATE; in make_ccred_from_cred()
426 if (incred->flags.b.anonymous) in make_ccred_from_cred()
427 cred->ticket_flags |= KRB5_CCAPI_TKT_FLG_ANONYMOUS; in make_ccred_from_cred()
444 error = (*a->ccache->func->get_name)(a->ccache, &name); in get_cc_name()
448 a->cache_name = strdup(name->data); in get_cc_name()
449 (*name->func->release)(name); in get_cc_name()
450 if (a->cache_name == NULL) in get_cc_name()
458 krb5_ccache id) in acc_get_name() argument
460 krb5_acc *a = ACACHE(id); in acc_get_name()
463 if (a->cache_name == NULL) { in acc_get_name()
477 error = (*a->context->func->create_new_ccache)(a->context, in acc_get_name()
480 &a->ccache); in acc_get_name()
490 return a->cache_name; in acc_get_name()
494 acc_alloc(krb5_context context, krb5_ccache *id) in acc_alloc() argument
504 ret = krb5_data_alloc(&(*id)->data, sizeof(*a)); in acc_alloc()
510 a = ACACHE(*id); in acc_alloc()
512 error = (*init_func)(&a->context, ccapi_version_3, NULL, NULL); in acc_alloc()
514 krb5_data_free(&(*id)->data); in acc_alloc()
518 a->cache_name = NULL; in acc_alloc()
524 acc_resolve(krb5_context context, krb5_ccache *id, const char *res) in acc_resolve() argument
530 ret = acc_alloc(context, id); in acc_resolve()
534 a = ACACHE(*id); in acc_resolve()
536 error = (*a->context->func->open_ccache)(a->context, res, &a->ccache); in acc_resolve()
541 acc_close(context, *id); in acc_resolve()
542 *id = NULL; in acc_resolve()
546 error = (*a->ccache->func->get_kdc_time_offset)(a->ccache, in acc_resolve()
550 context->kdc_sec_offset = offset; in acc_resolve()
553 a->ccache = NULL; in acc_resolve()
554 a->cache_name = NULL; in acc_resolve()
556 *id = NULL; in acc_resolve()
564 acc_gen_new(krb5_context context, krb5_ccache *id) in acc_gen_new() argument
569 ret = acc_alloc(context, id); in acc_gen_new()
573 a = ACACHE(*id); in acc_gen_new()
575 a->ccache = NULL; in acc_gen_new()
576 a->cache_name = NULL; in acc_gen_new()
583 krb5_ccache id, in acc_initialize() argument
586 krb5_acc *a = ACACHE(id); in acc_initialize()
595 if (a->cache_name == NULL) { in acc_initialize()
596 error = (*a->context->func->create_new_ccache)(a->context, in acc_initialize()
599 &a->ccache); in acc_initialize()
607 error = (*a->ccache->func->new_credentials_iterator)(a->ccache, &iter); in acc_initialize()
614 error = (*iter->func->next)(iter, &ccred); in acc_initialize()
617 (*a->ccache->func->remove_credentials)(a->ccache, ccred); in acc_initialize()
618 (*ccred->func->release)(ccred); in acc_initialize()
620 (*iter->func->release)(iter); in acc_initialize()
622 error = (*a->ccache->func->set_principal)(a->ccache, in acc_initialize()
627 if (error == 0 && context->kdc_sec_offset) in acc_initialize()
628 error = (*a->ccache->func->set_kdc_time_offset)(a->ccache, in acc_initialize()
630 context->kdc_sec_offset); in acc_initialize()
637 krb5_ccache id) in acc_close() argument
639 krb5_acc *a = ACACHE(id); in acc_close()
641 if (a->ccache) { in acc_close()
642 (*a->ccache->func->release)(a->ccache); in acc_close()
643 a->ccache = NULL; in acc_close()
645 if (a->cache_name) { in acc_close()
646 free(a->cache_name); in acc_close()
647 a->cache_name = NULL; in acc_close()
649 if (a->context) { in acc_close()
650 (*a->context->func->release)(a->context); in acc_close()
651 a->context = NULL; in acc_close()
653 krb5_data_free(&id->data); in acc_close()
659 krb5_ccache id) in acc_destroy() argument
661 krb5_acc *a = ACACHE(id); in acc_destroy()
664 if (a->ccache) { in acc_destroy()
665 error = (*a->ccache->func->destroy)(a->ccache); in acc_destroy()
666 a->ccache = NULL; in acc_destroy()
668 if (a->context) { in acc_destroy()
669 error = (a->context->func->release)(a->context); in acc_destroy()
670 a->context = NULL; in acc_destroy()
677 krb5_ccache id, in acc_store_cred() argument
680 krb5_acc *a = ACACHE(id); in acc_store_cred()
686 if (a->ccache == NULL) { in acc_store_cred()
701 error = (*a->ccache->func->store_credentials)(a->ccache, &cred); in acc_store_cred()
712 krb5_ccache id, in acc_get_principal() argument
715 krb5_acc *a = ACACHE(id); in acc_get_principal()
720 if (a->ccache == NULL) { in acc_get_principal()
726 error = (*a->ccache->func->get_principal)(a->ccache, in acc_get_principal()
732 ret = krb5_parse_name(context, name->data, principal); in acc_get_principal()
734 (*name->func->release)(name); in acc_get_principal()
740 krb5_ccache id, in acc_get_first() argument
744 krb5_acc *a = ACACHE(id); in acc_get_first()
747 if (a->ccache == NULL) { in acc_get_first()
753 error = (*a->ccache->func->new_credentials_iterator)(a->ccache, &iter); in acc_get_first()
765 krb5_ccache id, in acc_get_next() argument
775 error = (*iter->func->next)(iter, &cred); in acc_get_next()
778 if (cred->data->version == cc_credentials_v5) in acc_get_next()
780 (*cred->func->release)(cred); in acc_get_next()
784 cred->data->credentials.credentials_v5, in acc_get_next()
786 (*cred->func->release)(cred); in acc_get_next()
792 krb5_ccache id, in acc_end_get() argument
796 (*iter->func->release)(iter); in acc_end_get()
802 krb5_ccache id, in acc_remove_cred() argument
807 krb5_acc *a = ACACHE(id); in acc_remove_cred()
811 char *client, *server; in acc_remove_cred() local
813 if (a->ccache == NULL) { in acc_remove_cred()
819 if (cred->client) { in acc_remove_cred()
820 ret = krb5_unparse_name(context, cred->client, &client); in acc_remove_cred()
824 client = NULL; in acc_remove_cred()
826 ret = krb5_unparse_name(context, cred->server, &server); in acc_remove_cred()
828 free(client); in acc_remove_cred()
832 error = (*a->ccache->func->new_credentials_iterator)(a->ccache, &iter); in acc_remove_cred()
835 free(client); in acc_remove_cred()
843 error = (*iter->func->next)(iter, &ccred); in acc_remove_cred()
847 if (ccred->data->version != cc_credentials_v5) in acc_remove_cred()
850 v5cred = ccred->data->credentials.credentials_v5; in acc_remove_cred()
852 if (client && strcmp(v5cred->client, client) != 0) in acc_remove_cred()
855 if (strcmp(v5cred->server, server) != 0) in acc_remove_cred()
858 (*a->ccache->func->remove_credentials)(a->ccache, ccred); in acc_remove_cred()
861 (*ccred->func->release)(ccred); in acc_remove_cred()
864 (*iter->func->release)(iter); in acc_remove_cred()
871 free(client); in acc_remove_cred()
878 krb5_ccache id, in acc_set_flags() argument
886 krb5_ccache id) in acc_get_version() argument
913 error = (*init_func)(&iter->context, ccapi_version_3, NULL, NULL); in acc_get_cache_first()
919 error = (*iter->context->func->new_ccache_iterator)(iter->context, in acc_get_cache_first()
920 &iter->iter); in acc_get_cache_first()
931 acc_get_cache_next(krb5_context context, krb5_cc_cursor cursor, krb5_ccache *id) in acc_get_cache_next() argument
939 error = (*iter->iter->func->next)(iter->iter, &cache); in acc_get_cache_next()
943 ret = _krb5_cc_allocate(context, &krb5_acc_ops, id); in acc_get_cache_next()
945 (*cache->func->release)(cache); in acc_get_cache_next()
949 ret = acc_alloc(context, id); in acc_get_cache_next()
951 (*cache->func->release)(cache); in acc_get_cache_next()
952 free(*id); in acc_get_cache_next()
956 a = ACACHE(*id); in acc_get_cache_next()
957 a->ccache = cache; in acc_get_cache_next()
961 acc_close(context, *id); in acc_get_cache_next()
962 *id = NULL; in acc_get_cache_next()
973 (*iter->iter->func->release)(iter->iter); in acc_end_cache_get()
974 iter->iter = NULL; in acc_end_cache_get()
975 (*iter->context->func->release)(iter->context); in acc_end_cache_get()
976 iter->context = NULL; in acc_end_cache_get()
988 if (ato->ccache == NULL) { in acc_move()
991 error = (*afrom->ccache->func->get_principal)(afrom->ccache, in acc_move()
997 error = (*ato->context->func->create_new_ccache)(ato->context, in acc_move()
999 name->data, in acc_move()
1000 &ato->ccache); in acc_move()
1001 (*name->func->release)(name); in acc_move()
1006 error = (*ato->ccache->func->move)(afrom->ccache, ato->ccache); in acc_move()
1029 error = (*cc->func->get_default_ccache_name)(cc, &name); in acc_get_default_name()
1031 (*cc->func->release)(cc); in acc_get_default_name()
1035 error = asprintf(str, "API:%s", name->data); in acc_get_default_name()
1036 (*name->func->release)(name); in acc_get_default_name()
1037 (*cc->func->release)(cc); in acc_get_default_name()
1047 acc_set_default(krb5_context context, krb5_ccache id) in acc_set_default() argument
1049 krb5_acc *a = ACACHE(id); in acc_set_default()
1052 if (a->ccache == NULL) { in acc_set_default()
1058 error = (*a->ccache->func->set_default)(a->ccache); in acc_set_default()
1066 acc_lastchange(krb5_context context, krb5_ccache id, krb5_timestamp *mtime) in acc_lastchange() argument
1068 krb5_acc *a = ACACHE(id); in acc_lastchange()
1072 if (a->ccache == NULL) { in acc_lastchange()
1078 error = (*a->ccache->func->get_change_time)(a->ccache, &t); in acc_lastchange()