jpayne@68: .\" jpayne@68: .\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. jpayne@68: .\" Written by David Howells (dhowells@redhat.com) jpayne@68: .\" jpayne@68: .\" This program is free software; you can redistribute it and/or jpayne@68: .\" modify it under the terms of the GNU General Public License jpayne@68: .\" as published by the Free Software Foundation; either version jpayne@68: .\" 2 of the License, or (at your option) any later version. jpayne@68: .\" jpayne@68: .TH KEYCTL_LINK 3 "4 May 2006" Linux "Linux Key Management Calls" jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH NAME jpayne@68: keyctl_link, keyctl_unlink \- link/unlink a key to/from a keyring jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH SYNOPSIS jpayne@68: .nf jpayne@68: .B #include jpayne@68: .sp jpayne@68: .BI "long keyctl_link(key_serial_t " key ", key_serial_t " keyring ");" jpayne@68: .sp jpayne@68: .BI "long keyctl_unlink(key_serial_t " key ", key_serial_t " keyring ");" jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH DESCRIPTION jpayne@68: .BR keyctl_link () jpayne@68: creates a link from jpayne@68: .I keyring jpayne@68: to jpayne@68: .IR key , jpayne@68: displacing any link to another key of the same type and description in that jpayne@68: keyring if one exists. jpayne@68: .P jpayne@68: .BR keyctl_unlink () jpayne@68: removes the link from jpayne@68: .I keyring jpayne@68: to jpayne@68: .I key jpayne@68: if it exists. jpayne@68: .P jpayne@68: The caller must have jpayne@68: .B write jpayne@68: permission on a keyring to be able create or remove links in it. jpayne@68: .P jpayne@68: The caller must have jpayne@68: .B link jpayne@68: permission on a key to be able to create a link to it. jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH RETURN VALUE jpayne@68: On success jpayne@68: .BR keyctl_link () jpayne@68: and jpayne@68: .BR keyctl_unlink () jpayne@68: return jpayne@68: .BR 0 . jpayne@68: On error, the value jpayne@68: .B -1 jpayne@68: will be returned and jpayne@68: .I errno jpayne@68: will have been set to an appropriate error. jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH ERRORS jpayne@68: .TP jpayne@68: .B ENOKEY jpayne@68: The key or the keyring specified are invalid. jpayne@68: .TP jpayne@68: .B EKEYEXPIRED jpayne@68: The key or the keyring specified have expired. jpayne@68: .TP jpayne@68: .B EKEYREVOKED jpayne@68: The key or the keyring specified have been revoked. jpayne@68: .TP jpayne@68: .B EACCES jpayne@68: The keyring exists, but is not jpayne@68: .B writable jpayne@68: by the calling process. jpayne@68: .P jpayne@68: For jpayne@68: .BR keyctl_link () jpayne@68: only: jpayne@68: .TP jpayne@68: .B ENOMEM jpayne@68: Insufficient memory to expand the keyring jpayne@68: .TP jpayne@68: .B EDQUOT jpayne@68: Expanding the keyring would exceed the keyring owner's quota. jpayne@68: .TP jpayne@68: .B EACCES jpayne@68: The key exists, but is not jpayne@68: .B linkable jpayne@68: by the calling process. jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH LINKING jpayne@68: This is a library function that can be found in jpayne@68: .IR libkeyutils . jpayne@68: When linking, jpayne@68: .B \-lkeyutils jpayne@68: should be specified to the linker. jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH SEE ALSO jpayne@68: .ad l jpayne@68: .nh jpayne@68: .BR keyctl (1), jpayne@68: .BR add_key (2), jpayne@68: .BR keyctl (2), jpayne@68: .BR request_key (2), jpayne@68: .BR keyctl (3), jpayne@68: .BR keyrings (7), jpayne@68: .BR keyutils (7) jpayne@68: