Lines Matching refs:key

40 static inline struct key *keyring_ptr_to_key(const struct assoc_array_ptr *x)  in keyring_ptr_to_key()
43 return (struct key *)((unsigned long)object & ~KEYRING_PTR_SUBTYPE); in keyring_ptr_to_key()
45 static inline void *keyring_key_to_ptr(struct key *key) in keyring_key_to_ptr() argument
47 if (key->type == &key_type_keyring) in keyring_key_to_ptr()
48 return (void *)((unsigned long)key | KEYRING_PTR_SUBTYPE); in keyring_key_to_ptr()
49 return key; in keyring_key_to_ptr()
76 static int keyring_instantiate(struct key *keyring,
78 static void keyring_revoke(struct key *keyring);
79 static void keyring_destroy(struct key *keyring);
80 static void keyring_describe(const struct key *keyring, struct seq_file *m);
81 static long keyring_read(const struct key *keyring,
107 static void keyring_publish_name(struct key *keyring) in keyring_publish_name()
140 static int keyring_instantiate(struct key *keyring, in keyring_instantiate()
305 const struct key *key = keyring_ptr_to_key(object); in keyring_get_object_key_chunk() local
306 return keyring_get_key_chunk(&key->index_key, level); in keyring_get_object_key_chunk()
312 const struct key *key = keyring_ptr_to_key(object); in keyring_compare_object() local
314 return key->index_key.type == index_key->type && in keyring_compare_object()
315 key->index_key.domain_tag == index_key->domain_tag && in keyring_compare_object()
316 key->index_key.desc_len == index_key->desc_len && in keyring_compare_object()
317 memcmp(key->index_key.description, index_key->description, in keyring_compare_object()
327 const struct key *key_a = keyring_ptr_to_key(object); in keyring_diff_objects()
412 static void keyring_destroy(struct key *keyring) in keyring_destroy()
427 key_put(keyres->key); in keyring_destroy()
437 static void keyring_describe(const struct key *keyring, struct seq_file *m) in keyring_describe()
461 const struct key *key = keyring_ptr_to_key(object); in keyring_read_iterator() local
465 key->type->name, key->serial, ctx->count, ctx->buflen); in keyring_read_iterator()
470 ret = put_user(key->serial, ctx->buffer); in keyring_read_iterator()
474 ctx->count += sizeof(key->serial); in keyring_read_iterator()
485 static long keyring_read(const struct key *keyring, in keyring_read()
521 struct key *keyring_alloc(const char *description, kuid_t uid, kgid_t gid, in keyring_alloc()
525 struct key *dest) in keyring_alloc()
527 struct key *keyring; in keyring_alloc()
558 int restrict_link_reject(struct key *keyring, in restrict_link_reject()
561 struct key *restriction_key) in restrict_link_reject()
569 bool key_default_cmp(const struct key *key, in key_default_cmp() argument
572 return strcmp(key->description, match_data->raw_data) == 0; in key_default_cmp()
581 const struct key *key = keyring_ptr_to_key(object); in keyring_search_iterator() local
582 unsigned long kflags = READ_ONCE(key->flags); in keyring_search_iterator()
583 short state = READ_ONCE(key->state); in keyring_search_iterator()
585 kenter("{%d}", key->serial); in keyring_search_iterator()
588 if (key->type != ctx->index_key.type) { in keyring_search_iterator()
595 time64_t expiry = READ_ONCE(key->expiry); in keyring_search_iterator()
613 if (!ctx->match_data.cmp(key, &ctx->match_data)) { in keyring_search_iterator()
620 key_task_permission(make_key_ref(key, ctx->possessed), in keyring_search_iterator()
637 ctx->result = make_key_ref(key, ctx->possessed); in keyring_search_iterator()
650 static int search_keyring(struct key *keyring, struct keyring_search_context *ctx) in search_keyring()
667 static bool search_nested_keyrings(struct key *keyring, in search_nested_keyrings()
671 struct key *keyring; in search_nested_keyrings()
679 struct key *key; in search_nested_keyrings() local
785 key = keyring_ptr_to_key(ptr); in search_nested_keyrings()
797 key_task_permission(make_key_ref(key, ctx->possessed), in search_nested_keyrings()
808 keyring = key; in search_nested_keyrings()
857 key = key_ref_to_ptr(ctx->result); in search_nested_keyrings()
858 key_check(key); in search_nested_keyrings()
860 key->last_used_at = ctx->now; in search_nested_keyrings()
906 struct key *keyring; in keyring_search_rcu()
956 key_ref_t key; in keyring_search() local
968 key = keyring_search_rcu(keyring, &ctx); in keyring_search()
973 return key; in keyring_search()
1001 static bool keyring_detect_restriction_cycle(const struct key *dest_keyring, in keyring_detect_restriction_cycle()
1004 while (keyres && keyres->key && in keyring_detect_restriction_cycle()
1005 keyres->key->type == &key_type_keyring) { in keyring_detect_restriction_cycle()
1006 if (keyres->key == dest_keyring) in keyring_detect_restriction_cycle()
1009 keyres = keyres->key->restrict_link; in keyring_detect_restriction_cycle()
1028 struct key *keyring; in keyring_restrict()
1074 key_put(restrict_link->key); in keyring_restrict()
1103 struct key *keyring, *key; in find_key_to_update() local
1121 key = keyring_ptr_to_key(object); in find_key_to_update()
1122 if (key->flags & ((1 << KEY_FLAG_INVALIDATED) | in find_key_to_update()
1127 __key_get(key); in find_key_to_update()
1128 kleave(" = {%d}", key->serial); in find_key_to_update()
1129 return make_key_ref(key, is_key_possessed(keyring_ref)); in find_key_to_update()
1143 struct key *find_keyring_by_name(const char *name, bool uid_keyring) in find_keyring_by_name()
1146 struct key *keyring; in find_keyring_by_name()
1195 const struct key *key = keyring_ptr_to_key(object); in keyring_detect_cycle_iterator() local
1197 kenter("{%d}", key->serial); in keyring_detect_cycle_iterator()
1201 if (key != ctx->match_data.raw_data) in keyring_detect_cycle_iterator()
1215 static int keyring_detect_cycle(struct key *A, struct key *B) in keyring_detect_cycle()
1238 int __key_link_lock(struct key *keyring, in __key_link_lock()
1260 int __key_move_lock(struct key *l_keyring, struct key *u_keyring, in __key_move_lock()
1294 int __key_link_begin(struct key *keyring, in __key_link_begin()
1352 int __key_link_check_live_key(struct key *keyring, struct key *key) in __key_link_check_live_key() argument
1354 if (key->type == &key_type_keyring) in __key_link_check_live_key()
1357 return keyring_detect_cycle(keyring, key); in __key_link_check_live_key()
1369 void __key_link(struct key *key, struct assoc_array_edit **_edit) in __key_link() argument
1371 __key_get(key); in __key_link()
1372 assoc_array_insert_set_object(*_edit, keyring_key_to_ptr(key)); in __key_link()
1382 void __key_link_end(struct key *keyring, in __key_link_end()
1407 static int __key_link_check_restriction(struct key *keyring, struct key *key) in __key_link_check_restriction() argument
1411 return keyring->restrict_link->check(keyring, key->type, &key->payload, in __key_link_check_restriction()
1412 keyring->restrict_link->key); in __key_link_check_restriction()
1435 int key_link(struct key *keyring, struct key *key) in key_link() argument
1443 key_check(key); in key_link()
1445 ret = __key_link_lock(keyring, &key->index_key); in key_link()
1449 ret = __key_link_begin(keyring, &key->index_key, &edit); in key_link()
1454 ret = __key_link_check_restriction(keyring, key); in key_link()
1456 ret = __key_link_check_live_key(keyring, key); in key_link()
1458 __key_link(key, &edit); in key_link()
1461 __key_link_end(keyring, &key->index_key, edit); in key_link()
1471 static int __key_unlink_lock(struct key *keyring) in __key_unlink_lock()
1484 static int __key_unlink_begin(struct key *keyring, struct key *key, in __key_unlink_begin() argument
1492 &key->index_key); in __key_unlink_begin()
1506 static void __key_unlink(struct key *keyring, struct key *key, in __key_unlink() argument
1517 static void __key_unlink_end(struct key *keyring, in __key_unlink_end() argument
1518 struct key *key, in __key_unlink_end()
1544 int key_unlink(struct key *keyring, struct key *key) in key_unlink() argument
1550 key_check(key); in key_unlink()
1556 ret = __key_unlink_begin(keyring, key, &edit); in key_unlink()
1558 __key_unlink(keyring, key, &edit); in key_unlink()
1559 __key_unlink_end(keyring, key, edit); in key_unlink()
1589 int key_move(struct key *key, in key_move() argument
1590 struct key *from_keyring, in key_move()
1591 struct key *to_keyring, in key_move()
1597 kenter("%d,%d,%d", key->serial, from_keyring->serial, to_keyring->serial); in key_move()
1602 key_check(key); in key_move()
1606 ret = __key_move_lock(from_keyring, to_keyring, &key->index_key); in key_move()
1609 ret = __key_unlink_begin(from_keyring, key, &from_edit); in key_move()
1612 ret = __key_link_begin(to_keyring, &key->index_key, &to_edit); in key_move()
1620 ret = __key_link_check_restriction(to_keyring, key); in key_move()
1623 ret = __key_link_check_live_key(to_keyring, key); in key_move()
1627 __key_unlink(from_keyring, key, &from_edit); in key_move()
1628 __key_link(key, &to_edit); in key_move()
1630 __key_link_end(to_keyring, &key->index_key, to_edit); in key_move()
1631 __key_unlink_end(from_keyring, key, from_edit); in key_move()
1646 int keyring_clear(struct key *keyring) in keyring_clear()
1676 static void keyring_revoke(struct key *keyring) in keyring_revoke()
1690 struct key *key = keyring_ptr_to_key(object); in keyring_gc_select_iterator() local
1693 if (key_is_dead(key, *limit)) in keyring_gc_select_iterator()
1695 key_get(key); in keyring_gc_select_iterator()
1701 const struct key *key = keyring_ptr_to_key(object); in keyring_gc_check_iterator() local
1704 key_check(key); in keyring_gc_check_iterator()
1705 return key_is_dead(key, *limit); in keyring_gc_check_iterator()
1714 void keyring_gc(struct key *keyring, time64_t limit) in keyring_gc()
1759 void keyring_restriction_gc(struct key *keyring, struct key_type *dead_type) in keyring_restriction_gc()
1785 key_put(keyres->key); in keyring_restriction_gc()
1786 keyres->key = NULL; in keyring_restriction_gc()