]>
Commit | Line | Data |
---|---|---|
1bdbdaff | 1 | /* |
33388b44 | 2 | * Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved. |
1bdbdaff P |
3 | * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. |
4 | * | |
5 | * Licensed under the Apache License 2.0 (the "License"). You may not use | |
6 | * this file except in compliance with the License. You can obtain a copy | |
7 | * in the file LICENSE in the source distribution or at | |
8 | * https://www.openssl.org/source/license.html | |
9 | */ | |
10 | ||
ae4186b0 DMSP |
11 | #ifndef OSSL_INTERNAL_PROPERTY_H |
12 | # define OSSL_INTERNAL_PROPERTY_H | |
1bdbdaff | 13 | |
1aedc35f MC |
14 | #include "internal/cryptlib.h" |
15 | ||
1bdbdaff | 16 | typedef struct ossl_method_store_st OSSL_METHOD_STORE; |
1793d270 | 17 | typedef struct ossl_property_list_st OSSL_PROPERTY_LIST; |
1bdbdaff | 18 | |
505f4660 | 19 | /* Initialisation */ |
b4250010 | 20 | int ossl_property_parse_init(OSSL_LIB_CTX *ctx); |
505f4660 | 21 | |
1793d270 | 22 | /* Property definition parser */ |
b4250010 | 23 | OSSL_PROPERTY_LIST *ossl_parse_property(OSSL_LIB_CTX *ctx, const char *defn); |
1793d270 | 24 | /* Property query parser */ |
b4250010 | 25 | OSSL_PROPERTY_LIST *ossl_parse_query(OSSL_LIB_CTX *ctx, const char *s); |
1793d270 RL |
26 | /* Property checker of query vs definition */ |
27 | int ossl_property_match_count(const OSSL_PROPERTY_LIST *query, | |
28 | const OSSL_PROPERTY_LIST *defn); | |
b4250010 | 29 | int ossl_property_is_enabled(OSSL_LIB_CTX *ctx, const char *property_name, |
e0624f0d | 30 | const OSSL_PROPERTY_LIST *prop_list); |
b305452f RL |
31 | /* Free a parsed property list */ |
32 | void ossl_property_free(OSSL_PROPERTY_LIST *p); | |
33 | ||
1793d270 | 34 | |
1bdbdaff | 35 | /* Implementation store functions */ |
b4250010 | 36 | OSSL_METHOD_STORE *ossl_method_store_new(OSSL_LIB_CTX *ctx); |
1bdbdaff | 37 | void ossl_method_store_free(OSSL_METHOD_STORE *store); |
c1d56231 RL |
38 | int ossl_method_store_add(OSSL_METHOD_STORE *store, const OSSL_PROVIDER *prov, |
39 | int nid, const char *properties, void *method, | |
40 | int (*method_up_ref)(void *), | |
41 | void (*method_destruct)(void *)); | |
42 | int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, | |
43 | const void *method); | |
1bdbdaff | 44 | int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, |
f9e504e8 P |
45 | const char *prop_query, void **method); |
46 | ||
47 | /* Get the global properties associate with the specified library context */ | |
b4250010 DMSP |
48 | OSSL_PROPERTY_LIST **ossl_ctx_global_properties(OSSL_LIB_CTX *ctx, |
49 | int loadconfig); | |
1bdbdaff | 50 | |
c2969ff6 | 51 | /* property query cache functions */ |
1bdbdaff P |
52 | int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, |
53 | const char *prop_query, void **result); | |
54 | int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, | |
bdbf2df2 P |
55 | const char *prop_query, void *result, |
56 | int (*method_up_ref)(void *), | |
57 | void (*method_destruct)(void *)); | |
04cb5ec0 SL |
58 | |
59 | void ossl_method_store_flush_cache(OSSL_METHOD_STORE *store, int all); | |
f9e504e8 P |
60 | |
61 | /* Merge two property queries together */ | |
62 | OSSL_PROPERTY_LIST *ossl_property_merge(const OSSL_PROPERTY_LIST *a, | |
63 | const OSSL_PROPERTY_LIST *b); | |
64 | ||
1bdbdaff | 65 | #endif |