The gost provider is planned to be a wrapper around the already
existing functionality, designed for ENGINE use.
The easiest way to do this is to let the gost ENGINE continue to exist
within the gost provider, as an internal ENGINE. To do that, we make
it possible to build gost_eng.c so it only populates the GOST ENGINE
structure, but doesn't perform any of the ENGINE registration. That
way, the GOST ENGINE structure becomes purely internal, and can be
used as the actual implementation of the offered provider functionality,
through diverse EVP calls that accept an ENGINE pointer.
free_cached_groups();
+# ifndef BUILDING_GOST_PROVIDER
ERR_unload_GOST_strings();
+# endif
return 1;
}
* binds it to OpenSSL libraries
*/
-static int populate_gost_engine(ENGINE* e) {
+# ifndef BUILDING_GOST_PROVIDER
+static
+# endif
+int populate_gost_engine(ENGINE* e) {
int ret = 0;
if (e == NULL)
return ret;
}
+#ifndef BUILDING_GOST_PROVIDER
static int bind_gost_engine(ENGINE* e) {
int ret = 0;
* it must manually call ENGINE_load_gost() for it to bind itself into the
* libcrypto libraries.
*/
-
void ENGINE_load_gost(void) {
ENGINE* toadd;
int ret = 0;
if (ret > 0)
ERR_clear_error();
}
-
+#endif
#endif
/* vim: set expandtab cinoptions=\:0,l1,t0,g0,(0 sw=4 : */