Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

recursive_key_scan(3) [centos man page]

RECURSIVE_KEY_SCAN(3)					      Linux Key Utility Calls					     RECURSIVE_KEY_SCAN(3)

recursive_key_scan - Apply a function to all keys in a keyring tree recursive_session_key_scan - Apply a function to all keys in the session keyring tree SYNOPSIS
#include <keyutils.h> typedef int (*recursive_key_scanner_t)(key_serial_t parent, key_serial_t key, char *desc, int desc_len, void *data); long recursive_key_scan(key_serial_t keyring, recursive_key_scanner_t func, void *data); long recursive_session_key_scan(recursive_key_scanner_t func, void *data); DESCRIPTION
recursive_key_scan() performs a depth-first recursive scan of the specified keyring tree and applies func to every link found in the acces- sible keyrings in that tree. data is passed to each invocation of func. The return values of func are summed and returned as the overall return value. Errors are ignored. Inaccessible keyrings are not scanned, but links to them are still passed to func. recursive_session_key_scan() works exactly like recursive_key_scan() with the caller's session keyring specified as the starting keyring. The callback function is called for each link found in all the keyrings in the nominated tree and so may be called multiple times for a particular key if that key has multiple links to it. The callback function is passed the following parameters: parent The keyring containing the link or 0 for the initial key. key The key to which the link points. desc and desc_len A pointer to the raw description and its length as retrieved with keyctl_describe_alloc(). These will be NULL and -1 respectively if the description couldn't be retrieved and errno will retain the error from keyctl_describe_alloc(). data The data passed to the scanner function. RETURN VALUE
These functions return the sum of the results of the callback functions they invoke. ERRORS
Ignored. LINKING
When linking, -lkeyutils should be specified to the linker. SEE ALSO
keyctl(3), keyctl_describe_alloc(3) Linux 10 Mar 2011 RECURSIVE_KEY_SCAN(3)

Check Out this Related Man Page

KEYCTL_LINK(3)						    Linux Key Management Calls						    KEYCTL_LINK(3)

keyctl_link - Link a key to a keyring keyctl_unlink - Unlink a key from a keyring SYNOPSIS
#include <keyutils.h> long keyctl_link(key_serial_t key, key_serial_t keyring); long keyctl_unlink(key_serial_t key, key_serial_t keyring); DESCRIPTION
keyctl_link() creates a link from keyring to key, displacing any link to another key of the same type and description in that keyring if one exists. keyctl_unlink() removes the link from keyring to key if it exists. The caller must have write permission on a keyring to be able create or remove links in it. The caller must have link permission on a key to be able to create a link to it. RETURN VALUE
On success keyctl_link() and keyctl_unlink() return 0. On error, the value -1 will be returned and errno will have been set to an appro- priate error. ERRORS
ENOKEY The key or the keyring specified are invalid. EKEYEXPIRED The key or the keyring specified have expired. EKEYREVOKED The key or the keyring specified have been revoked. EACCES The keyring exists, but is not writable by the calling process. For keyctl_link() only: ENOMEM Insufficient memory to expand the keyring EDQUOT Expanding the keyring would exceed the keyring owner's quota. EACCES The key exists, but is not linkable by the calling process. LINKING
This is a library function that can be found in libkeyutils. When linking, -lkeyutils should be specified to the linker. SEE ALSO
keyctl(1), add_key(2), keyctl(2), request_key(2), keyctl_get_keyring_ID(3), keyctl_join_session_keyring(3), keyctl_update(3), keyctl_revoke(3), keyctl_chown(3), keyctl_setperm(3), keyctl_describe(3), keyctl_clear(3), keyctl_search(3), keyctl_read(3), keyctl_instantiate(3), keyctl_negate(3), keyctl_set_reqkey_keyring(3), keyctl_set_timeout(3), keyctl_assume_authority(3), keyctl_describe_alloc(3), keyctl_read_alloc(3), request-key(8) Linux 4 May 2006 KEYCTL_LINK(3)
Man Page