1 #include "key_control.h"
5 #include <sys/syscall.h>
7 /* keyring keyctl commands */
8 #define KEYCTL_REVOKE 3 /* revoke a key */
9 #define KEYCTL_SETPERM 5 /* set permissions for a key in a keyring */
10 #define KEYCTL_SEARCH 10 /* search for a key in a keyring */
12 static long keyctl(int cmd, ...)
15 unsigned long arg2, arg3, arg4, arg5;
18 arg2 = va_arg(va, unsigned long);
19 arg3 = va_arg(va, unsigned long);
20 arg4 = va_arg(va, unsigned long);
21 arg5 = va_arg(va, unsigned long);
23 return syscall(__NR_keyctl, cmd, arg2, arg3, arg4, arg5);
26 key_serial_t add_key(const char *type,
27 const char *description,
32 return syscall(__NR_add_key, type, description, payload, plen, ringid);
35 long keyctl_revoke(key_serial_t id)
37 return keyctl(KEYCTL_REVOKE, id);
40 long keyctl_setperm(key_serial_t id, int permissions)
42 return keyctl(KEYCTL_SETPERM, id, permissions);
45 long keyctl_search(key_serial_t ringid, const char *type,
46 const char *description, key_serial_t destringid)
48 return keyctl(KEYCTL_SEARCH, ringid, type, description, destringid);