Commit a5f7a8b0 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge branch 'openssl_compat'

parents 957cdb54 fa52b6f0
Loading
Loading
Loading
Loading
+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.
+15 −16
Original line number Diff line number Diff line
@@ -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
+0 −1
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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