Lines Matching +full:entry +full:- +full:name

2  * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan
17 * 3. Neither the name of the Institute nor the names of its contributors
51 * A keytab name is on the form type:residual. The residual part is
52 * specific to each keytab-type.
54 * When a keytab-name is resolved, the type is matched with an internal
63 * - file
64 * store the keytab in a file, the type's name is FILE . The
72 * - keytab
74 * the type's name is AFSKEYFILE. The residual part is a filename.
76 * - memory
78 * and/or temporary data not to be stored on disk. The type's name
80 * opened by the residual name, so two handles can point to the
83 * and can no longer be looked up by name.
97 krb5_keytab_entry entry;
111 while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
112 krb5_unparse_name(context, entry.principal, &principal);
115 krb5_kt_free_entry(context, &entry);
148 if (strlen(ops->prefix) > KRB5_KT_PREFIX_MAX_LEN - 1) { in krb5_kt_register()
154 tmp = realloc(context->kt_types, in krb5_kt_register()
155 (context->num_kt_types + 1) * sizeof(*context->kt_types)); in krb5_kt_register()
161 memcpy(&tmp[context->num_kt_types], ops, in krb5_kt_register()
162 sizeof(tmp[context->num_kt_types])); in krb5_kt_register()
163 context->kt_types = tmp; in krb5_kt_register()
164 context->num_kt_types++; in krb5_kt_register()
169 keytab_name(const char *name, const char **type, size_t *type_len) in keytab_name() argument
173 residual = strchr(name, ':'); in keytab_name()
176 name[0] == '/' in keytab_name()
180 || name + 1 == residual in keytab_name()
186 residual = name; in keytab_name()
188 *type = name; in keytab_name()
189 *type_len = residual - name; in keytab_name()
197 * Resolve the keytab name (of the form `type:residual') in `name'
201 * @param name name to resolve
212 const char *name, in krb5_kt_resolve() argument
221 residual = keytab_name(name, &type, &type_len); in krb5_kt_resolve()
223 for(i = 0; i < context->num_kt_types; i++) { in krb5_kt_resolve()
224 if(strncasecmp(type, context->kt_types[i].prefix, type_len) == 0) in krb5_kt_resolve()
227 if(i == context->num_kt_types) { in krb5_kt_resolve()
239 memcpy(k, &context->kt_types[i], sizeof(*k)); in krb5_kt_resolve()
240 k->data = NULL; in krb5_kt_resolve()
241 ret = (*k->resolve)(context, residual, k); in krb5_kt_resolve()
251 * copy the name of the default keytab into `name'.
254 * @param name buffer where the name will be written
255 * @param namesize length of name
263 krb5_kt_default_name(krb5_context context, char *name, size_t namesize) in krb5_kt_default_name() argument
265 if (strlcpy (name, context->default_keytab, namesize) >= namesize) { in krb5_kt_default_name()
273 * Copy the name of the default modify keytab into `name'.
276 * @param name buffer where the name will be written
277 * @param namesize length of name
285 krb5_kt_default_modify_name(krb5_context context, char *name, size_t namesize) in krb5_kt_default_modify_name() argument
288 if(context->default_keytab_modify == NULL) { in krb5_kt_default_modify_name()
289 if(strncasecmp(context->default_keytab, "ANY:", 4) != 0) in krb5_kt_default_modify_name()
290 kt = context->default_keytab; in krb5_kt_default_modify_name()
292 size_t len = strcspn(context->default_keytab + 4, ","); in krb5_kt_default_modify_name()
297 strlcpy(name, context->default_keytab + 4, namesize); in krb5_kt_default_modify_name()
298 name[len] = '\0'; in krb5_kt_default_modify_name()
302 kt = context->default_keytab_modify; in krb5_kt_default_modify_name()
303 if (strlcpy (name, kt, namesize) >= namesize) { in krb5_kt_default_modify_name()
324 return krb5_kt_resolve (context, context->default_keytab, id); in krb5_kt_default()
352 krb5_keytab_entry entry; in krb5_kt_read_service_key() local
355 memset(&entry, 0, sizeof(entry)); in krb5_kt_read_service_key()
364 ret = krb5_kt_get_entry (context, keytab, principal, vno, enctype, &entry); in krb5_kt_read_service_key()
366 ret = krb5_copy_keyblock (context, &entry.keyblock, key); in krb5_kt_read_service_key()
367 krb5_kt_free_entry(context, &entry); in krb5_kt_read_service_key()
393 strlcpy(prefix, keytab->prefix, prefixsize); in krb5_kt_get_type()
398 * Retrieve the name of the keytab `keytab' into `name', `namesize'
401 * @param keytab the keytab to get the name for.
402 * @param name name buffer.
403 * @param namesize size of name buffer.
413 char *name, in krb5_kt_get_name() argument
416 return (*keytab->get_name)(context, keytab, name, namesize); in krb5_kt_get_name()
420 * Retrieve the full name of the keytab `keytab' and store the name in
424 * @param keytab keytab to get name for.
425 * @param str the name of the keytab name, usee krb5_xfree() to free
439 char name[MAXPATHLEN]; in krb5_kt_get_full_name() local
448 ret = krb5_kt_get_name(context, keytab, name, sizeof(name)); in krb5_kt_get_full_name()
452 if (asprintf(str, "%s:%s", type, name) == -1) { in krb5_kt_get_full_name()
480 ret = (id->close)(context, id); in krb5_kt_close()
505 ret = (*id->destroy)(context, id); in krb5_kt_destroy()
511 * Match any aliases in keytab `entry' with `principal'.
516 krb5_keytab_entry *entry, in compare_aliseses() argument
520 if (entry->aliases == NULL) in compare_aliseses()
522 for (i = 0; i < entry->aliases->len; i++) in compare_aliseses()
523 if (krb5_principal_compare(context, &entry->aliases->val[i], principal)) in compare_aliseses()
529 * Compare `entry' against `principal, vno, enctype'.
534 * @param entry an entry to match with.
546 krb5_keytab_entry *entry, in krb5_kt_compare() argument
552 !(krb5_principal_compare(context, entry->principal, principal) || in krb5_kt_compare()
553 compare_aliseses(context, entry, principal))) in krb5_kt_compare()
555 if(vno && vno != entry->vno) in krb5_kt_compare()
557 if(enctype && enctype != entry->keyblock.keytype) in krb5_kt_compare()
596 * Retrieve the keytab entry for `principal, kvno, enctype' into `entry'
604 * @param entry the returned entry, free with krb5_kt_free_entry().
617 krb5_keytab_entry *entry) in krb5_kt_get_entry() argument
623 if(id->get) in krb5_kt_get_entry()
624 return (*id->get)(context, id, principal, kvno, enctype, entry); in krb5_kt_get_entry()
631 context->error_code = KRB5_KT_NOTFOUND; in krb5_kt_get_entry()
635 entry->vno = 0; in krb5_kt_get_entry()
642 krb5_kt_copy_entry_contents (context, &tmp, entry); in krb5_kt_get_entry()
646 } else if (kvno == 0 && tmp.vno > entry->vno) { in krb5_kt_get_entry()
647 if (entry->vno) in krb5_kt_get_entry()
648 krb5_kt_free_entry (context, entry); in krb5_kt_get_entry()
649 krb5_kt_copy_entry_contents (context, &tmp, entry); in krb5_kt_get_entry()
655 if (entry->vno == 0) in krb5_kt_get_entry()
665 * @param in the keytab entry to copy.
666 * @param out the copy of the keytab entry, free with krb5_kt_free_entry().
682 ret = krb5_copy_principal (context, in->principal, &out->principal); in krb5_kt_copy_entry_contents()
686 &in->keyblock, in krb5_kt_copy_entry_contents()
687 &out->keyblock); in krb5_kt_copy_entry_contents()
689 krb5_free_principal(context, out->principal); in krb5_kt_copy_entry_contents()
693 out->vno = in->vno; in krb5_kt_copy_entry_contents()
694 out->timestamp = in->timestamp; in krb5_kt_copy_entry_contents()
699 * Free the contents of `entry'.
702 * @param entry the entry to free
711 krb5_keytab_entry *entry) in krb5_kt_free_entry() argument
713 krb5_free_principal (context, entry->principal); in krb5_kt_free_entry()
714 krb5_free_keyblock_contents (context, &entry->keyblock); in krb5_kt_free_entry()
715 memset(entry, 0, sizeof(*entry)); in krb5_kt_free_entry()
736 if(id->start_seq_get == NULL) { in krb5_kt_start_seq_get()
740 id->prefix); in krb5_kt_start_seq_get()
743 return (*id->start_seq_get)(context, id, cursor); in krb5_kt_start_seq_get()
747 * Get the next entry from keytab, advance the cursor. On last entry
752 * @param entry the returned entry, free with krb5_kt_free_entry().
763 krb5_keytab_entry *entry, in krb5_kt_next_entry() argument
766 if(id->next_entry == NULL) { in krb5_kt_next_entry()
770 id->prefix); in krb5_kt_next_entry()
773 return (*id->next_entry)(context, id, entry, cursor); in krb5_kt_next_entry()
793 if(id->end_seq_get == NULL) { in krb5_kt_end_seq_get()
796 " keytab", id->prefix); in krb5_kt_end_seq_get()
799 return (*id->end_seq_get)(context, id, cursor); in krb5_kt_end_seq_get()
803 * Add the entry in `entry' to the keytab `id'.
807 * @param entry the entry to add
817 krb5_keytab_entry *entry) in krb5_kt_add_entry() argument
819 if(id->add == NULL) { in krb5_kt_add_entry()
822 id->prefix); in krb5_kt_add_entry()
825 entry->timestamp = time(NULL); in krb5_kt_add_entry()
826 return (*id->add)(context, id,entry); in krb5_kt_add_entry()
830 * Remove an entry from the keytab, matching is done using
835 * @param entry the entry to remove
845 krb5_keytab_entry *entry) in krb5_kt_remove_entry() argument
847 if(id->remove == NULL) { in krb5_kt_remove_entry()
850 id->prefix); in krb5_kt_remove_entry()
853 return (*id->remove)(context, id, entry); in krb5_kt_remove_entry()
871 krb5_keytab_entry entry; in krb5_kt_have_content() local
874 char *name; in krb5_kt_have_content() local
876 memset(&entry, 0, sizeof(entry)); in krb5_kt_have_content()
881 ret = krb5_kt_next_entry(context, id, &entry, &cursor); in krb5_kt_have_content()
886 krb5_kt_free_entry(context, &entry); in krb5_kt_have_content()
891 ret = krb5_kt_get_full_name(context, id, &name); in krb5_kt_have_content()
894 N_("No entry in keytab: %s", ""), name); in krb5_kt_have_content()
895 free(name); in krb5_kt_have_content()