1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3 * Copyright (c) 2020, Vaisala Oyj.
4 */
5
6 #include <teeacl.h>
7 #include <stdio.h>
8 #include <string.h>
9 #include <uuid.h>
10
teeacl_group_acl_uuid(char uuid_buf[TEEACL_L_UUID],gid_t group)11 int teeacl_group_acl_uuid(char uuid_buf[TEEACL_L_UUID], gid_t group)
12 {
13 uuid_t g_uuid = { 0 };
14 uuid_t k_uuid = { 0 };
15 char gid_buf[TEEACL_L_UUID] = { 0 };
16 size_t gid_buf_len = 0;
17 uint gstr_len = 6;
18 int rv = snprintf(gid_buf, TEEACL_L_UUID, "gid=%x", group);
19
20 if (rv < 0)
21 return rv;
22 if (rv >= TEEACL_L_UUID)
23 return -1;
24 rv = uuid_parse(KERNEL_NAMESPACE, k_uuid);
25 if (rv < 0)
26 return rv;
27
28 gid_buf_len = strnlen(gid_buf, TEEACL_L_UUID);
29
30 uuid_generate_sha1(g_uuid, k_uuid, gid_buf, gid_buf_len);
31
32 memcpy(uuid_buf, "group:", gstr_len);
33 uuid_unparse(g_uuid, uuid_buf + gstr_len);
34 return 0;
35 }
36