keyctl_link, keyctl_unlink - link/unlink a key to/from a keyring
#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);
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 to create
or remove links in it.
The caller must have
link permission on a key to be able to create a link
to it.
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 appropriate error.
- 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.
This is a library function that can be found in
libkeyutils. When
linking,
-lkeyutils should be specified to the linker.
keyctl(1),
add_key(2),
keyctl(2),
request_key(2),
keyctl(3),
keyrings(7),
keyutils(7)