Skip to content

Commit d532861

Browse files
committed
arrays don't go in header files
1 parent 2bec851 commit d532861

File tree

2 files changed

+73
-71
lines changed

2 files changed

+73
-71
lines changed

src/protocols/der/base.c

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,78 @@ fr_table_num_sorted_t const tag_name_to_number[] = {
8989
};
9090
static size_t tag_name_to_number_len = NUM_ELEMENTS(tag_name_to_number);
9191

92+
/*
93+
* Create a mapping between FR_TYPE_* and valid FR_DER_TAG_*'s
94+
*/
95+
static const bool *fr_type_to_der_tags[] = {
96+
[FR_TYPE_MAX] = NULL,
97+
[FR_TYPE_BOOL] = (bool []){[FR_DER_TAG_BOOLEAN] = true,
98+
[FR_DER_TAG_INTEGER] = true,
99+
[FR_DER_TAG_NULL] = true,
100+
[FR_DER_TAG_MAX] = false},
101+
[FR_TYPE_UINT8] = (bool []){[FR_DER_TAG_INTEGER] = true,
102+
[FR_DER_TAG_ENUMERATED] = true,
103+
[FR_DER_TAG_MAX] = false},
104+
[FR_TYPE_UINT16] = (bool []){[FR_DER_TAG_INTEGER] = true,
105+
[FR_DER_TAG_ENUMERATED] = true,
106+
[FR_DER_TAG_MAX] = false},
107+
[FR_TYPE_UINT32] = (bool []){[FR_DER_TAG_INTEGER] = true,
108+
[FR_DER_TAG_ENUMERATED] = true,
109+
[FR_DER_TAG_MAX] = false},
110+
[FR_TYPE_UINT64] = (bool []){[FR_DER_TAG_INTEGER] = true,
111+
[FR_DER_TAG_ENUMERATED] = true,
112+
[FR_DER_TAG_MAX] = false},
113+
[FR_TYPE_INT8] = (bool []){[FR_DER_TAG_INTEGER] = true,
114+
[FR_DER_TAG_ENUMERATED] = true,
115+
[FR_DER_TAG_MAX] = false},
116+
[FR_TYPE_INT16] = (bool []){[FR_DER_TAG_INTEGER] = true,
117+
[FR_DER_TAG_ENUMERATED] = true,
118+
[FR_DER_TAG_MAX] = false},
119+
[FR_TYPE_INT32] = (bool []){[FR_DER_TAG_INTEGER] = true,
120+
[FR_DER_TAG_ENUMERATED] = true,
121+
[FR_DER_TAG_MAX] = false},
122+
[FR_TYPE_INT64] = (bool []){[FR_DER_TAG_INTEGER] = true,
123+
[FR_DER_TAG_ENUMERATED] = true,
124+
[FR_DER_TAG_MAX] = false},
125+
[FR_TYPE_OCTETS] = (bool []){[FR_DER_TAG_BITSTRING] = true,
126+
[FR_DER_TAG_OCTETSTRING] = true,
127+
[FR_DER_TAG_MAX] = false},
128+
[FR_TYPE_STRING] = (bool []){[FR_DER_TAG_OID] = true,
129+
[FR_DER_TAG_UTF8_STRING] = true,
130+
[FR_DER_TAG_PRINTABLE_STRING] = true,
131+
[FR_DER_TAG_T61_STRING] = true,
132+
[FR_DER_TAG_IA5_STRING] = true,
133+
[FR_DER_TAG_VISIBLE_STRING] = true,
134+
[FR_DER_TAG_GENERAL_STRING] = true,
135+
[FR_DER_TAG_UNIVERSAL_STRING] = true,
136+
[FR_DER_TAG_MAX] = false},
137+
[FR_TYPE_DATE] = (bool []){[FR_DER_TAG_UTC_TIME] = true,
138+
[FR_DER_TAG_GENERALIZED_TIME] = true,
139+
[FR_DER_TAG_MAX] = false},
140+
[FR_TYPE_TLV] = (bool []){[FR_DER_TAG_SEQUENCE] = true,
141+
[FR_DER_TAG_SET] = true,
142+
[FR_DER_TAG_MAX] = false},
143+
[FR_TYPE_STRUCT] = (bool []){[FR_DER_TAG_BITSTRING] = true,
144+
[FR_DER_TAG_SEQUENCE] = true,
145+
[FR_DER_TAG_SET] = true,
146+
[FR_DER_TAG_MAX] = false},
147+
[FR_TYPE_GROUP] = (bool []){[FR_DER_TAG_SEQUENCE] = true,
148+
[FR_DER_TAG_SET] = true,
149+
[FR_DER_TAG_MAX] = false}
150+
};
151+
152+
/*
153+
* Return true if the given type can be encoded as the given tag.
154+
* @param[in] type The fr_type to check.
155+
* @param[in] tag The der tag to check.
156+
* @return true if the type can be encoded as the given tag.
157+
*/
158+
bool fr_type_to_der_tag_valid(fr_type_t type, fr_der_tag_num_t tag)
159+
{
160+
return fr_type_to_der_tags[type][tag];
161+
}
162+
163+
92164
int fr_der_global_init(void)
93165
{
94166
if (instance_count > 0) {

src/protocols/der/der.h

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -48,77 +48,6 @@ typedef enum {
4848

4949
extern fr_der_tag_constructed_t tag_labels[];
5050

51-
/*
52-
* Create a mapping between FR_TYPE_* and valid FR_DER_TAG_*'s
53-
*/
54-
static bool *fr_type_to_der_tags[] = {
55-
[FR_TYPE_MAX] = NULL,
56-
[FR_TYPE_BOOL] = (bool []){[FR_DER_TAG_BOOLEAN] = true,
57-
[FR_DER_TAG_INTEGER] = true,
58-
[FR_DER_TAG_NULL] = true,
59-
[FR_DER_TAG_MAX] = false},
60-
[FR_TYPE_UINT8] = (bool []){[FR_DER_TAG_INTEGER] = true,
61-
[FR_DER_TAG_ENUMERATED] = true,
62-
[FR_DER_TAG_MAX] = false},
63-
[FR_TYPE_UINT16] = (bool []){[FR_DER_TAG_INTEGER] = true,
64-
[FR_DER_TAG_ENUMERATED] = true,
65-
[FR_DER_TAG_MAX] = false},
66-
[FR_TYPE_UINT32] = (bool []){[FR_DER_TAG_INTEGER] = true,
67-
[FR_DER_TAG_ENUMERATED] = true,
68-
[FR_DER_TAG_MAX] = false},
69-
[FR_TYPE_UINT64] = (bool []){[FR_DER_TAG_INTEGER] = true,
70-
[FR_DER_TAG_ENUMERATED] = true,
71-
[FR_DER_TAG_MAX] = false},
72-
[FR_TYPE_INT8] = (bool []){[FR_DER_TAG_INTEGER] = true,
73-
[FR_DER_TAG_ENUMERATED] = true,
74-
[FR_DER_TAG_MAX] = false},
75-
[FR_TYPE_INT16] = (bool []){[FR_DER_TAG_INTEGER] = true,
76-
[FR_DER_TAG_ENUMERATED] = true,
77-
[FR_DER_TAG_MAX] = false},
78-
[FR_TYPE_INT32] = (bool []){[FR_DER_TAG_INTEGER] = true,
79-
[FR_DER_TAG_ENUMERATED] = true,
80-
[FR_DER_TAG_MAX] = false},
81-
[FR_TYPE_INT64] = (bool []){[FR_DER_TAG_INTEGER] = true,
82-
[FR_DER_TAG_ENUMERATED] = true,
83-
[FR_DER_TAG_MAX] = false},
84-
[FR_TYPE_OCTETS] = (bool []){[FR_DER_TAG_BITSTRING] = true,
85-
[FR_DER_TAG_OCTETSTRING] = true,
86-
[FR_DER_TAG_MAX] = false},
87-
[FR_TYPE_STRING] = (bool []){[FR_DER_TAG_OID] = true,
88-
[FR_DER_TAG_UTF8_STRING] = true,
89-
[FR_DER_TAG_PRINTABLE_STRING] = true,
90-
[FR_DER_TAG_T61_STRING] = true,
91-
[FR_DER_TAG_IA5_STRING] = true,
92-
[FR_DER_TAG_VISIBLE_STRING] = true,
93-
[FR_DER_TAG_GENERAL_STRING] = true,
94-
[FR_DER_TAG_UNIVERSAL_STRING] = true,
95-
[FR_DER_TAG_MAX] = false},
96-
[FR_TYPE_DATE] = (bool []){[FR_DER_TAG_UTC_TIME] = true,
97-
[FR_DER_TAG_GENERALIZED_TIME] = true,
98-
[FR_DER_TAG_MAX] = false},
99-
[FR_TYPE_TLV] = (bool []){[FR_DER_TAG_SEQUENCE] = true,
100-
[FR_DER_TAG_SET] = true,
101-
[FR_DER_TAG_MAX] = false},
102-
[FR_TYPE_STRUCT] = (bool []){[FR_DER_TAG_BITSTRING] = true,
103-
[FR_DER_TAG_SEQUENCE] = true,
104-
[FR_DER_TAG_SET] = true,
105-
[FR_DER_TAG_MAX] = false},
106-
[FR_TYPE_GROUP] = (bool []){[FR_DER_TAG_SEQUENCE] = true,
107-
[FR_DER_TAG_SET] = true,
108-
[FR_DER_TAG_MAX] = false}
109-
};
110-
111-
/*
112-
* Return true if the given type can be encoded as the given tag.
113-
* @param[in] type The fr_type to check.
114-
* @param[in] tag The der tag to check.
115-
* @return true if the type can be encoded as the given tag.
116-
*/
117-
static inline CC_HINT(always_inline) bool fr_type_to_der_tag_valid(fr_type_t type, fr_der_tag_num_t tag)
118-
{
119-
return fr_type_to_der_tags[type][tag];
120-
}
121-
12251
#define DER_MAX_STR 16384
12352

12453
#define DER_UTC_TIME_LEN 13 //!< Length of the UTC time string.
@@ -179,6 +108,7 @@ static inline fr_der_attr_flags_t const *fr_der_attr_flags(fr_dict_attr_t const
179108
* base.c
180109
*/
181110
fr_der_tag_num_t fr_type_to_der_tag_default(fr_type_t type);
111+
bool fr_type_to_der_tag_valid(fr_type_t type, fr_der_tag_num_t tag);
182112

183113
int fr_der_global_init(void);
184114
void fr_der_global_free(void);

0 commit comments

Comments
 (0)