diff --git a/lib/iscsi/md5.c b/lib/iscsi/md5.c index c316ac354..1a87f09fd 100644 --- a/lib/iscsi/md5.c +++ b/lib/iscsi/md5.c @@ -33,9 +33,6 @@ */ #include "spdk/stdinc.h" - -#include - #include "iscsi/md5.h" int md5init(struct spdk_md5ctx *md5ctx) @@ -45,7 +42,18 @@ int md5init(struct spdk_md5ctx *md5ctx) if (md5ctx == NULL) { return -1; } - rc = MD5_Init(&md5ctx->md5ctx); + + md5ctx->md5ctx = EVP_MD_CTX_create(); + if (md5ctx->md5ctx == NULL) { + return -1; + } + + rc = EVP_DigestInit_ex(md5ctx->md5ctx, EVP_md5(), NULL); + /* For EVP_DigestInit_ex, 1 == success, 0 == failure. */ + if (rc == 0) { + EVP_MD_CTX_destroy(md5ctx->md5ctx); + md5ctx->md5ctx = NULL; + } return rc; } @@ -56,7 +64,9 @@ int md5final(void *md5, struct spdk_md5ctx *md5ctx) if (md5ctx == NULL || md5 == NULL) { return -1; } - rc = MD5_Final(md5, &md5ctx->md5ctx); + rc = EVP_DigestFinal_ex(md5ctx->md5ctx, md5, NULL); + EVP_MD_CTX_destroy(md5ctx->md5ctx); + md5ctx->md5ctx = NULL; return rc; } @@ -70,6 +80,6 @@ int md5update(struct spdk_md5ctx *md5ctx, const void *data, size_t len) if (data == NULL || len == 0) { return 0; } - rc = MD5_Update(&md5ctx->md5ctx, data, len); + rc = EVP_DigestUpdate(md5ctx->md5ctx, data, len); return rc; } diff --git a/lib/iscsi/md5.h b/lib/iscsi/md5.h index d6fc4c1ff..5a307983f 100644 --- a/lib/iscsi/md5.h +++ b/lib/iscsi/md5.h @@ -38,11 +38,12 @@ #include "spdk/stdinc.h" #include +#include #define SPDK_MD5DIGEST_LEN MD5_DIGEST_LENGTH struct spdk_md5ctx { - MD5_CTX md5ctx; + EVP_MD_CTX *md5ctx; }; int md5init(struct spdk_md5ctx *md5ctx);