Adjust all accesses to EVP_MD_CTX to use accessor functions.

Reviewed-by: Rich Salz <rsalz@openssl.org>
diff --git a/test/ecdsatest.c b/test/ecdsatest.c
index d56836f..dcd9ba0 100644
--- a/test/ecdsatest.c
+++ b/test/ecdsatest.c
@@ -188,17 +188,19 @@
     const char message[] = "abc";
     unsigned char digest[20];
     unsigned int dgst_len = 0;
-    EVP_MD_CTX md_ctx;
+    EVP_MD_CTX *md_ctx = EVP_MD_CTX_create();
     EC_KEY *key = NULL;
     ECDSA_SIG *signature = NULL;
     BIGNUM *r = NULL, *s = NULL;
     BIGNUM *kinv = NULL, *rp = NULL;
 
-    EVP_MD_CTX_init(&md_ctx);
+    if (md_ctx == NULL)
+        goto x962_int_err;
+
     /* get the message digest */
-    if (!EVP_DigestInit(&md_ctx, EVP_sha1())
-        || !EVP_DigestUpdate(&md_ctx, (const void *)message, 3)
-        || !EVP_DigestFinal(&md_ctx, digest, &dgst_len))
+    if (!EVP_DigestInit(md_ctx, EVP_sha1())
+        || !EVP_DigestUpdate(md_ctx, (const void *)message, 3)
+        || !EVP_DigestFinal(md_ctx, digest, &dgst_len))
         goto x962_int_err;
 
     BIO_printf(out, "testing %s: ", OBJ_nid2sn(nid));
@@ -244,7 +246,7 @@
     ECDSA_SIG_free(signature);
     BN_free(r);
     BN_free(s);
-    EVP_MD_CTX_cleanup(&md_ctx);
+    EVP_MD_CTX_destroy(md_ctx);
     BN_clear_free(kinv);
     BN_clear_free(rp);
     return ret;
diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
index ac79388..50c9e91 100644
--- a/test/evp_extra_test.c
+++ b/test/evp_extra_test.c
@@ -277,19 +277,21 @@
     EVP_PKEY *pkey = NULL;
     unsigned char *sig = NULL;
     size_t sig_len = 0;
-    EVP_MD_CTX md_ctx, md_ctx_verify;
+    EVP_MD_CTX *md_ctx, *md_ctx_verify;
 
-    EVP_MD_CTX_init(&md_ctx);
-    EVP_MD_CTX_init(&md_ctx_verify);
+    md_ctx = EVP_MD_CTX_create();
+    md_ctx_verify = EVP_MD_CTX_create();
+    if (md_ctx == NULL || md_ctx_verify == NULL)
+        goto out;
 
     pkey = load_example_rsa_key();
     if (pkey == NULL ||
-        !EVP_DigestSignInit(&md_ctx, NULL, EVP_sha256(), NULL, pkey) ||
-        !EVP_DigestSignUpdate(&md_ctx, kMsg, sizeof(kMsg))) {
+        !EVP_DigestSignInit(md_ctx, NULL, EVP_sha256(), NULL, pkey) ||
+        !EVP_DigestSignUpdate(md_ctx, kMsg, sizeof(kMsg))) {
         goto out;
     }
     /* Determine the size of the signature. */
-    if (!EVP_DigestSignFinal(&md_ctx, NULL, &sig_len)) {
+    if (!EVP_DigestSignFinal(md_ctx, NULL, &sig_len)) {
         goto out;
     }
     /* Sanity check for testing. */
@@ -299,14 +301,14 @@
     }
 
     sig = OPENSSL_malloc(sig_len);
