diff --git a/src/openssl.c b/src/openssl.c index e810ad03..b26842b9 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -507,23 +507,39 @@ _libssh2_dsa_sha1_sign(libssh2_dsa_ctx * dsactx, } #endif /* LIBSSH_DSA */ +int +libssh2_sha1_init(libssh2_sha1_ctx *ctx) +{ + EVP_MD_CTX_init(ctx); + return EVP_DigestInit(ctx, EVP_get_digestbyname("sha1")); +} + void libssh2_sha1(const unsigned char *message, unsigned long len, unsigned char *out) { EVP_MD_CTX ctx; + EVP_MD_CTX_init(&ctx); EVP_DigestInit(&ctx, EVP_get_digestbyname("sha1")); EVP_DigestUpdate(&ctx, message, len); EVP_DigestFinal(&ctx, out, NULL); } +int +libssh2_md5_init(libssh2_md5_ctx *ctx) +{ + EVP_MD_CTX_init(ctx); + return EVP_DigestInit(ctx, EVP_get_digestbyname("md5")); +} + void libssh2_md5(const unsigned char *message, unsigned long len, unsigned char *out) { EVP_MD_CTX ctx; + EVP_MD_CTX_init(&ctx); EVP_DigestInit(&ctx, EVP_get_digestbyname("md5")); EVP_DigestUpdate(&ctx, message, len); EVP_DigestFinal(&ctx, out, NULL); diff --git a/src/openssl.h b/src/openssl.h index 6f21a1af..55330146 100644 --- a/src/openssl.h +++ b/src/openssl.h @@ -107,7 +107,7 @@ #define _libssh2_random(buf, len) RAND_bytes ((buf), (len)) #define libssh2_sha1_ctx EVP_MD_CTX -#define libssh2_sha1_init(ctx) EVP_DigestInit(ctx, EVP_get_digestbyname("sha1")) +int libssh2_sha1_init(libssh2_sha1_ctx *ctx); #define libssh2_sha1_update(ctx, data, len) EVP_DigestUpdate(&(ctx), data, len) #define libssh2_sha1_final(ctx, out) EVP_DigestFinal(&(ctx), out, NULL) void libssh2_sha1(const unsigned char *message, unsigned long len, unsigned char *out); @@ -115,8 +115,7 @@ void libssh2_sha1(const unsigned char *message, unsigned long len, unsigned char #define libssh2_md5_ctx EVP_MD_CTX /* returns 0 in case of failure */ -#define libssh2_md5_init(ctx) EVP_DigestInit(ctx, EVP_get_digestbyname("md5")) - +int libssh2_md5_init(libssh2_md5_ctx *); #define libssh2_md5_update(ctx, data, len) EVP_DigestUpdate(&(ctx), data, len) #define libssh2_md5_final(ctx, out) EVP_DigestFinal(&(ctx), out, NULL) void libssh2_md5(const unsigned char *message, unsigned long len, unsigned char *out);