• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3  * Licensed under the Mulan PSL v2.
4  * You can use this software according to the terms and conditions of the Mulan PSL v2.
5  * You may obtain a copy of Mulan PSL v2 at:
6  *     http://license.coscl.org.cn/MulanPSL2
7  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8  * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9  * PURPOSE.
10  * See the Mulan PSL v2 for more details.
11  */
12 #ifndef __TEE_OBJ_ATTR_H
13 #define __TEE_OBJ_ATTR_H
14 
15 #include "tee_defines.h"
16 
17 #define OBJ_MIN_SIZE_AES 16
18 #define OBJ_MAX_SIZE_AES 32
19 #define OBJ_SIZE_DES 8
20 #define OBJ_SIZE_DES3 24
21 #define OBJ_SIZE_SM4 16
22 #define OBJ_SIZE_SIP_HASH 16
23 #define OBJ_MAX_SIZE_SM4 64
24 #define OBJ_MIN_SIZE_HMAC_SM3 10
25 #define OBJ_MAX_SIZE_HMAC_SM3 128
26 #define OBJ_MIN_SIZE_HMAC 8
27 #define OBJ_MAX_SIZE_HMAC 1024
28 #define OBJ_MIN_SIZE_GENERIC_SECRET 1
29 #define OBJ_MAX_SIZE_GENERIC_SECRET 512
30 #define OBJ_MIN_SIZE_RSA_PUB_KEY (512 / 8)
31 #define OBJ_MIN_SIZE_RSA_KEY_PAIR OBJ_MIN_SIZE_RSA_PUB_KEY
32 #define OBJ_MAX_SIZE_RSA_PUB_KEY 512
33 #define OBJ_MAX_SIZE_RSA_KEY_PAIR OBJ_MAX_SIZE_RSA_PUB_KEY
34 #define OBJ_MAX_SIZE_RSA_CRT_ATTR (OBJ_MAX_SIZE_RSA_KEY_PAIR / 2)
35 #define OBJ_SIZE_RSA_PUB_EXPONENT 4
36 #define OBJ_MIN_SIZE_RSA_PUB_EXPONENT 3
37 #define OBJ_MIN_SIZE_DSA_PUB_KEY (512 / 8)
38 #define OBJ_MIN_SIZE_DSA_KEY_PAIR OBJ_MIN_SIZE_DSA_PUB_KEY
39 #define OBJ_MAX_SIZE_DSA_PUB_KEY 128
40 #define OBJ_MAX_SIZE_DSA_KEY_PAIR OBJ_MAX_SIZE_DSA_PUB_KEY
41 #define OBJ_MIN_SIZE_DH_KEY_PAIR (256 / 8)
42 #define OBJ_MAX_SIZE_DH_KEY_PAIR 256
43 #define OBJ_MIN_SIZE_ECDSA_PUB_KEY 28
44 #define OBJ_MIN_SIZE_ECDSA_KEY_PAIR OBJ_MIN_SIZE_ECDSA_PUB_KEY
45 #define OBJ_MAX_SIZE_ECDSA_PUB_KEY 66
46 #define OBJ_MAX_SIZE_ECDSA_KEY_PAIR OBJ_MAX_SIZE_ECDSA_PUB_KEY
47 #define OBJ_MIN_SIZE_ECDH_PUB_KEY 28
48 #define OBJ_MIN_SIZE_ECDH_KEY_PAIR OBJ_MIN_SIZE_ECDH_PUB_KEY
49 #define OBJ_MAX_SIZE_ECDH_PUB_KEY 66
50 #define OBJ_MAX_SIZE_ECDH_KEY_PAIR OBJ_MAX_SIZE_ECDH_PUB_KEY
51 #define OBJ_SIZE_SM2 32
52 #define OBJ_MAX_SIZE_SM2 66
53 #define OBJ_SIZE_ED25519_PUB_KEY 32
54 #define OBJ_SIZE_ED25519_KEY_PAIR OBJ_SIZE_ED25519_PUB_KEY
55 #define OBJ_MAX_SIZE_ED25519_PUB_KEY 64
56 #define OBJ_MAX_SIZE_ED25519_KEY_PAIR OBJ_MAX_SIZE_ED25519_PUB_KEY
57 #define OBJ_SIZE_X25519_PUB_KEY 32
58 #define OBJ_SIZE_X25519_KEY_PAIR OBJ_SIZE_X25519_PUB_KEY
59 #define OBJ_MIN_SIZE_PBKDF2 14
60 #define OBJ_MAX_SIZE_PBKDF2 1024
61 
62 #ifndef SUPPORT_GP_PANIC
63 #define TEE_Panic(x) \
64     do { \
65     } while (0)
66 #endif
67 
68 #define MAX_ATTR_COUNT_VALUE 8 /* rsa keypair's attr is 8 */
69 
70 #define MAX_ATTR_ARRAY_COUNT 5
71 struct obj_attr_conf_s {
72     uint32_t type;
73     uint32_t min_attr_count;
74     uint32_t max_attr_count;
75     uint32_t min_obj_size;
76     uint32_t min_attr_array[MAX_ATTR_ARRAY_COUNT];
77 };
78 
79 #define ELEM_NUM(array) (sizeof(array) / sizeof((array)[0]))
80 
81 uint32_t get_attr_count_for_object_type(uint32_t object_type);
82 uint32_t get_object_size(uint32_t object_type);
83 const struct obj_attr_conf_s *get_object_attr_conf(const TEE_ObjectHandle object);
84 TEE_Result check_object_valid(TEE_ObjectHandle object);
85 #endif
86