in OPENSSL_init().
#include <e_os.h>
#include <openssl/err.h>
+#ifdef OPENSSL_FIPS
+#include <openssl/fips.h>
+#endif
#if defined(__GNUC__) && __GNUC__>=2
void OPENSSL_init(void) __attribute__((constructor));
if (done)
return;
done = 1;
+#ifdef OPENSSL_FIPS
+ FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock);
+ FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata);
+ FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free);
+#endif
#if 1
fprintf(stderr, "Called OPENSSL_init\n");
#endif
int (*add_cb)(int *pointer, int amount,
int type, const char *file, int line));
+void FIPS_set_malloc_callbacks(
+ void *(*malloc_cb)(int num, const char *file, int line),
+ void (*free_cb)(void *));
+
#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \
alg " previous FIPS forbidden algorithm error ignored");
{
fips_free_cb(x);
}
+
+void FIPS_set_malloc_callbacks(
+ void *(*malloc_cb)(int num, const char *file, int line),
+ void (*free_cb)(void *))
+ {
+ fips_malloc_cb = malloc_cb;
+ fips_free_cb = free_cb;
+ }