diff --git a/dap_chain_cert.c b/dap_chain_cert.c index d98289a13653d9f6ee53e27907dc0b1b8355d37b..097360e985a46ff8b1b6ba73b90cd30bd3ebbd1a 100755 --- a/dap_chain_cert.c +++ b/dap_chain_cert.c @@ -31,6 +31,7 @@ #include "uthash.h" #include "utlist.h" #include "dap_common.h" +#include "dap_config.h" #include "dap_string.h" #include "dap_strfuncs.h" #include "dap_chain_cert.h" @@ -278,8 +279,24 @@ dap_chain_cert_t * dap_chain_cert_find_by_name(const char * a_cert_name) HASH_FIND_STR(s_certs,a_cert_name,l_cert_item); if ( l_cert_item ){ return l_cert_item->cert ; - }else - return NULL; + } else { + dap_chain_cert_t *l_cert = NULL; + uint16_t l_ca_folders_size = 0; + char **l_ca_folders; + char *l_cert_path = NULL; + l_ca_folders = dap_config_get_array_str(g_config,"resources","ca_folders",&l_ca_folders_size); + for (uint16_t i=0; i < l_ca_folders_size; ++i) { + l_cert_path = dap_strjoin("", l_ca_folders[i], "/", a_cert_name, ".dcert", (char*)NULL); + l_cert = dap_chain_cert_file_load(l_cert_path); + if (l_cert) { + goto ret; + } + } + ret: + if (l_cert_path) + DAP_DELETE(l_cert_path); + return l_cert; + } }