diff -rupN openssl-1.1.0-pre6-original/crypto/evp/m_sigver.c openssl-1.1.0-pre6-type/crypto/evp/m_sigver.c
--- openssl-1.1.0-pre6-original/crypto/evp/m_sigver.c	2016-08-04 16:00:46.000000000 +0200
+++ openssl-1.1.0-pre6-type/crypto/evp/m_sigver.c	2016-08-05 10:23:28.561478887 +0200
@@ -40,14 +40,14 @@ static int do_sigver_init(EVP_MD_CTX *ct
 
     if (ver) {
         if (ctx->pctx->pmeth->verifyctx_init) {
-            if (ctx->pctx->pmeth->verifyctx_init(ctx->pctx, ctx) <= 0)
+            if (ctx->pctx->pmeth->verifyctx_init(ctx->pctx, ctx, &type) <= 0)
                 return 0;
             ctx->pctx->operation = EVP_PKEY_OP_VERIFYCTX;
         } else if (EVP_PKEY_verify_init(ctx->pctx) <= 0)
             return 0;
     } else {
         if (ctx->pctx->pmeth->signctx_init) {
-            if (ctx->pctx->pmeth->signctx_init(ctx->pctx, ctx) <= 0)
+            if (ctx->pctx->pmeth->signctx_init(ctx->pctx, ctx, &type) <= 0)
                 return 0;
             ctx->pctx->operation = EVP_PKEY_OP_SIGNCTX;
         } else if (EVP_PKEY_sign_init(ctx->pctx) <= 0)
diff -rupN openssl-1.1.0-pre6-original/crypto/evp/pmeth_lib.c openssl-1.1.0-pre6-type/crypto/evp/pmeth_lib.c
--- openssl-1.1.0-pre6-original/crypto/evp/pmeth_lib.c	2016-08-04 16:00:46.000000000 +0200
+++ openssl-1.1.0-pre6-type/crypto/evp/pmeth_lib.c	2016-08-05 10:23:28.562478887 +0200
@@ -481,7 +481,7 @@ void EVP_PKEY_meth_set_verify_recover(EV
 
 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
                                int (*signctx_init) (EVP_PKEY_CTX *ctx,
-                                                    EVP_MD_CTX *mctx),
+                                                    EVP_MD_CTX *mctx, const EVP_MD **type),
                                int (*signctx) (EVP_PKEY_CTX *ctx,
                                                unsigned char *sig,
                                                size_t *siglen,
@@ -493,7 +493,7 @@ void EVP_PKEY_meth_set_signctx(EVP_PKEY_
 
 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
                                  int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
-                                                        EVP_MD_CTX *mctx),
+                                                        EVP_MD_CTX *mctx, const EVP_MD **type),
                                  int (*verifyctx) (EVP_PKEY_CTX *ctx,
                                                    const unsigned char *sig,
                                                    int siglen,
@@ -636,7 +636,7 @@ void EVP_PKEY_meth_get_verify_recover(EV
 
 void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
                                int (**psignctx_init) (EVP_PKEY_CTX *ctx,
-                                                      EVP_MD_CTX *mctx),
+                                                      EVP_MD_CTX *mctx, const EVP_MD **type),
                                int (**psignctx) (EVP_PKEY_CTX *ctx,
                                                  unsigned char *sig,
                                                  size_t *siglen,
@@ -650,7 +650,7 @@ void EVP_PKEY_meth_get_signctx(EVP_PKEY_
 
 void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
                                  int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
-                                                          EVP_MD_CTX *mctx),
+                                                          EVP_MD_CTX *mctx, const EVP_MD **type),
                                  int (**pverifyctx) (EVP_PKEY_CTX *ctx,
                                                      const unsigned char *sig,
                                                      int siglen,
diff -rupN openssl-1.1.0-pre6-original/crypto/include/internal/evp_int.h openssl-1.1.0-pre6-type/crypto/include/internal/evp_int.h
--- openssl-1.1.0-pre6-original/crypto/include/internal/evp_int.h	2016-08-04 16:00:46.000000000 +0200
+++ openssl-1.1.0-pre6-type/crypto/include/internal/evp_int.h	2016-08-05 10:23:28.562478887 +0200
@@ -52,10 +52,10 @@ struct evp_pkey_method_st {
     int (*verify_recover) (EVP_PKEY_CTX *ctx,
                            unsigned char *rout, size_t *routlen,
                            const unsigned char *sig, size_t siglen);
-    int (*signctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx);
+    int (*signctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx, const EVP_MD **type);
     int (*signctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
                     EVP_MD_CTX *mctx);
-    int (*verifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx);
+    int (*verifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx, const EVP_MD **type);
     int (*verifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen,
                       EVP_MD_CTX *mctx);
     int (*encrypt_init) (EVP_PKEY_CTX *ctx);
diff -rupN openssl-1.1.0-pre6-original/include/openssl/evp.h openssl-1.1.0-pre6-type/include/openssl/evp.h
--- openssl-1.1.0-pre6-original/include/openssl/evp.h	2016-08-04 16:00:48.000000000 +0200
+++ openssl-1.1.0-pre6-type/include/openssl/evp.h	2016-08-05 10:23:28.564478888 +0200
@@ -1298,7 +1298,7 @@ void EVP_PKEY_meth_set_verify_recover(EV
 
 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
                                int (*signctx_init) (EVP_PKEY_CTX *ctx,
-                                                    EVP_MD_CTX *mctx),
+                                                    EVP_MD_CTX *mctx, const EVP_MD **type),
                                int (*signctx) (EVP_PKEY_CTX *ctx,
                                                unsigned char *sig,
                                                size_t *siglen,
@@ -1306,7 +1306,7 @@ void EVP_PKEY_meth_set_signctx(EVP_PKEY_
 
 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
                                  int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
-                                                        EVP_MD_CTX *mctx),
+                                                        EVP_MD_CTX *mctx, const EVP_MD **type),
                                  int (*verifyctx) (EVP_PKEY_CTX *ctx,
                                                    const unsigned char *sig,
                                                    int siglen,
@@ -1390,7 +1390,7 @@ void EVP_PKEY_meth_get_verify_recover(EV
 
 void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
                                int (**psignctx_init) (EVP_PKEY_CTX *ctx,
-                                                      EVP_MD_CTX *mctx),
+                                                      EVP_MD_CTX *mctx, const EVP_MD **type),
                                int (**psignctx) (EVP_PKEY_CTX *ctx,
                                                  unsigned char *sig,
                                                  size_t *siglen,
@@ -1398,7 +1398,7 @@ void EVP_PKEY_meth_get_signctx(EVP_PKEY_
 
 void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
                                  int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
-                                                          EVP_MD_CTX *mctx),
+                                                          EVP_MD_CTX *mctx, const EVP_MD **type),
                                  int (**pverifyctx) (EVP_PKEY_CTX *ctx,
                                                      const unsigned char *sig,
                                                      int siglen,
