summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/whrlpool/whrlpool.h6
-rw-r--r--crypto/whrlpool/wp_dgst.c20
2 files changed, 18 insertions, 8 deletions
diff --git a/crypto/whrlpool/whrlpool.h b/crypto/whrlpool/whrlpool.h
index bf9d7f5f0c..03c91da115 100644
--- a/crypto/whrlpool/whrlpool.h
+++ b/crypto/whrlpool/whrlpool.h
@@ -24,10 +24,10 @@ typedef struct {
} WHIRLPOOL_CTX;
#ifndef OPENSSL_NO_WHIRLPOOL
-void WHIRLPOOL_Init (WHIRLPOOL_CTX *c);
-void WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes);
+int WHIRLPOOL_Init (WHIRLPOOL_CTX *c);
+int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes);
void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
-void WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c);
+int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c);
unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md);
#endif
diff --git a/crypto/whrlpool/wp_dgst.c b/crypto/whrlpool/wp_dgst.c
index 1d33eb658c..7aa4bebe2e 100644
--- a/crypto/whrlpool/wp_dgst.c
+++ b/crypto/whrlpool/wp_dgst.c
@@ -54,9 +54,13 @@
#include "wp_locl.h"
#include <string.h>
-void WHIRLPOOL_Init (WHIRLPOOL_CTX *c) { memset (c,0,sizeof(*c)); }
+int WHIRLPOOL_Init (WHIRLPOOL_CTX *c)
+ {
+ memset (c,0,sizeof(*c));
+ return(1);
+ }
-void WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *_inp,size_t bytes)
+int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *_inp,size_t bytes)
{
/* Well, largest suitable chunk size actually is
* (1<<(sizeof(size_t)*8-3))-64, but below number
@@ -73,6 +77,8 @@ void WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *_inp,size_t bytes)
}
if (bytes)
WHIRLPOOL_BitUpdate(c,inp,bytes*8);
+
+ return(1);
}
void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *_inp,size_t bits)
@@ -206,7 +212,7 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *_inp,size_t bits)
}
}
-void WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c)
+int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c)
{
unsigned int bitoff = c->bitoff,
byteoff = bitoff/8;
@@ -238,8 +244,12 @@ void WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c)
whirlpool_block(c,c->data,1);
- memcpy(md,c->H.c,WHIRLPOOL_DIGEST_LENGTH);
- memset(c,0,sizeof(*c));
+ if (md) {
+ memcpy(md,c->H.c,WHIRLPOOL_DIGEST_LENGTH);
+ memset(c,0,sizeof(*c));
+ return(1);
+ }
+ return(0);
}
unsigned char *WHIRLPOOL(const void *inp, size_t bytes,unsigned char *md)