-    if (sig == NULL || !EVP_DigestSignFinal(&md_ctx, sig, &sig_len)) {
+    if (sig == NULL || !EVP_DigestSignFinal(md_ctx, sig, &sig_len)) {
         goto out;
     }
 
     /* Ensure that the signature round-trips. */
-    if (!EVP_DigestVerifyInit(&md_ctx_verify, NULL, EVP_sha256(), NULL, pkey)
-        || !EVP_DigestVerifyUpdate(&md_ctx_verify, kMsg, sizeof(kMsg))
-        || !EVP_DigestVerifyFinal(&md_ctx_verify, sig, sig_len)) {
+    if (!EVP_DigestVerifyInit(md_ctx_verify, NULL, EVP_sha256(), NULL, pkey)
+        || !EVP_DigestVerifyUpdate(md_ctx_verify, kMsg, sizeof(kMsg))
+        || !EVP_DigestVerifyFinal(md_ctx_verify, sig, sig_len)) {
         goto out;
     }
 
@@ -317,8 +319,8 @@
         ERR_print_errors_fp(stderr);
     }
 
-    EVP_MD_CTX_cleanup(&md_ctx);
-    EVP_MD_CTX_cleanup(&md_ctx_verify);
+    EVP_MD_CTX_destroy(md_ctx);
+    EVP_MD_CTX_destroy(md_ctx_verify);
     EVP_PKEY_free(pkey);
     OPENSSL_free(sig);
 
@@ -329,15 +331,15 @@
 {
     int ret = 0;
     EVP_PKEY *pkey = NULL;
-    EVP_MD_CTX md_ctx;
+    EVP_MD_CTX *md_ctx;
 
-    EVP_MD_CTX_init(&md_ctx);
+    md_ctx = EVP_MD_CTX_create();
 
     pkey = load_example_rsa_key();
     if (pkey == NULL ||
-        !EVP_DigestVerifyInit(&md_ctx, NULL, EVP_sha256(), NULL, pkey) ||
-        !EVP_DigestVerifyUpdate(&md_ctx, kMsg, sizeof(kMsg)) ||
-        !EVP_DigestVerifyFinal(&md_ctx, kSignature, sizeof(kSignature))) {
+        !EVP_DigestVerifyInit(md_ctx, NULL, EVP_sha256(), NULL, pkey) ||
+        !EVP_DigestVerifyUpdate(md_ctx, kMsg, sizeof(kMsg)) ||
+        !EVP_DigestVerifyFinal(md_ctx, kSignature, sizeof(kSignature))) {
         goto out;
     }
     ret = 1;
@@ -347,7 +349,7 @@
         ERR_print_errors_fp(stderr);
     }
 
-    EVP_MD_CTX_cleanup(&md_ctx);
+    EVP_MD_CTX_destroy(md_ctx);
     EVP_PKEY_free(pkey);
 
     return ret;
diff --git a/test/evp_test.c b/test/evp_test.c
index 83d1749..92e153f 100644
--- a/test/evp_test.c
+++ b/test/evp_test.c
@@ -713,8 +713,7 @@
         goto err;
     err = NULL;
  err:
-    if (mctx)
-        EVP_MD_CTX_destroy(mctx);
+    EVP_MD_CTX_destroy(mctx);
     t->err = err;
     return 1;
 }
@@ -1129,8 +1128,7 @@
         goto err;
     err = NULL;
  err:
-    if (mctx)
-        EVP_MD_CTX_destroy(mctx);
+    EVP_MD_CTX_destroy(mctx);
     OPENSSL_free(mac);
     EVP_PKEY_CTX_free(genctx);
     EVP_PKEY_free(key);
diff --git a/test/gost2814789test.c b/test/gost2814789test.c
index 56a8ae3..486326c 100644
--- a/test/gost2814789test.c
+++ b/test/gost2814789test.c
@@ -1207,7 +1207,7 @@
     u64 ullMaxLen = 6 * 1000 * 1000;
     int ignore = 0;
     ENGINE *impl = NULL;
-    EVP_MD_CTX mctx;
+    EVP_MD_CTX *mctx;
     EVP_CIPHER_CTX ectx;
     EVP_PKEY *mac_key;
     byte bDerive[EVP_MAX_KEY_LENGTH];
@@ -1391,28 +1391,33 @@
                  */
                 continue;
             }
-            EVP_MD_CTX_init(&mctx);
+            mctx = EVP_MD_CTX_create();
+            if (mctx == NULL) {
+                fflush(NULL);
+                fprintf(stderr, "ENGINE_ctrl_cmd_string: malloc failure\n");
+                return 14;
+            }
             mac_key = EVP_PKEY_new_mac_key(NID_id_Gost28147_89_MAC, NULL,
                                            bDerive, mdl);
-            EVP_DigestSignInit(&mctx, NULL, md_g89imit, impl, mac_key);
+            EVP_DigestSignInit(mctx, NULL, md_g89imit, impl, mac_key);
             if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
-                EVP_DigestSignUpdate(&mctx, tcs[t].bIn,
+                EVP_DigestSignUpdate(mctx, tcs[t].bIn,
                                      (unsigned int)tcs[t].ullLen);
             } else {
                 for (ullLeft = tcs[t].ullLen;
                      ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
                     printf("B");
                     fflush(NULL);
-                    EVP_DigestSignUpdate(&mctx, bZB, sizeof(bZB));
+                    EVP_DigestSignUpdate(mctx, bZB, sizeof(bZB));
                 }
                 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
                 fflush(NULL);
-                EVP_DigestSignUpdate(&mctx, bZB, (unsigned int)ullLeft);
+                EVP_DigestSignUpdate(mctx, bZB, (unsigned int)ullLeft);
             }
             siglen = 4;
