emile: make cipher initialization optional.
This commit is contained in:
parent
f9dd639a92
commit
32c5f691c8
|
@ -106,6 +106,8 @@ EAPI int emile_shutdown(void);
|
|||
* @}
|
||||
*/
|
||||
|
||||
EAPI Eina_Bool emile_cipher_init(void);
|
||||
|
||||
EAPI Eina_Binbuf *emile_binbuf_cipher(const Eina_Binbuf *in,
|
||||
const char *key, unsigned int length);
|
||||
|
||||
|
|
|
@ -175,6 +175,8 @@ emile_binbuf_cipher(const Eina_Binbuf *data,
|
|||
int tmp_len;
|
||||
# endif /* ifdef HAVE_GNUTLS */
|
||||
|
||||
if (!emile_cipher_init()) return NULL;
|
||||
|
||||
# ifdef HAVE_GNUTLS
|
||||
/* Gcrypt salt generation */
|
||||
gcry_create_nonce((unsigned char *)&salt, sizeof(salt));
|
||||
|
@ -338,6 +340,8 @@ emile_binbuf_decipher(const Eina_Binbuf *data,
|
|||
int tmp = 0;
|
||||
int opened = 0;
|
||||
|
||||
if (!emile_cipher_init()) return NULL;
|
||||
|
||||
over = (unsigned int*) eina_binbuf_string_get(data);
|
||||
size = eina_binbuf_length_get(data);
|
||||
|
||||
|
|
|
@ -23,24 +23,14 @@
|
|||
GCRY_THREAD_OPTION_PTHREAD_IMPL;
|
||||
#endif /* ifdef HAVE_GNUTLS */
|
||||
|
||||
static Eina_Bool _emile_cipher_init = EINA_FALSE;
|
||||
static unsigned int _emile_init_count = 0;
|
||||
int _emile_log_dom_global = -1;
|
||||
|
||||
EAPI int
|
||||
emile_init(void)
|
||||
EAPI Eina_Bool
|
||||
emile_cipher_init(void)
|
||||
{
|
||||
if (++_emile_init_count != 1)
|
||||
return _emile_init_count;
|
||||
|
||||
if (!eina_init())
|
||||
return --_emile_init_count;
|
||||
|
||||
_emile_log_dom_global = eina_log_domain_register("emile", EINA_COLOR_CYAN);
|
||||
if (_emile_log_dom_global < 0)
|
||||
{
|
||||
EINA_LOG_ERR("Emile can not create a general log domain.");
|
||||
goto shutdown_eina;
|
||||
}
|
||||
if (_emile_cipher_init) return EINA_TRUE;
|
||||
|
||||
#ifdef HAVE_GNUTLS
|
||||
/* Before the library can be used, it must initialize itself if needed. */
|
||||
|
@ -50,7 +40,7 @@ emile_init(void)
|
|||
/* Disable warning messages about problems with the secure memory subsystem.
|
||||
This command should be run right after gcry_check_version. */
|
||||
if (gcry_control(GCRYCTL_DISABLE_SECMEM_WARN))
|
||||
goto shutdown_eet; /* This command is used to allocate a pool of secure memory and thus
|
||||
return EINA_FALSE; /* This command is used to allocate a pool of secure memory and thus
|
||||
enabling the use of secure memory. It also drops all extra privileges the
|
||||
process has (i.e. if it is run as setuid (root)). If the argument nbytes
|
||||
is 0, secure memory will be disabled. The minimum amount of secure memory
|
||||
|
@ -67,7 +57,7 @@ emile_init(void)
|
|||
"YOU ARE USING PTHREADS, BUT I CANNOT INITIALIZE THREADSAFE GCRYPT OPERATIONS!");
|
||||
|
||||
if (gnutls_global_init())
|
||||
goto shutdown_eet;
|
||||
return EINA_FALSE;
|
||||
|
||||
#endif /* ifdef HAVE_GNUTLS */
|
||||
#ifdef HAVE_OPENSSL
|
||||
|
@ -77,6 +67,27 @@ emile_init(void)
|
|||
OpenSSL_add_all_algorithms();
|
||||
#endif /* ifdef HAVE_OPENSSL */
|
||||
|
||||
_emile_cipher_init = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
emile_init(void)
|
||||
{
|
||||
if (++_emile_init_count != 1)
|
||||
return _emile_init_count;
|
||||
|
||||
if (!eina_init())
|
||||
return --_emile_init_count;
|
||||
|
||||
_emile_log_dom_global = eina_log_domain_register("emile", EINA_COLOR_CYAN);
|
||||
if (_emile_log_dom_global < 0)
|
||||
{
|
||||
EINA_LOG_ERR("Emile can not create a general log domain.");
|
||||
goto shutdown_eina;
|
||||
}
|
||||
|
||||
eina_log_timing(_emile_log_dom_global,
|
||||
EINA_LOG_STATE_STOP,
|
||||
EINA_LOG_STATE_INIT);
|
||||
|
@ -99,6 +110,8 @@ emile_shutdown(void)
|
|||
EINA_LOG_STATE_START,
|
||||
EINA_LOG_STATE_SHUTDOWN);
|
||||
|
||||
if (_emile_cipher_init)
|
||||
{
|
||||
#ifdef HAVE_GNUTLS
|
||||
/* Note that gnutls has a leak where it doesnt free stuff it alloced
|
||||
* on init. valgrind trace here:
|
||||
|
@ -119,6 +132,7 @@ emile_shutdown(void)
|
|||
EVP_cleanup();
|
||||
ERR_free_strings();
|
||||
#endif /* ifdef HAVE_OPENSSL */
|
||||
}
|
||||
|
||||
eina_log_domain_unregister(_emile_log_dom_global);
|
||||
_emile_log_dom_global = -1;
|
||||
|
|
Loading…
Reference in New Issue