Home | History | Annotate | Line # | Download | only in prov
      1 /*
      2  * Copyright 2019-2025 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 #ifndef OSSL_PROV_PROVIDER_CTX_H
     11 #define OSSL_PROV_PROVIDER_CTX_H
     12 
     13 #include <openssl/types.h>
     14 #include <openssl/crypto.h>
     15 #include <openssl/bio.h>
     16 #include <openssl/core.h>
     17 #include <openssl/core_dispatch.h>
     18 
     19 typedef struct prov_ctx_st {
     20     const OSSL_CORE_HANDLE *handle;
     21     OSSL_LIB_CTX *libctx; /* For all provider modules */
     22     BIO_METHOD *corebiometh;
     23     OSSL_FUNC_core_get_params_fn *core_get_params;
     24 } PROV_CTX;
     25 
     26 /*
     27  * To be used anywhere the library context needs to be passed, such as to
     28  * fetching functions.
     29  */
     30 #define PROV_LIBCTX_OF(provctx) \
     31     ossl_prov_ctx_get0_libctx((provctx))
     32 
     33 PROV_CTX *ossl_prov_ctx_new(void);
     34 void ossl_prov_ctx_free(PROV_CTX *ctx);
     35 void ossl_prov_ctx_set0_libctx(PROV_CTX *ctx, OSSL_LIB_CTX *libctx);
     36 void ossl_prov_ctx_set0_handle(PROV_CTX *ctx, const OSSL_CORE_HANDLE *handle);
     37 void ossl_prov_ctx_set0_core_bio_method(PROV_CTX *ctx, BIO_METHOD *corebiometh);
     38 void ossl_prov_ctx_set0_core_get_params(PROV_CTX *ctx,
     39     OSSL_FUNC_core_get_params_fn *c_get_params);
     40 OSSL_LIB_CTX *ossl_prov_ctx_get0_libctx(PROV_CTX *ctx);
     41 const OSSL_CORE_HANDLE *ossl_prov_ctx_get0_handle(PROV_CTX *ctx);
     42 BIO_METHOD *ossl_prov_ctx_get0_core_bio_method(PROV_CTX *ctx);
     43 OSSL_FUNC_core_get_params_fn *ossl_prov_ctx_get0_core_get_params(PROV_CTX *ctx);
     44 const char *
     45 ossl_prov_ctx_get_param(PROV_CTX *ctx, const char *name, const char *defval);
     46 int ossl_prov_ctx_get_bool_param(PROV_CTX *ctx, const char *name, int defval);
     47 
     48 #endif
     49