summaryrefslogtreecommitdiffstats
path: root/fips/utl/fips_md.c
diff options
context:
space:
mode:
Diffstat (limited to 'fips/utl/fips_md.c')
-rw-r--r--fips/utl/fips_md.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fips/utl/fips_md.c b/fips/utl/fips_md.c
index 37149506f3..556267994c 100644
--- a/fips/utl/fips_md.c
+++ b/fips/utl/fips_md.c
@@ -204,7 +204,11 @@ int FIPS_digestinit(EVP_MD_CTX *ctx, const EVP_MD *type)
int FIPS_digestupdate(EVP_MD_CTX *ctx, const void *data, size_t count)
{
- FIPS_selftest_check();
+ if (FIPS_selftest_failed())
+ {
+ FIPSerr(FIPS_F_FIPS_DIGESTUPDATE, FIPS_R_SELFTEST_FAILED);
+ return 0;
+ }
return ctx->update(ctx,data,count);
}
@@ -213,7 +217,11 @@ int FIPS_digestfinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
{
int ret;
- FIPS_selftest_check();
+ if (FIPS_selftest_failed())
+ {
+ FIPSerr(FIPS_F_FIPS_DIGESTFINAL, FIPS_R_SELFTEST_FAILED);
+ return 0;
+ }
OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE);
ret=ctx->digest->final(ctx,md);