Blob Blame History Raw
diff -up efl-1.18.2/src/lib/eet/eet_cipher.c.fixup efl-1.18.2/src/lib/eet/eet_cipher.c
--- efl-1.18.2/src/lib/eet/eet_cipher.c.fixup	2016-10-19 10:31:31.601037298 -0400
+++ efl-1.18.2/src/lib/eet/eet_cipher.c	2016-10-19 10:43:13.258515381 -0400
@@ -475,9 +475,15 @@ eet_identity_sign(FILE    *fp,
    gnutls_datum_t signum = { NULL, 0 };
    gnutls_privkey_t privkey;
 # else /* ifdef HAVE_GNUTLS */
-   EVP_MD_CTX md_ctx;
    unsigned int sign_len = 0;
    int cert_len = 0;
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_MD_CTX *md_ctx = EVP_MD_CTX_new();
+   if (md_ctx == NULL)
+     return EET_ERROR_BAD_OBJECT;
+#  else /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
+   EVP_MD_CTX md_ctx;
+#  endif /* if OPENSSL_VERSION_NUMBER >= 0x10100000L */
 # endif /* ifdef HAVE_GNUTLS */
 
    /* A few check and flush pending write. */
@@ -560,6 +566,15 @@ eet_identity_sign(FILE    *fp,
         goto on_error;
      }
 
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   /* Do the signature. */
+   EVP_SignInit(md_ctx, EVP_sha1());
+   EVP_SignUpdate(md_ctx, data, st_buf.st_size);
+   err = EVP_SignFinal(md_ctx,
+                       sign,
+                       (unsigned int *)&sign_len,
+                       key->private_key);
+#  else
    /* Do the signature. */
    EVP_SignInit(&md_ctx, EVP_sha1());
    EVP_SignUpdate(&md_ctx, data, st_buf.st_size);
@@ -567,6 +582,7 @@ eet_identity_sign(FILE    *fp,
                        sign,
                        (unsigned int *)&sign_len,
                        key->private_key);
+#  endif
    if (err != 1)
      {
         ERR_print_errors_fp(stdout);
@@ -615,6 +631,9 @@ on_error:
 # else /* ifdef HAVE_GNUTLS */
    if (cert)
      OPENSSL_free(cert);
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_MD_CTX_free(md_ctx);
+#  endif /* if OPENSSL_VERSION_NUMBER >= 0x10100000L */
 
 # endif /* ifdef HAVE_GNUTLS */
    if (sign)
@@ -739,7 +758,13 @@ eet_identity_check(const void   *data_ba
    const unsigned char *tmp;
    EVP_PKEY *pkey;
    X509 *x509;
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_MD_CTX *md_ctx = EVP_MD_CTX_new();
+   if (md_ctx == NULL)
+     return NULL;
+#  else /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
    EVP_MD_CTX md_ctx;
+#  endif /* if OPENSSL_VERSION_NUMBER >= 0x10100000L */
    int err;
 
    /* Strange but d2i_X509 seems to put 0 all over the place. */
@@ -757,10 +782,17 @@ eet_identity_check(const void   *data_ba
         return NULL;
      }
 
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   /* Verify the signature */
+   EVP_VerifyInit(md_ctx, EVP_sha1());
+   EVP_VerifyUpdate(md_ctx, data_base, data_length);
+   err = EVP_VerifyFinal(md_ctx, sign, sign_len, pkey);
+#  else /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
    /* Verify the signature */
    EVP_VerifyInit(&md_ctx, EVP_sha1());
    EVP_VerifyUpdate(&md_ctx, data_base, data_length);
    err = EVP_VerifyFinal(&md_ctx, sign, sign_len, pkey);
+#  endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
 
    X509_free(x509);
    EVP_PKEY_free(pkey);
@@ -800,6 +832,9 @@ eet_identity_check(const void   *data_ba
    raw_signature_base = NULL;
    raw_signature_length = NULL;
    x509_length = NULL;
+#  if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_MD_CTX_free(md_ctx);
+#  endif /* if OPENSSL_VERSION_NUMBER >= 0x10100000L */
    return NULL;
 #endif /* ifdef HAVE_SIGNATURE */
 }
diff -up efl-1.18.2/src/lib/emile/emile_cipher_openssl.c.fixup efl-1.18.2/src/lib/emile/emile_cipher_openssl.c
--- efl-1.18.2/src/lib/emile/emile_cipher_openssl.c.fixup	2016-10-19 10:10:05.735351607 -0400
+++ efl-1.18.2/src/lib/emile/emile_cipher_openssl.c	2016-10-19 10:30:27.529498249 -0400
@@ -87,7 +87,11 @@ emile_binbuf_cipher(Emile_Cipher_Algorit
    unsigned int crypted_length;
    int opened = 0;
    /* Openssl declarations*/
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_CIPHER_CTX *ctx;
+#else
    EVP_CIPHER_CTX ctx;
+#endif
    unsigned int *buffer = NULL;
    int tmp_len;
 
@@ -134,17 +138,43 @@ emile_binbuf_cipher(Emile_Cipher_Algorit
 
    /* Openssl create the corresponding cipher
       AES with a 256 bit key, Cipher Block Chaining mode */
-   EVP_CIPHER_CTX_init(&ctx);
-   if (!EVP_EncryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, ik, iv))
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   ctx = EVP_CIPHER_CTX_new();
+   if (ctx == NULL)
+     goto on_error;
+
+   opened = 1;
+
+   if (!EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ik, iv))
      goto on_error;
+#else
+   EVP_CIPHER_CTX_init(&ctx);
 
    opened = 1;
 
+   if (!EVP_EncryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, ik, iv))
+     goto on_error;
+#endif
+
    memset(iv, 0, sizeof (iv));
    memset(ik, 0, sizeof (ik));
 
    pointer = (unsigned char*) eina_binbuf_string_get(result);
 
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   /* Openssl encrypt */
+   if (!EVP_EncryptUpdate(ctx, pointer + sizeof (int), &tmp_len,
+                          (unsigned char *)buffer,
+                          eina_binbuf_length_get(data) + sizeof(unsigned int)))
+     goto on_error;
+
+   /* Openssl close the cipher */
+   if (!EVP_EncryptFinal_ex(ctx, pointer + sizeof (int) + tmp_len,
+                            &tmp_len))
+     goto on_error;
+
+   EVP_CIPHER_CTX_free(ctx);
+#else
    /* Openssl encrypt */
    if (!EVP_EncryptUpdate(&ctx, pointer + sizeof (int), &tmp_len,
                           (unsigned char *)buffer,
@@ -157,6 +187,8 @@ emile_binbuf_cipher(Emile_Cipher_Algorit
      goto on_error;
 
    EVP_CIPHER_CTX_cleanup(&ctx);
+#endif
+
    free(buffer);
 
    return result;
@@ -167,8 +199,11 @@ on_error:
 
    /* Openssl error */
    if (opened)
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+     EVP_CIPHER_CTX_free(ctx);
+#else
      EVP_CIPHER_CTX_cleanup(&ctx);
-
+#endif
    free(buffer);
 
    /* General error */
@@ -186,7 +221,11 @@ emile_binbuf_decipher(Emile_Cipher_Algor
 {
    Eina_Binbuf *result = NULL;
    unsigned int *over;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   EVP_CIPHER_CTX *ctx;
+#else
    EVP_CIPHER_CTX ctx;
+#endif
    unsigned char ik[MAX_KEY_LEN];
    unsigned char iv[MAX_IV_LEN];
    unsigned char key_material[MAX_KEY_LEN + MAX_IV_LEN];
@@ -230,15 +269,35 @@ emile_binbuf_decipher(Emile_Cipher_Algor
    eina_binbuf_append_length(result, (unsigned char*) (over + 1), tmp_len);
 
    /* Openssl create the corresponding cipher */
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   ctx = EVP_CIPHER_CTX_new();
+   if (ctx == NULL)
+     goto on_error;
+   opened = 1;
+
+   if (!EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ik, iv))
+     goto on_error;
+#else
    EVP_CIPHER_CTX_init(&ctx);
    opened = 1;
 
    if (!EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, ik, iv))
      goto on_error;
+#endif
 
    memset(iv, 0, sizeof (iv));
    memset(ik, 0, sizeof (ik));
 
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+   /* Openssl decrypt */
+   if (!EVP_DecryptUpdate(ctx,
+                          (void*) eina_binbuf_string_get(result), &tmp,
+                          (void*) (over + 1), tmp_len))
+     goto on_error;
+
+   /* Openssl close the cipher*/
+   EVP_CIPHER_CTX_free(ctx);
+#else
    /* Openssl decrypt */
    if (!EVP_DecryptUpdate(&ctx,
                           (void*) eina_binbuf_string_get(result), &tmp,
@@ -247,6 +306,7 @@ emile_binbuf_decipher(Emile_Cipher_Algor
 
    /* Openssl close the cipher*/
    EVP_CIPHER_CTX_cleanup(&ctx);
+#endif
 
    /* Get the decrypted data size */
    tmp = *(unsigned int*)(eina_binbuf_string_get(result));
@@ -265,7 +325,11 @@ on_error:
    memset(ik, 0, sizeof (ik));
 
    if (opened)
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+     EVP_CIPHER_CTX_free(ctx);
+#else
      EVP_CIPHER_CTX_cleanup(&ctx);
+#endif
 
    eina_binbuf_free(result);