Lines Matching defs:namemap

10 #include "internal/namemap.h"
28 * The namemap itself
61 /* OSSL_LIB_CTX_METHOD functions for a namemap stored in a library context */
65 OSSL_NAMEMAP *namemap = ossl_namemap_new();
67 if (namemap != NULL)
68 namemap->stored = 1;
70 return namemap;
75 OSSL_NAMEMAP *namemap = vnamemap;
77 if (namemap != NULL) {
79 namemap->stored = 0;
80 ossl_namemap_free(namemap);
95 int ossl_namemap_empty(OSSL_NAMEMAP *namemap)
101 if (namemap == NULL)
104 if (!CRYPTO_THREAD_read_lock(namemap->lock))
106 rv = namemap->max_number == 0;
107 CRYPTO_THREAD_unlock(namemap->lock);
111 return namemap == NULL || tsan_load(&namemap->max_number) == 0;
130 * Call the callback for all names in the namemap with the given number.
134 int ossl_namemap_doall_names(const OSSL_NAMEMAP *namemap, int number,
150 if (!CRYPTO_THREAD_read_lock(namemap->lock))
153 num_names = lh_NAMENUM_ENTRY_num_items(namemap->namenum);
155 CRYPTO_THREAD_unlock(namemap->lock);
160 CRYPTO_THREAD_unlock(namemap->lock);
163 lh_NAMENUM_ENTRY_doall_DOALL_NAMES_DATA(namemap->namenum, do_name,
165 CRYPTO_THREAD_unlock(namemap->lock);
174 static int namemap_name2num_n(const OSSL_NAMEMAP *namemap,
183 lh_NAMENUM_ENTRY_retrieve(namemap->namenum, &namenum_tmpl);
188 int ossl_namemap_name2num_n(const OSSL_NAMEMAP *namemap,
194 if (namemap == NULL)
195 namemap = ossl_namemap_stored(NULL);
198 if (namemap == NULL)
201 if (!CRYPTO_THREAD_read_lock(namemap->lock))
203 number = namemap_name2num_n(namemap, name, name_len);
204 CRYPTO_THREAD_unlock(namemap->lock);
209 int ossl_namemap_name2num(const OSSL_NAMEMAP *namemap, const char *name)
214 return ossl_namemap_name2num_n(namemap, name, strlen(name));
232 const char *ossl_namemap_num2name(const OSSL_NAMEMAP *namemap, int number,
239 if (!ossl_namemap_doall_names(namemap, number, do_num2name, &data))
244 static int namemap_add_name_n(OSSL_NAMEMAP *namemap, int number,
251 if ((tmp_number = namemap_name2num_n(namemap, name, name_len)) != 0)
260 number != 0 ? number : 1 + tsan_counter(&namemap->max_number);
261 (void)lh_NAMENUM_ENTRY_insert(namemap->namenum, namenum);
263 if (lh_NAMENUM_ENTRY_error(namemap->namenum))
272 int ossl_namemap_add_name_n(OSSL_NAMEMAP *namemap, int number,
278 if (namemap == NULL)
279 namemap = ossl_namemap_stored(NULL);
282 if (name == NULL || name_len == 0 || namemap == NULL)
285 if (!CRYPTO_THREAD_write_lock(namemap->lock))
287 tmp_number = namemap_add_name_n(namemap, number, name, name_len);
288 CRYPTO_THREAD_unlock(namemap->lock);
292 int ossl_namemap_add_name(OSSL_NAMEMAP *namemap, int number, const char *name)
297 return ossl_namemap_add_name_n(namemap, number, name, strlen(name));
300 int ossl_namemap_add_names(OSSL_NAMEMAP *namemap, int number,
306 /* Check that we have a namemap */
307 if (!ossl_assert(namemap != NULL)) {
312 if (!CRYPTO_THREAD_write_lock(namemap->lock))
326 this_number = namemap_name2num_n(namemap, p, l);
351 this_number = namemap_add_name_n(namemap, number, p, l);
362 CRYPTO_THREAD_unlock(namemap->lock);
366 CRYPTO_THREAD_unlock(namemap->lock);
378 /* Creates an initial namemap with names found in the legacy method db */
470 OSSL_NAMEMAP *namemap =
474 if (namemap == NULL)
478 nms = ossl_namemap_empty(namemap);
494 get_legacy_cipher_names, namemap);
496 get_legacy_md_names, namemap);
500 get_legacy_pkey_meth_names(EVP_PKEY_asn1_get0(i), namemap);
504 return namemap;
509 OSSL_NAMEMAP *namemap;
511 if ((namemap = OPENSSL_zalloc(sizeof(*namemap))) != NULL
512 && (namemap->lock = CRYPTO_THREAD_lock_new()) != NULL
513 && (namemap->namenum =
515 return namemap;
517 ossl_namemap_free(namemap);
521 void ossl_namemap_free(OSSL_NAMEMAP *namemap)
523 if (namemap == NULL || namemap->stored)
526 lh_NAMENUM_ENTRY_doall(namemap->namenum, namenum_free);
527 lh_NAMENUM_ENTRY_free(namemap->namenum);
529 CRYPTO_THREAD_lock_free(namemap->lock);
530 OPENSSL_free(namemap);