diff options
Diffstat (limited to 'src/lib/libcrypto/evp/p_verify.c')
| -rw-r--r-- | src/lib/libcrypto/evp/p_verify.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/lib/libcrypto/evp/p_verify.c b/src/lib/libcrypto/evp/p_verify.c index 8d727d8f02..d854d743a5 100644 --- a/src/lib/libcrypto/evp/p_verify.c +++ b/src/lib/libcrypto/evp/p_verify.c | |||
| @@ -58,15 +58,12 @@ | |||
| 58 | 58 | ||
| 59 | #include <stdio.h> | 59 | #include <stdio.h> |
| 60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
| 61 | #include "evp.h" | 61 | #include <openssl/evp.h> |
| 62 | #include "objects.h" | 62 | #include <openssl/objects.h> |
| 63 | #include "x509.h" | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | int EVP_VerifyFinal(ctx,sigbuf,siglen,pkey) | 65 | int EVP_VerifyFinal(EVP_MD_CTX *ctx, unsigned char *sigbuf, |
| 66 | EVP_MD_CTX *ctx; | 66 | unsigned int siglen, EVP_PKEY *pkey) |
| 67 | unsigned char *sigbuf; | ||
| 68 | unsigned int siglen; | ||
| 69 | EVP_PKEY *pkey; | ||
| 70 | { | 67 | { |
| 71 | unsigned char m[EVP_MAX_MD_SIZE]; | 68 | unsigned char m[EVP_MAX_MD_SIZE]; |
| 72 | unsigned int m_len; | 69 | unsigned int m_len; |
| @@ -88,8 +85,10 @@ EVP_PKEY *pkey; | |||
| 88 | EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE); | 85 | EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE); |
| 89 | return(-1); | 86 | return(-1); |
| 90 | } | 87 | } |
| 91 | memcpy(&tmp_ctx,ctx,sizeof(EVP_MD_CTX)); | 88 | EVP_MD_CTX_init(&tmp_ctx); |
| 92 | EVP_DigestFinal(&tmp_ctx,&(m[0]),&m_len); | 89 | EVP_MD_CTX_copy_ex(&tmp_ctx,ctx); |
| 90 | EVP_DigestFinal_ex(&tmp_ctx,&(m[0]),&m_len); | ||
| 91 | EVP_MD_CTX_cleanup(&tmp_ctx); | ||
| 93 | if (ctx->digest->verify == NULL) | 92 | if (ctx->digest->verify == NULL) |
| 94 | { | 93 | { |
| 95 | EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED); | 94 | EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED); |
