1 | /* |
2 | * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. |
3 | * |
4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at |
7 | * https://www.openssl.org/source/license.html |
8 | */ |
9 | |
10 | #include "internal/cryptlib.h" |
11 | |
12 | typedef struct ossl_namemap_st OSSL_NAMEMAP; |
13 | |
14 | OSSL_NAMEMAP *ossl_namemap_stored(OPENSSL_CTX *libctx); |
15 | |
16 | OSSL_NAMEMAP *ossl_namemap_new(void); |
17 | void ossl_namemap_free(OSSL_NAMEMAP *namemap); |
18 | int ossl_namemap_empty(OSSL_NAMEMAP *namemap); |
19 | |
20 | int ossl_namemap_add_name(OSSL_NAMEMAP *namemap, int number, const char *name); |
21 | int ossl_namemap_add_name_n(OSSL_NAMEMAP *namemap, int number, |
22 | const char *name, size_t name_len); |
23 | |
24 | /* |
25 | * The number<->name relationship is 1<->many |
26 | * Therefore, the name->number mapping is a simple function, while the |
27 | * number->name mapping is an iterator. |
28 | */ |
29 | int ossl_namemap_name2num(const OSSL_NAMEMAP *namemap, const char *name); |
30 | int ossl_namemap_name2num_n(const OSSL_NAMEMAP *namemap, |
31 | const char *name, size_t name_len); |
32 | const char *ossl_namemap_num2name(const OSSL_NAMEMAP *namemap, int number, |
33 | size_t idx); |
34 | void ossl_namemap_doall_names(const OSSL_NAMEMAP *namemap, int number, |
35 | void (*fn)(const char *name, void *data), |
36 | void *data); |
37 | |
38 | /* |
39 | * A utility that handles several names in a string, divided by a given |
40 | * separator. |
41 | */ |
42 | int ossl_namemap_add_names(OSSL_NAMEMAP *namemap, int number, |
43 | const char *names, const char separator); |
44 | |