-            OPENSSL_assert(EVP_DigestSignFinal(&mctx, bTest, &siglen));
+            OPENSSL_assert(EVP_DigestSignFinal(mctx, bTest, &siglen));
             EVP_PKEY_free(mac_key);
-            EVP_MD_CTX_cleanup(&mctx);
+            EVP_MD_CTX_destroy(mctx);
             enlu = (int)tcs[t].ullLen;
             enlf = 0;
             l = siglen;
diff --git a/test/mdc2test.c b/test/mdc2test.c
index a0d77a3..4cf952c 100644
--- a/test/mdc2test.c
+++ b/test/mdc2test.c
@@ -95,17 +95,17 @@
     int ret = 0;
     unsigned char md[MDC2_DIGEST_LENGTH];
     int i;
-    EVP_MD_CTX c;
+    EVP_MD_CTX *c;
     static char *text = "Now is the time for all ";
 
 # ifdef CHARSET_EBCDIC
     ebcdic2ascii(text, text, strlen(text));
 # endif
 
-    EVP_MD_CTX_init(&c);
-    EVP_DigestInit_ex(&c, EVP_mdc2(), NULL);
-    EVP_DigestUpdate(&c, (unsigned char *)text, strlen(text));
-    EVP_DigestFinal_ex(&c, &(md[0]), NULL);
+    c = EVP_MD_CTX_create();
+    EVP_DigestInit_ex(c, EVP_mdc2(), NULL);
+    EVP_DigestUpdate(c, (unsigned char *)text, strlen(text));
+    EVP_DigestFinal_ex(c, &(md[0]), NULL);
 
     if (memcmp(md, pad1, MDC2_DIGEST_LENGTH) != 0) {
         for (i = 0; i < MDC2_DIGEST_LENGTH; i++)
@@ -118,11 +118,11 @@
     } else
         printf("pad1 - ok\n");
 
-    EVP_DigestInit_ex(&c, EVP_mdc2(), NULL);
+    EVP_DigestInit_ex(c, EVP_mdc2(), NULL);
     /* FIXME: use a ctl function? */
-    ((MDC2_CTX *)c.md_data)->pad_type = 2;
-    EVP_DigestUpdate(&c, (unsigned char *)text, strlen(text));
-    EVP_DigestFinal_ex(&c, &(md[0]), NULL);
+    ((MDC2_CTX *)EVP_MD_CTX_md_data(c))->pad_type = 2;
+    EVP_DigestUpdate(c, (unsigned char *)text, strlen(text));
+    EVP_DigestFinal_ex(c, &(md[0]), NULL);
 
     if (memcmp(md, pad2, MDC2_DIGEST_LENGTH) != 0) {
         for (i = 0; i < MDC2_DIGEST_LENGTH; i++)
@@ -135,7 +135,7 @@
     } else
         printf("pad2 - ok\n");
 
-    EVP_MD_CTX_cleanup(&c);
+    EVP_MD_CTX_destroy(c);
 # ifdef OPENSSL_SYS_NETWARE
     if (ret)
         printf("ERROR: %d\n", ret);
diff --git a/test/sha1test.c b/test/sha1test.c
index cc3633d..6b8ad42 100644
--- a/test/sha1test.c
+++ b/test/sha1test.c
@@ -88,7 +88,7 @@
     char **P, **R;
     static unsigned char buf[1000];
     char *p, *r;
-    EVP_MD_CTX c;
+    EVP_MD_CTX *c;
     unsigned char md[SHA_DIGEST_LENGTH];
 
 #ifdef CHARSET_EBCDIC
@@ -96,7 +96,7 @@
     ebcdic2ascii(test[1], test[1], strlen(test[1]));
 #endif
 
-    EVP_MD_CTX_init(&c);
+    c = EVP_MD_CTX_create();
     P = test;
     R = ret;
     i = 1;
@@ -118,10 +118,10 @@
 #ifdef CHARSET_EBCDIC
     ebcdic2ascii(buf, buf, 1000);
 #endif                         /* CHARSET_EBCDIC */
-    EVP_DigestInit_ex(&c, EVP_sha1(), NULL);
+    EVP_DigestInit_ex(c, EVP_sha1(), NULL);
     for (i = 0; i < 1000; i++)
-        EVP_DigestUpdate(&c, buf, 1000);
-    EVP_DigestFinal_ex(&c, md, NULL);
+        EVP_DigestUpdate(c, buf, 1000);
+    EVP_DigestFinal_ex(c, md, NULL);
     p = pt(md);
 
     r = bigret;
@@ -137,7 +137,7 @@
         printf("ERROR: %d\n", err);
 #endif
     EXIT(err);
