Lines Matching refs:key
46 static inline struct key *keyring_ptr_to_key(const struct assoc_array_ptr *x) in keyring_ptr_to_key()
49 return (struct key *)((unsigned long)object & ~KEYRING_PTR_SUBTYPE); in keyring_ptr_to_key()
51 static inline void *keyring_key_to_ptr(struct key *key) in keyring_key_to_ptr() argument
53 if (key->type == &key_type_keyring) in keyring_key_to_ptr()
54 return (void *)((unsigned long)key | KEYRING_PTR_SUBTYPE); in keyring_key_to_ptr()
55 return key; in keyring_key_to_ptr()
78 static int keyring_instantiate(struct key *keyring,
80 static void keyring_revoke(struct key *keyring);
81 static void keyring_destroy(struct key *keyring);
82 static void keyring_describe(const struct key *keyring, struct seq_file *m);
83 static long keyring_read(const struct key *keyring,
109 static void keyring_publish_name(struct key *keyring) in keyring_publish_name()
148 static int keyring_instantiate(struct key *keyring, in keyring_instantiate()
274 const struct key *key = keyring_ptr_to_key(object); in keyring_get_object_key_chunk() local
275 return keyring_get_key_chunk(&key->index_key, level); in keyring_get_object_key_chunk()
281 const struct key *key = keyring_ptr_to_key(object); in keyring_compare_object() local
283 return key->index_key.type == index_key->type && in keyring_compare_object()
284 key->index_key.desc_len == index_key->desc_len && in keyring_compare_object()
285 memcmp(key->index_key.description, index_key->description, in keyring_compare_object()
295 const struct key *key_a = keyring_ptr_to_key(object); in keyring_diff_objects()
385 static void keyring_destroy(struct key *keyring) in keyring_destroy()
403 static void keyring_describe(const struct key *keyring, struct seq_file *m) in keyring_describe()
427 const struct key *key = keyring_ptr_to_key(object); in keyring_read_iterator() local
431 key->type->name, key->serial, ctx->count, ctx->qty); in keyring_read_iterator()
436 ret = put_user(key->serial, ctx->buffer); in keyring_read_iterator()
440 ctx->count += sizeof(key->serial); in keyring_read_iterator()
451 static long keyring_read(const struct key *keyring, in keyring_read()
492 struct key *keyring_alloc(const char *description, kuid_t uid, kgid_t gid, in keyring_alloc()
494 unsigned long flags, struct key *dest) in keyring_alloc()
496 struct key *keyring; in keyring_alloc()
516 bool key_default_cmp(const struct key *key, in key_default_cmp() argument
519 return strcmp(key->description, match_data->raw_data) == 0; in key_default_cmp()
528 const struct key *key = keyring_ptr_to_key(object); in keyring_search_iterator() local
529 unsigned long kflags = key->flags; in keyring_search_iterator()
531 kenter("{%d}", key->serial); in keyring_search_iterator()
534 if (key->type != ctx->index_key.type) { in keyring_search_iterator()
548 if (key->expiry && ctx->now.tv_sec >= key->expiry) { in keyring_search_iterator()
557 if (!ctx->match_data.cmp(key, &ctx->match_data)) { in keyring_search_iterator()
564 key_task_permission(make_key_ref(key, ctx->possessed), in keyring_search_iterator()
575 ctx->result = ERR_PTR(key->reject_error); in keyring_search_iterator()
582 ctx->result = make_key_ref(key, ctx->possessed); in keyring_search_iterator()
595 static int search_keyring(struct key *keyring, struct keyring_search_context *ctx) in search_keyring()
612 static bool search_nested_keyrings(struct key *keyring, in search_nested_keyrings()
616 struct key *keyring; in search_nested_keyrings()
624 struct key *key; in search_nested_keyrings() local
732 key = keyring_ptr_to_key(ptr); in search_nested_keyrings()
744 key_task_permission(make_key_ref(key, ctx->possessed), in search_nested_keyrings()
755 keyring = key; in search_nested_keyrings()
806 key = key_ref_to_ptr(ctx->result); in search_nested_keyrings()
807 key_check(key); in search_nested_keyrings()
809 key->last_used_at = ctx->now.tv_sec; in search_nested_keyrings()
853 struct key *keyring; in keyring_search_aux()
902 key_ref_t key; in keyring_search() local
911 key = keyring_search_aux(keyring, &ctx); in keyring_search()
915 return key; in keyring_search()
936 struct key *keyring, *key; in find_key_to_update() local
954 key = keyring_ptr_to_key(object); in find_key_to_update()
955 if (key->flags & ((1 << KEY_FLAG_INVALIDATED) | in find_key_to_update()
960 __key_get(key); in find_key_to_update()
961 kleave(" = {%d}", key->serial); in find_key_to_update()
962 return make_key_ref(key, is_key_possessed(keyring_ref)); in find_key_to_update()
976 struct key *find_keyring_by_name(const char *name, bool skip_perm_check) in find_keyring_by_name()
978 struct key *keyring; in find_keyring_by_name()
1029 const struct key *key = keyring_ptr_to_key(object); in keyring_detect_cycle_iterator() local
1031 kenter("{%d}", key->serial); in keyring_detect_cycle_iterator()
1035 if (key != ctx->match_data.raw_data) in keyring_detect_cycle_iterator()
1049 static int keyring_detect_cycle(struct key *A, struct key *B) in keyring_detect_cycle()
1071 int __key_link_begin(struct key *keyring, in __key_link_begin()
1142 int __key_link_check_live_key(struct key *keyring, struct key *key) in __key_link_check_live_key() argument
1144 if (key->type == &key_type_keyring) in __key_link_check_live_key()
1147 return keyring_detect_cycle(keyring, key); in __key_link_check_live_key()
1159 void __key_link(struct key *key, struct assoc_array_edit **_edit) in __key_link() argument
1161 __key_get(key); in __key_link()
1162 assoc_array_insert_set_object(*_edit, keyring_key_to_ptr(key)); in __key_link()
1172 void __key_link_end(struct key *keyring, in __key_link_end()
1214 int key_link(struct key *keyring, struct key *key) in key_link() argument
1222 key_check(key); in key_link()
1225 !test_bit(KEY_FLAG_TRUSTED, &key->flags)) in key_link()
1228 ret = __key_link_begin(keyring, &key->index_key, &edit); in key_link()
1231 ret = __key_link_check_live_key(keyring, key); in key_link()
1233 __key_link(key, &edit); in key_link()
1234 __key_link_end(keyring, &key->index_key, edit); in key_link()
1259 int key_unlink(struct key *keyring, struct key *key) in key_unlink() argument
1265 key_check(key); in key_unlink()
1273 &key->index_key); in key_unlink()
1300 int keyring_clear(struct key *keyring) in keyring_clear()
1330 static void keyring_revoke(struct key *keyring) in keyring_revoke()
1344 struct key *key = keyring_ptr_to_key(object); in keyring_gc_select_iterator() local
1347 if (key_is_dead(key, *limit)) in keyring_gc_select_iterator()
1349 key_get(key); in keyring_gc_select_iterator()
1355 const struct key *key = keyring_ptr_to_key(object); in keyring_gc_check_iterator() local
1358 key_check(key); in keyring_gc_check_iterator()
1359 return key_is_dead(key, *limit); in keyring_gc_check_iterator()
1368 void keyring_gc(struct key *keyring, time_t limit) in keyring_gc()