keyctl man page

keyctl — manipulate the kernel's key management facility

Synopsis

#include <keyutils.h>

long keyctl(int cmd, ...);

Description

keyctl() has a number of functions available:

KEYCTL_GET_KEYRING_ID
Ask for a keyring's ID.
KEYCTL_JOIN_SESSION_KEYRING
Join or start named session keyring.
KEYCTL_UPDATE
Update a key.
KEYCTL_REVOKE
Revoke a key.
KEYCTL_CHOWN
Set ownership of a key.
KEYCTL_SETPERM
Set perms on a key.
KEYCTL_DESCRIBE
Describe a key.
KEYCTL_CLEAR
Clear contents of a keyring.
KEYCTL_LINK
Link a key into a keyring.
KEYCTL_UNLINK
Unlink a key from a keyring.
KEYCTL_SEARCH
Search for a key in a keyring.
KEYCTL_READ
Read a key or keyring's contents.
KEYCTL_INSTANTIATE
Instantiate a partially constructed key.
KEYCTL_NEGATE
Negate a partially constructed key.
KEYCTL_SET_REQKEY_KEYRING
Set default request-key keyring.
KEYCTL_SET_TIMEOUT
Set timeout on a key.
KEYCTL_ASSUME_AUTHORITY
Assume authority to instantiate key.

These are wrapped by libkeyutils into individual functions (listed under See Also) to permit the compiler to check types.

Return Value

On success keyctl() returns the serial number of the key it found. On error, the value -1 will be returned and errno will have been set to an appropriate error.

Errors

EACCES
A key operation wasn't permitted.
EDQUOT
The key quota for the caller's user would be exceeded by creating a key or linking it to the keyring.
EKEYEXPIRED
An expired key was found or specified.
EKEYREJECTED
A rejected key was found or specified.
EKEYREVOKED
A revoked key was found or specified.
ENOKEY
No matching key was found or an invalid key was specified.

Linking

Although this is a Linux system call, it is not present in libc but can be found rather in libkeyutils. When linking, -lkeyutils should be specified to the linker.

See Also

keyctl(1), add_key(2), request_key(2), keyctl_chown(3), keyctl_clear(3), keyctl_describe(3), keyctl_describe_alloc(3), keyctl_get_keyring_ID(3), keyctl_instantiate(3), keyctl_join_session_keyring(3), keyctl_link(3), keyctl_negate(3), keyctl_read(3), keyctl_read_alloc(3), keyctl_revoke(3), keyctl_search(3), keyctl_set_reqkey_keyring(3), keyctl_set_timeout(3), keyctl_setperm(3), keyctl_unlink(3), keyctl_update(3), keyrings(7), request-key(8)

The kernel source file Documentation/security/keys.txt.

Colophon

This page is part of release 4.08 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Referenced By

add_key(2), capabilities(7), keyctl(3), keyctl_chown(3), keyctl_clear(3), keyctl_describe(3), keyctl_get_keyring_ID(3), keyctl_get_persistent(3), keyctl_get_security(3), keyctl_instantiate(3), keyctl_invalidate(3), keyctl_join_session_keyring(3), keyctl_link(3), keyctl_read(3), keyctl_revoke(3), keyctl_search(3), keyctl_session_to_parent(3), keyctl_setperm(3), keyctl_set_reqkey_keyring(3), keyctl_set_timeout(3), keyctl_update(3), keyutils(7), request_key(2), syscalls(2), systemd.exec(5), user_namespaces(7).

2015-05-07 Linux Linux Key Management Calls