PROV: Add a proper provider context structure for OpenSSL providers
[openssl.git] / providers / common / provider_ctx.c
1 /*
2  * Copyright 2020 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 <stdlib.h>
11 #include "prov/provider_ctx.h"
12
13 PROV_CTX *PROV_CTX_new(void)
14 {
15     return OPENSSL_zalloc(sizeof(PROV_CTX));
16 }
17
18 void PROV_CTX_free(PROV_CTX *ctx)
19 {
20     OPENSSL_free(ctx);
21 }
22
23 void PROV_CTX_set0_library_context(PROV_CTX *ctx, OPENSSL_CTX *libctx)
24 {
25     if (ctx != NULL)
26         ctx->libctx = libctx;
27 }
28
29 void PROV_CTX_set0_provider(PROV_CTX *ctx, const OSSL_PROVIDER *provider)
30 {
31     if (ctx != NULL)
32         ctx->provider = provider;
33 }
34
35
36 OPENSSL_CTX *PROV_CTX_get0_library_context(PROV_CTX *ctx)
37 {
38     if (ctx == NULL)
39         return NULL;
40     return ctx->libctx;
41 }
42
43 const OSSL_PROVIDER *PROV_CTX_get0_provider(PROV_CTX *ctx)
44 {
45     if (ctx == NULL)
46         return NULL;
47     return ctx->provider;
48 }