From: Alan T. DeKok Date: Sat, 22 Feb 2025 16:21:14 +0000 (-0500) Subject: add tag compatible function X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=722ed9e629fc5d03d4bd93e576663fd80494189e;p=thirdparty%2Ffreeradius-server.git add tag compatible function some attributes can be encoded in multiple ways, but will all decode to the same FreeRADIUS data type. Adding a function allows us to be more flexible about the input data. --- diff --git a/src/protocols/der/base.c b/src/protocols/der/base.c index 23270de7b31..ccde8033fa3 100644 --- a/src/protocols/der/base.c +++ b/src/protocols/der/base.c @@ -74,6 +74,16 @@ char const *fr_der_tag_to_str(fr_der_tag_t tag) return fr_table_str_by_value(tag_name_to_number, tag, "???"); } +static const uint64_t der_tags_compatible[FR_DER_TAG_MAX] = { + [FR_DER_TAG_UTC_TIME] = (1 << FR_DER_TAG_GENERALIZED_TIME), + [FR_DER_TAG_GENERALIZED_TIME] = (1 << FR_DER_TAG_UTC_TIME), +}; + +bool fr_der_tags_compatible(fr_der_tag_t tag1, fr_der_tag_t tag2) +{ + return (der_tags_compatible[tag1] & (1 << (uint64_t) tag2)) != 0; +} + /* * Create a mapping between FR_TYPE_* and valid FR_DER_TAG_*'s */ diff --git a/src/protocols/der/der.h b/src/protocols/der/der.h index 152f8f1ded7..5dab7abf965 100644 --- a/src/protocols/der/der.h +++ b/src/protocols/der/der.h @@ -132,6 +132,7 @@ static inline fr_der_attr_flags_t const *fr_der_attr_flags(fr_dict_attr_t const */ fr_der_tag_t fr_type_to_der_tag_default(fr_type_t type); bool fr_type_to_der_tag_valid(fr_type_t type, fr_der_tag_t tag); +bool fr_der_tags_compatible(fr_der_tag_t tag1, fr_der_tag_t tag2); char const *fr_der_tag_to_str(fr_der_tag_t tag); int fr_der_global_init(void);