jpayne@68: .\" jpayne@68: .\" Copyright (C) 2019 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_MOVE 3 "29 May 2019" Linux "Linux Key Management Calls" jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH NAME jpayne@68: keyctl_move \- Move a key between keyrings jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH SYNOPSIS jpayne@68: .nf jpayne@68: .B #include jpayne@68: .sp jpayne@68: .BI "long keyctl_move(key_serial_t " key ", key_serial_t " from_keyring "," jpayne@68: .br jpayne@68: .BI " key_serial_t " to_keyring ", unsigned int " flags ");" jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH DESCRIPTION jpayne@68: .BR keyctl_move () jpayne@68: atomically unlinks jpayne@68: .I key jpayne@68: from jpayne@68: .I from_keyring jpayne@68: and links it into jpayne@68: .I to_keyring jpayne@68: in a single operation. Depending on the flags set, a link to any matching key jpayne@68: in to_keyring may get displaced. jpayne@68: .P jpayne@68: .I flags jpayne@68: is a bitwise-OR of zero or more of the following flags: jpayne@68: .P jpayne@68: .TP jpayne@68: .B KEYCTL_MOVE_EXCL jpayne@68: If there's a matching key in to_keyring, don't displace it but rather return jpayne@68: an error. jpayne@68: .P jpayne@68: The caller must have jpayne@68: .B write jpayne@68: permission on both keyring to be able create or remove links in them. 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 new link to it. jpayne@68: .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" jpayne@68: .SH RETURN VALUE jpayne@68: On success jpayne@68: .BR keyctl_move () 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 one of the keyrings specified are invalid. jpayne@68: .TP jpayne@68: .B ENOKEY jpayne@68: A key with the same type and description is present in to_keyring and jpayne@68: KEYCTL_MOVE_EXCL is set. jpayne@68: .TP jpayne@68: .B EKEYEXPIRED jpayne@68: The key or one of the keyrings specified have expired. jpayne@68: .TP jpayne@68: .B EKEYREVOKED jpayne@68: The key or one of the keyrings specified have been revoked. 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: .TP jpayne@68: .B EACCES jpayne@68: The keyrings exist, but are not jpayne@68: .B writable jpayne@68: by the calling process. jpayne@68: .TP jpayne@68: .B ENOMEM jpayne@68: Insufficient memory to effect the changes. jpayne@68: .TP jpayne@68: .B EDQUOT jpayne@68: Expanding to_keyring would exceed the keyring owner's quota. 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: