diff options
author | Jakub Zelenka <bukka@php.net> | 2016-03-06 11:49:36 +0000 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2016-07-17 17:43:35 +0100 |
commit | 98514f96c98227afb606cc8f2d5845a5676635e9 (patch) | |
tree | 71c5bc64ed3ae14105722801916f1cddbbe56363 | |
parent | d73735a750c7623d410f462159d30683a0714ef9 (diff) | |
download | php-git-98514f96c98227afb606cc8f2d5845a5676635e9.tar.gz |
Use opaque EVP_MD in phar_verify_signature
-rw-r--r-- | ext/phar/util.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/ext/phar/util.c b/ext/phar/util.c index eed6a10d39..e8e2b57b5d 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -1487,7 +1487,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, BIO *in; EVP_PKEY *key; EVP_MD *mdtype = (EVP_MD *) EVP_sha1(); - EVP_MD_CTX md_ctx; + EVP_MD_CTX *md_ctx; #else int tempsig; #endif @@ -1560,7 +1560,8 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, return FAILURE; } - EVP_VerifyInit(&md_ctx, mdtype); + md_ctx = EVP_MD_CTX_create(); + EVP_VerifyInit(md_ctx, mdtype); read_len = end_of_phar; if ((size_t)read_len > sizeof(buf)) { @@ -1572,7 +1573,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, php_stream_seek(fp, 0, SEEK_SET); while (read_size && (len = php_stream_read(fp, (char*)buf, read_size)) > 0) { - EVP_VerifyUpdate (&md_ctx, buf, len); + EVP_VerifyUpdate (md_ctx, buf, len); read_len -= (zend_off_t)len; if (read_len < read_size) { @@ -1580,9 +1581,9 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, } } - if (EVP_VerifyFinal(&md_ctx, (unsigned char *)sig, sig_len, key) != 1) { + if (EVP_VerifyFinal(md_ctx, (unsigned char *)sig, sig_len, key) != 1) { /* 1: signature verified, 0: signature does not match, -1: failed signature operation */ - EVP_MD_CTX_cleanup(&md_ctx); + EVP_MD_CTX_destroy(md_ctx); if (error) { spprintf(error, 0, "broken openssl signature"); @@ -1591,7 +1592,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, return FAILURE; } - EVP_MD_CTX_cleanup(&md_ctx); + EVP_MD_CTX_destroy(md_ctx); #endif *signature_len = phar_hex_str((const char*)sig, sig_len, signature); |