1a8e1175bSopenharmony_ci/*
2a8e1175bSopenharmony_ci *  Version feature information
3a8e1175bSopenharmony_ci *
4a8e1175bSopenharmony_ci *  Copyright The Mbed TLS Contributors
5a8e1175bSopenharmony_ci *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6a8e1175bSopenharmony_ci */
7a8e1175bSopenharmony_ci
8a8e1175bSopenharmony_ci#include "common.h"
9a8e1175bSopenharmony_ci
10a8e1175bSopenharmony_ci#if defined(MBEDTLS_VERSION_C)
11a8e1175bSopenharmony_ci
12a8e1175bSopenharmony_ci#include "mbedtls/version.h"
13a8e1175bSopenharmony_ci
14a8e1175bSopenharmony_ci#include <string.h>
15a8e1175bSopenharmony_ci
16a8e1175bSopenharmony_cistatic const char * const features[] = {
17a8e1175bSopenharmony_ci#if defined(MBEDTLS_VERSION_FEATURES)
18a8e1175bSopenharmony_ci    FEATURE_DEFINES
19a8e1175bSopenharmony_ci#endif /* MBEDTLS_VERSION_FEATURES */
20a8e1175bSopenharmony_ci    NULL
21a8e1175bSopenharmony_ci};
22a8e1175bSopenharmony_ci
23a8e1175bSopenharmony_ciint mbedtls_version_check_feature(const char *feature)
24a8e1175bSopenharmony_ci{
25a8e1175bSopenharmony_ci    const char * const *idx = features;
26a8e1175bSopenharmony_ci
27a8e1175bSopenharmony_ci    if (*idx == NULL) {
28a8e1175bSopenharmony_ci        return -2;
29a8e1175bSopenharmony_ci    }
30a8e1175bSopenharmony_ci
31a8e1175bSopenharmony_ci    if (feature == NULL) {
32a8e1175bSopenharmony_ci        return -1;
33a8e1175bSopenharmony_ci    }
34a8e1175bSopenharmony_ci
35a8e1175bSopenharmony_ci    if (strncmp(feature, "MBEDTLS_", 8)) {
36a8e1175bSopenharmony_ci        return -1;
37a8e1175bSopenharmony_ci    }
38a8e1175bSopenharmony_ci
39a8e1175bSopenharmony_ci    feature += 8;
40a8e1175bSopenharmony_ci
41a8e1175bSopenharmony_ci    while (*idx != NULL) {
42a8e1175bSopenharmony_ci        if (!strcmp(*idx, feature)) {
43a8e1175bSopenharmony_ci            return 0;
44a8e1175bSopenharmony_ci        }
45a8e1175bSopenharmony_ci        idx++;
46a8e1175bSopenharmony_ci    }
47a8e1175bSopenharmony_ci    return -1;
48a8e1175bSopenharmony_ci}
49a8e1175bSopenharmony_ci
50a8e1175bSopenharmony_ci#endif /* MBEDTLS_VERSION_C */
51