3 typedef int32_t key_serial_t;
5 #include "xlat/key_spec.h"
8 print_keyring_serial_number(key_serial_t id)
10 const char *str = xlookup(key_spec, id);
21 printstr(tcp, tcp->u_arg[0], -1);
24 printstr(tcp, tcp->u_arg[1], -1);
27 printstr(tcp, tcp->u_arg[2], tcp->u_arg[3]);
29 tprintf(", %lu, ", tcp->u_arg[3]);
30 /* keyring serial number */
31 print_keyring_serial_number(tcp->u_arg[4]);
39 printstr(tcp, tcp->u_arg[0], -1);
42 printstr(tcp, tcp->u_arg[1], -1);
45 printstr(tcp, tcp->u_arg[2], -1);
46 /* keyring serial number */
48 print_keyring_serial_number(tcp->u_arg[3]);
54 keyctl_get_keyring_id(struct tcb *tcp, key_serial_t id, int create)
56 print_keyring_serial_number(id);
57 tprintf(", %d", create);
61 keyctl_update_key(struct tcb *tcp, key_serial_t id, long addr, long len)
63 print_keyring_serial_number(id);
65 printstr(tcp, addr, len);
66 tprintf(", %lu", len);
70 keyctl_handle_key_key(struct tcb *tcp, key_serial_t id1, key_serial_t id2)
72 print_keyring_serial_number(id1);
74 print_keyring_serial_number(id2);
78 keyctl_read_key(struct tcb *tcp, key_serial_t id, long addr, long len)
81 print_keyring_serial_number(id);
87 long rval = tcp->u_rval > len ?
88 len : (tcp->u_rval ? -1 : 0);
89 printstr(tcp, addr, rval);
91 tprintf(", %lu", len);
96 keyctl_keyring_search(struct tcb *tcp, key_serial_t id1, long addr1,
97 long addr2, key_serial_t id2)
99 print_keyring_serial_number(id1);
101 printstr(tcp, addr1, -1);
103 printstr(tcp, addr2, -1);
105 print_keyring_serial_number(id2);
109 keyctl_chown_key(struct tcb *tcp, key_serial_t id, int user, int group)
111 print_keyring_serial_number(id);
112 tprintf(", %d, %d", user, group);
116 keyctl_instantiate_key(struct tcb *tcp, key_serial_t id1, long addr,
117 long len, key_serial_t id2)
119 print_keyring_serial_number(id1);
121 printstr(tcp, addr, len);
122 tprintf(", %lu, ", len);
123 print_keyring_serial_number(id2);
127 keyctl_instantiate_key_iov(struct tcb *tcp, key_serial_t id1,
128 long addr, long len, key_serial_t id2)
130 print_keyring_serial_number(id1);
132 tprint_iov(tcp, len, addr, 1);
133 tprintf(", %lu, ", len);
134 print_keyring_serial_number(id2);
138 keyctl_negate_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
141 print_keyring_serial_number(id1);
142 tprintf(", %u, ", timeout);
143 print_keyring_serial_number(id2);
147 keyctl_reject_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
148 unsigned error, key_serial_t id2)
150 print_keyring_serial_number(id1);
151 tprintf(", %u, %u, ", timeout, error);
152 print_keyring_serial_number(id2);
156 keyctl_set_timeout(struct tcb *tcp, key_serial_t id, unsigned timeout)
158 print_keyring_serial_number(id);
159 tprintf(", %u", timeout);
163 keyctl_get_persistent(struct tcb *tcp, int uid, key_serial_t id)
165 tprintf("%d, ", uid);
166 print_keyring_serial_number(id);
169 #include "xlat/key_perms.h"
172 keyctl_setperm_key(struct tcb *tcp, key_serial_t id, uint32_t perm)
174 print_keyring_serial_number(id);
176 printflags(key_perms, perm, "KEY_???");
179 #include "xlat/key_reqkeys.h"
180 #include "xlat/keyctl_commands.h"
184 int cmd = tcp->u_arg[0];
187 printxval(keyctl_commands, cmd, "KEYCTL_???");
192 case KEYCTL_GET_KEYRING_ID:
193 keyctl_get_keyring_id(tcp, tcp->u_arg[1], tcp->u_arg[2]);
196 case KEYCTL_JOIN_SESSION_KEYRING:
197 printstr(tcp, tcp->u_arg[1], -1);
201 keyctl_update_key(tcp, tcp->u_arg[1],
202 tcp->u_arg[2], tcp->u_arg[3]);
207 case KEYCTL_INVALIDATE:
208 case KEYCTL_ASSUME_AUTHORITY:
209 print_keyring_serial_number(tcp->u_arg[1]);
214 keyctl_handle_key_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
217 case KEYCTL_DESCRIBE:
219 case KEYCTL_GET_SECURITY:
220 keyctl_read_key(tcp, tcp->u_arg[1],
221 tcp->u_arg[2], tcp->u_arg[3]);
225 keyctl_keyring_search(tcp, tcp->u_arg[1], tcp->u_arg[2],
226 tcp->u_arg[3], tcp->u_arg[4]);
230 keyctl_chown_key(tcp, tcp->u_arg[1],
231 tcp->u_arg[2], tcp->u_arg[3]);
235 keyctl_setperm_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
238 case KEYCTL_INSTANTIATE:
239 keyctl_instantiate_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
240 tcp->u_arg[3], tcp->u_arg[4]);
244 keyctl_negate_key(tcp, tcp->u_arg[1],
245 tcp->u_arg[2], tcp->u_arg[3]);
248 case KEYCTL_SET_REQKEY_KEYRING:
249 printxval(key_reqkeys, tcp->u_arg[1], "KEY_REQKEY_DEFL_???");
252 case KEYCTL_SET_TIMEOUT:
253 keyctl_set_timeout(tcp, tcp->u_arg[1], tcp->u_arg[2]);
256 case KEYCTL_SESSION_TO_PARENT:
260 keyctl_reject_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
261 tcp->u_arg[3], tcp->u_arg[4]);
264 case KEYCTL_INSTANTIATE_IOV:
265 keyctl_instantiate_key_iov(tcp, tcp->u_arg[1],
266 tcp->u_arg[2], tcp->u_arg[3],
270 case KEYCTL_GET_PERSISTENT:
271 keyctl_get_persistent(tcp, tcp->u_arg[1], tcp->u_arg[2]);
275 tprintf("%#lx, %#lx, %#lx, %#lx",
276 tcp->u_arg[1], tcp->u_arg[2],
277 tcp->u_arg[3], tcp->u_arg[4]);