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