1bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#include <sys/cdefs.h>
2bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#include <sys/types.h>
3bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
4bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence__BEGIN_DECLS
5bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
6bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence// ext4enc:TODO - get these keyring standard definitions from proper system file
7bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence// keyring serial number type
8bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrencetypedef int32_t key_serial_t;
9bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
10bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence// special process keyring shortcut IDs
11bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_THREAD_KEYRING       -1 // key ID for thread-specific keyring
12bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_PROCESS_KEYRING      -2 // key ID for process-specific keyring
13bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_SESSION_KEYRING      -3 // key ID for session-specific keyring
14bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_USER_KEYRING         -4 // key ID for UID-specific keyring
15bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_USER_SESSION_KEYRING -5 // key ID for UID-session keyring
16bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence#define KEY_SPEC_GROUP_KEYRING        -6 // key ID for GID-specific keyring
17bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
18bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrencekey_serial_t add_key(const char *type,
19bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence                     const char *description,
20bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence                     const void *payload,
21bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence                     size_t plen,
22bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence                     key_serial_t ringid);
23bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
2431654044064d5bac0dd57c495ad43afb7573c393Paul Crowleylong keyctl_revoke(key_serial_t id);
2531654044064d5bac0dd57c495ad43afb7573c393Paul Crowley
26bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrencelong keyctl_setperm(key_serial_t id, int permissions);
27bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
28bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrencelong keyctl_search(key_serial_t ringid, const char *type,
29bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence                   const char *description, key_serial_t destringid);
30bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence
31bc2eb8c3fd621605ff1ccaed04a71e6685acc974Paul Lawrence__END_DECLS
32