PROV: Add a proper provider context structure for OpenSSL providers
[openssl.git] / providers / common / provider_ctx.c
diff --git a/providers/common/provider_ctx.c b/providers/common/provider_ctx.c
new file mode 100644 (file)
index 0000000..66c7c74
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#include <stdlib.h>
+#include "prov/provider_ctx.h"
+
+PROV_CTX *PROV_CTX_new(void)
+{
+    return OPENSSL_zalloc(sizeof(PROV_CTX));
+}
+
+void PROV_CTX_free(PROV_CTX *ctx)
+{
+    OPENSSL_free(ctx);
+}
+
+void PROV_CTX_set0_library_context(PROV_CTX *ctx, OPENSSL_CTX *libctx)
+{
+    if (ctx != NULL)
+        ctx->libctx = libctx;
+}
+
+void PROV_CTX_set0_provider(PROV_CTX *ctx, const OSSL_PROVIDER *provider)
+{
+    if (ctx != NULL)
+        ctx->provider = provider;
+}
+
+
+OPENSSL_CTX *PROV_CTX_get0_library_context(PROV_CTX *ctx)
+{
+    if (ctx == NULL)
+        return NULL;
+    return ctx->libctx;
+}
+
+const OSSL_PROVIDER *PROV_CTX_get0_provider(PROV_CTX *ctx)
+{
+    if (ctx == NULL)
+        return NULL;
+    return ctx->provider;
+}