Loading changes/bug17921_bug17984 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor features (compilation): - Tor builds successfully with the unreleased OpenSSL 1.1 alpha releases, and with the latest LibreSSL. Closes tickets 17921 and 17984. src/common/aes.c +15 −16 Original line number Diff line number Diff line Loading @@ -81,47 +81,46 @@ #ifdef USE_EVP_AES_CTR struct aes_cnt_cipher { EVP_CIPHER_CTX evp; }; /* We don't actually define the struct here. */ aes_cnt_cipher_t * aes_new_cipher(const char *key, const char *iv) { aes_cnt_cipher_t *cipher; cipher = tor_malloc_zero(sizeof(aes_cnt_cipher_t)); EVP_EncryptInit(&cipher->evp, EVP_aes_128_ctr(), EVP_CIPHER_CTX *cipher = EVP_CIPHER_CTX_new(); EVP_EncryptInit(cipher, EVP_aes_128_ctr(), (const unsigned char*)key, (const unsigned char *)iv); return cipher; return (aes_cnt_cipher_t *) cipher; } void aes_cipher_free(aes_cnt_cipher_t *cipher) aes_cipher_free(aes_cnt_cipher_t *cipher_) { if (!cipher) if (!cipher_) return; EVP_CIPHER_CTX_cleanup(&cipher->evp); memwipe(cipher, 0, sizeof(aes_cnt_cipher_t)); tor_free(cipher); EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; EVP_CIPHER_CTX_cleanup(cipher); EVP_CIPHER_CTX_free(cipher); } void aes_crypt(aes_cnt_cipher_t *cipher, const char *input, size_t len, aes_crypt(aes_cnt_cipher_t *cipher_, const char *input, size_t len, char *output) { int outl; EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; tor_assert(len < INT_MAX); EVP_EncryptUpdate(&cipher->evp, (unsigned char*)output, EVP_EncryptUpdate(cipher, (unsigned char*)output, &outl, (const unsigned char *)input, (int)len); } void aes_crypt_inplace(aes_cnt_cipher_t *cipher, char *data, size_t len) aes_crypt_inplace(aes_cnt_cipher_t *cipher_, char *data, size_t len) { int outl; EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; tor_assert(len < INT_MAX); EVP_EncryptUpdate(&cipher->evp, (unsigned char*)data, EVP_EncryptUpdate(cipher, (unsigned char*)data, &outl, (unsigned char*)data, (int)len); } int Loading src/common/aes.h +0 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ * \brief Headers for aes.c */ struct aes_cnt_cipher; typedef struct aes_cnt_cipher aes_cnt_cipher_t; aes_cnt_cipher_t* aes_new_cipher(const char *key, const char *iv); Loading src/common/compat_openssl.h +2 −0 Original line number Diff line number Diff line Loading @@ -35,9 +35,11 @@ (((st) == SSL3_ST_SW_SRVR_HELLO_A) || \ ((st) == SSL3_ST_SW_SRVR_HELLO_B)) #define OSSL_HANDSHAKE_STATE int #define CONST_IF_OPENSSL_1_1_API #else #define STATE_IS_SW_SERVER_HELLO(st) \ ((st) == TLS_ST_SW_SRVR_HELLO) #define CONST_IF_OPENSSL_1_1_API const #endif #endif Loading src/common/crypto.c +4 −0 Original line number Diff line number Diff line Loading @@ -373,8 +373,12 @@ crypto_global_init(int useAccel, const char *accelName, const char *accelDir) used by Tor and the set of algorithms available in the engine */ log_engine("RSA", ENGINE_get_default_RSA()); log_engine("DH", ENGINE_get_default_DH()); #ifdef OPENSSL_1_1_API log_engine("EC", ENGINE_get_default_EC()); #else log_engine("ECDH", ENGINE_get_default_ECDH()); log_engine("ECDSA", ENGINE_get_default_ECDSA()); #endif log_engine("RAND", ENGINE_get_default_RAND()); log_engine("RAND (which we will not use)", ENGINE_get_default_RAND()); log_engine("SHA1", ENGINE_get_digest_engine(NID_sha1)); Loading Loading
changes/bug17921_bug17984 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor features (compilation): - Tor builds successfully with the unreleased OpenSSL 1.1 alpha releases, and with the latest LibreSSL. Closes tickets 17921 and 17984.
src/common/aes.c +15 −16 Original line number Diff line number Diff line Loading @@ -81,47 +81,46 @@ #ifdef USE_EVP_AES_CTR struct aes_cnt_cipher { EVP_CIPHER_CTX evp; }; /* We don't actually define the struct here. */ aes_cnt_cipher_t * aes_new_cipher(const char *key, const char *iv) { aes_cnt_cipher_t *cipher; cipher = tor_malloc_zero(sizeof(aes_cnt_cipher_t)); EVP_EncryptInit(&cipher->evp, EVP_aes_128_ctr(), EVP_CIPHER_CTX *cipher = EVP_CIPHER_CTX_new(); EVP_EncryptInit(cipher, EVP_aes_128_ctr(), (const unsigned char*)key, (const unsigned char *)iv); return cipher; return (aes_cnt_cipher_t *) cipher; } void aes_cipher_free(aes_cnt_cipher_t *cipher) aes_cipher_free(aes_cnt_cipher_t *cipher_) { if (!cipher) if (!cipher_) return; EVP_CIPHER_CTX_cleanup(&cipher->evp); memwipe(cipher, 0, sizeof(aes_cnt_cipher_t)); tor_free(cipher); EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; EVP_CIPHER_CTX_cleanup(cipher); EVP_CIPHER_CTX_free(cipher); } void aes_crypt(aes_cnt_cipher_t *cipher, const char *input, size_t len, aes_crypt(aes_cnt_cipher_t *cipher_, const char *input, size_t len, char *output) { int outl; EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; tor_assert(len < INT_MAX); EVP_EncryptUpdate(&cipher->evp, (unsigned char*)output, EVP_EncryptUpdate(cipher, (unsigned char*)output, &outl, (const unsigned char *)input, (int)len); } void aes_crypt_inplace(aes_cnt_cipher_t *cipher, char *data, size_t len) aes_crypt_inplace(aes_cnt_cipher_t *cipher_, char *data, size_t len) { int outl; EVP_CIPHER_CTX *cipher = (EVP_CIPHER_CTX *) cipher_; tor_assert(len < INT_MAX); EVP_EncryptUpdate(&cipher->evp, (unsigned char*)data, EVP_EncryptUpdate(cipher, (unsigned char*)data, &outl, (unsigned char*)data, (int)len); } int Loading
src/common/aes.h +0 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ * \brief Headers for aes.c */ struct aes_cnt_cipher; typedef struct aes_cnt_cipher aes_cnt_cipher_t; aes_cnt_cipher_t* aes_new_cipher(const char *key, const char *iv); Loading
src/common/compat_openssl.h +2 −0 Original line number Diff line number Diff line Loading @@ -35,9 +35,11 @@ (((st) == SSL3_ST_SW_SRVR_HELLO_A) || \ ((st) == SSL3_ST_SW_SRVR_HELLO_B)) #define OSSL_HANDSHAKE_STATE int #define CONST_IF_OPENSSL_1_1_API #else #define STATE_IS_SW_SERVER_HELLO(st) \ ((st) == TLS_ST_SW_SRVR_HELLO) #define CONST_IF_OPENSSL_1_1_API const #endif #endif Loading
src/common/crypto.c +4 −0 Original line number Diff line number Diff line Loading @@ -373,8 +373,12 @@ crypto_global_init(int useAccel, const char *accelName, const char *accelDir) used by Tor and the set of algorithms available in the engine */ log_engine("RSA", ENGINE_get_default_RSA()); log_engine("DH", ENGINE_get_default_DH()); #ifdef OPENSSL_1_1_API log_engine("EC", ENGINE_get_default_EC()); #else log_engine("ECDH", ENGINE_get_default_ECDH()); log_engine("ECDSA", ENGINE_get_default_ECDSA()); #endif log_engine("RAND", ENGINE_get_default_RAND()); log_engine("RAND (which we will not use)", ENGINE_get_default_RAND()); log_engine("SHA1", ENGINE_get_digest_engine(NID_sha1)); Loading