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