Loading doc/TODO +2 −1 Changes for doc/TODO: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ N - Handle rendezvousing with unverified nodes. prefix. - cpu fixes: - see if we should make use of truncate to retry - hardware accelerator support o hardware accelerator support (configure engines.) - hardware accelerator support (use instead of aes.c when reasonable) r - kill dns workers more slowly - continue decentralizing the directory - Specify and design all of the below before implementing any. Loading doc/tor.1.in +4 −0 Changes for doc/tor.1.in: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -154,6 +154,10 @@ minutes for clients, 15 minutes for servers) .TP \fBUser \fR\fIUID\fP On startup, setuid to this user. .TP \fBHardwareAccel \fR\fI0|1\fP If non-zero, try to use crypto hardware acceleration when available. (Default: 1. ) .SH CLIENT OPTIONS .PP Loading src/common/crypto.c +35 −1 Changes for src/common/crypto.c: 35 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ const char crypto_c_id[] = "$Id$"; #include <string.h> #include <openssl/engine.h> #include <openssl/err.h> #include <openssl/rsa.h> #include <openssl/pem.h> Loading Loading @@ -159,14 +160,46 @@ crypto_log_errors(int severity, const char *doing) } } static void log_engine(const char *fn, ENGINE *e) { if (e) { const char *name, *id; name = ENGINE_get_name(e); id = ENGINE_get_id(e); log(LOG_NOTICE, "Using OpenSSL engine %s [%s] for %s", name?name:"?", id?id:"?", fn); } else { log(LOG_INFO, "Using default implementation for %s", fn); } } /** Initialize the crypto library. Return 0 on success, -1 on failure. */ int crypto_global_init() int crypto_global_init(int useAccel) { if (!_crypto_global_initialized) { ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); _crypto_global_initialized = 1; setup_openssl_threading(); if (useAccel) { if (useAccel < 0) log_fn(LOG_WARN, "Initializing OpenSSL via tor_tls_init()."); log_fn(LOG_INFO, "Initializing OpenSSL engine support."); ENGINE_load_builtin_engines(); if (!ENGINE_register_all_complete()) return -1; /* XXXX make sure this isn't leaking. */ log_engine("RSA", ENGINE_get_default_RSA()); log_engine("DH", ENGINE_get_default_DH()); log_engine("RAND", ENGINE_get_default_RAND()); log_engine("SHA1", ENGINE_get_digest_engine(NID_sha1)); log_engine("3DES", ENGINE_get_cipher_engine(NID_des_ede3_ecb)); log_engine("AES", ENGINE_get_cipher_engine(NID_aes_128_ecb)); } } return 0; } Loading @@ -176,6 +209,7 @@ int crypto_global_init() int crypto_global_cleanup() { ERR_free_strings(); ENGINE_cleanup(); #ifdef TOR_IS_MULTITHREADED if (_n_openssl_mutexes) { int n = _n_openssl_mutexes; Loading src/common/crypto.h +1 −1 Changes for src/common/crypto.h: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ typedef struct crypto_digest_env_t crypto_digest_env_t; typedef struct crypto_dh_env_t crypto_dh_env_t; /* global state */ int crypto_global_init(void); int crypto_global_init(int hardwareAccel); int crypto_global_cleanup(void); /* environment setup */ Loading src/common/tortls.c +2 −3 Changes for src/common/tortls.c: 2 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -148,12 +148,11 @@ tor_tls_get_error(tor_tls *tls, int r, int extra, /** Initialize OpenSSL, unless it has already been initialized. */ static void tor_tls_init(void) { tor_tls_init() { if (!tls_library_is_initialized) { SSL_library_init(); SSL_load_error_strings(); crypto_global_init(); OpenSSL_add_all_algorithms(); crypto_global_init(-1); tls_library_is_initialized = 1; } } Loading Loading
doc/TODO +2 −1 Changes for doc/TODO: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ N - Handle rendezvousing with unverified nodes. prefix. - cpu fixes: - see if we should make use of truncate to retry - hardware accelerator support o hardware accelerator support (configure engines.) - hardware accelerator support (use instead of aes.c when reasonable) r - kill dns workers more slowly - continue decentralizing the directory - Specify and design all of the below before implementing any. Loading
doc/tor.1.in +4 −0 Changes for doc/tor.1.in: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -154,6 +154,10 @@ minutes for clients, 15 minutes for servers) .TP \fBUser \fR\fIUID\fP On startup, setuid to this user. .TP \fBHardwareAccel \fR\fI0|1\fP If non-zero, try to use crypto hardware acceleration when available. (Default: 1. ) .SH CLIENT OPTIONS .PP Loading
src/common/crypto.c +35 −1 Changes for src/common/crypto.c: 35 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ const char crypto_c_id[] = "$Id$"; #include <string.h> #include <openssl/engine.h> #include <openssl/err.h> #include <openssl/rsa.h> #include <openssl/pem.h> Loading Loading @@ -159,14 +160,46 @@ crypto_log_errors(int severity, const char *doing) } } static void log_engine(const char *fn, ENGINE *e) { if (e) { const char *name, *id; name = ENGINE_get_name(e); id = ENGINE_get_id(e); log(LOG_NOTICE, "Using OpenSSL engine %s [%s] for %s", name?name:"?", id?id:"?", fn); } else { log(LOG_INFO, "Using default implementation for %s", fn); } } /** Initialize the crypto library. Return 0 on success, -1 on failure. */ int crypto_global_init() int crypto_global_init(int useAccel) { if (!_crypto_global_initialized) { ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); _crypto_global_initialized = 1; setup_openssl_threading(); if (useAccel) { if (useAccel < 0) log_fn(LOG_WARN, "Initializing OpenSSL via tor_tls_init()."); log_fn(LOG_INFO, "Initializing OpenSSL engine support."); ENGINE_load_builtin_engines(); if (!ENGINE_register_all_complete()) return -1; /* XXXX make sure this isn't leaking. */ log_engine("RSA", ENGINE_get_default_RSA()); log_engine("DH", ENGINE_get_default_DH()); log_engine("RAND", ENGINE_get_default_RAND()); log_engine("SHA1", ENGINE_get_digest_engine(NID_sha1)); log_engine("3DES", ENGINE_get_cipher_engine(NID_des_ede3_ecb)); log_engine("AES", ENGINE_get_cipher_engine(NID_aes_128_ecb)); } } return 0; } Loading @@ -176,6 +209,7 @@ int crypto_global_init() int crypto_global_cleanup() { ERR_free_strings(); ENGINE_cleanup(); #ifdef TOR_IS_MULTITHREADED if (_n_openssl_mutexes) { int n = _n_openssl_mutexes; Loading
src/common/crypto.h +1 −1 Changes for src/common/crypto.h: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ typedef struct crypto_digest_env_t crypto_digest_env_t; typedef struct crypto_dh_env_t crypto_dh_env_t; /* global state */ int crypto_global_init(void); int crypto_global_init(int hardwareAccel); int crypto_global_cleanup(void); /* environment setup */ Loading
src/common/tortls.c +2 −3 Changes for src/common/tortls.c: 2 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -148,12 +148,11 @@ tor_tls_get_error(tor_tls *tls, int r, int extra, /** Initialize OpenSSL, unless it has already been initialized. */ static void tor_tls_init(void) { tor_tls_init() { if (!tls_library_is_initialized) { SSL_library_init(); SSL_load_error_strings(); crypto_global_init(); OpenSSL_add_all_algorithms(); crypto_global_init(-1); tls_library_is_initialized = 1; } } Loading