-    EVP_MD_CTX_cleanup(&c);
+    EVP_MD_CTX_destroy(c);
     return (0);
 }
 
diff --git a/test/sha256t.c b/test/sha256t.c
index 11f3684..25f762f 100644
--- a/test/sha256t.c
+++ b/test/sha256t.c
@@ -56,7 +56,7 @@
 {
     unsigned char md[SHA256_DIGEST_LENGTH];
     int i;
-    EVP_MD_CTX evp;
+    EVP_MD_CTX *evp;
 
     fprintf(stdout, "Testing SHA-256 ");
 
@@ -80,10 +80,15 @@
         fprintf(stdout, ".");
     fflush(stdout);
 
-    EVP_MD_CTX_init(&evp);
-    EVP_DigestInit_ex(&evp, EVP_sha256(), NULL);
+    evp = EVP_MD_CTX_create();
+    if (evp == NULL) {
+        fflush(stdout);
+        fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n");
+        return 1;
+    }
+    EVP_DigestInit_ex(evp, EVP_sha256(), NULL);
     for (i = 0; i < 1000000; i += 288)
-        EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
+        EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
@@ -93,8 +98,7 @@
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                          (1000000 - i) < 288 ? 1000000 - i : 288);
-    EVP_DigestFinal_ex(&evp, md, NULL);
-    EVP_MD_CTX_cleanup(&evp);
+    EVP_DigestFinal_ex(evp, md, NULL);
 
     if (memcmp(md, app_b3, sizeof(app_b3))) {
         fflush(stdout);
@@ -129,14 +133,14 @@
         fprintf(stdout, ".");
     fflush(stdout);
 
-    EVP_MD_CTX_init(&evp);
-    EVP_DigestInit_ex(&evp, EVP_sha224(), NULL);
+    EVP_MD_CTX_init(evp);
+    EVP_DigestInit_ex(evp, EVP_sha224(), NULL);
     for (i = 0; i < 1000000; i += 64)
-        EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
+        EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                          (1000000 - i) < 64 ? 1000000 - i : 64);
-    EVP_DigestFinal_ex(&evp, md, NULL);
-    EVP_MD_CTX_cleanup(&evp);
+    EVP_DigestFinal_ex(evp, md, NULL);
+    EVP_MD_CTX_destroy(evp);
 
     if (memcmp(md, addenum_3, sizeof(addenum_3))) {
         fflush(stdout);
diff --git a/test/sha512t.c b/test/sha512t.c
index f60d319..215a71f 100644
--- a/test/sha512t.c
+++ b/test/sha512t.c
@@ -75,7 +75,7 @@
 {
     unsigned char md[SHA512_DIGEST_LENGTH];
     int i;
-    EVP_MD_CTX evp;
+    EVP_MD_CTX *evp;
 
 # ifdef OPENSSL_IA32_SSE2
     /*
@@ -113,10 +113,15 @@
         fprintf(stdout, ".");
     fflush(stdout);
 
-    EVP_MD_CTX_init(&evp);
-    EVP_DigestInit_ex(&evp, EVP_sha512(), NULL);
+    evp = EVP_MD_CTX_create();
+    if (evp == NULL) {
+        fflush(stdout);
+        fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n");
+        return 1;
+    }
+    EVP_DigestInit_ex(evp, EVP_sha512(), NULL);
     for (i = 0; i < 1000000; i += 288)
-        EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
+        EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
@@ -126,8 +131,8 @@
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                          (1000000 - i) < 288 ? 1000000 - i : 288);
-    EVP_DigestFinal_ex(&evp, md, NULL);
-    EVP_MD_CTX_cleanup(&evp);
+    EVP_DigestFinal_ex(evp, md, NULL);
+    EVP_MD_CTX_cleanup(evp);
 
     if (memcmp(md, app_c3, sizeof(app_c3))) {
         fflush(stdout);
@@ -163,14 +168,13 @@
         fprintf(stdout, ".");
     fflush(stdout);
 
-    EVP_MD_CTX_init(&evp);
-    EVP_DigestInit_ex(&evp, EVP_sha384(), NULL);
+    EVP_DigestInit_ex(evp, EVP_sha384(), NULL);
     for (i = 0; i < 1000000; i += 64)
-        EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
+        EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                          "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                          (1000000 - i) < 64 ? 1000000 - i : 64);
-    EVP_DigestFinal_ex(&evp, md, NULL);
-    EVP_MD_CTX_cleanup(&evp);
+    EVP_DigestFinal_ex(evp, md, NULL);
+    EVP_MD_CTX_destroy(evp);
 
     if (memcmp(md, app_d3, sizeof(app_d3))) {
         fflush(stdout);