Adapt Whirlpool API for EVP.
authorAndy Polyakov <appro@openssl.org>
Wed, 30 Nov 2005 20:53:14 +0000 (20:53 +0000)
committerAndy Polyakov <appro@openssl.org>
Wed, 30 Nov 2005 20:53:14 +0000 (20:53 +0000)
crypto/whrlpool/whrlpool.h
crypto/whrlpool/wp_dgst.c

index bf9d7f5f0cb987acd2a0e6dd954f5c03b3ba2148..03c91da1155b3ccebd7b92505af928527c3cbe3c 100644 (file)
@@ -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
 
index 1d33eb658cea75da36aedb260e8fa3a2f563b3d4..7aa4bebe2e7fad6307df804817ed77b202c47768 100644 (file)
 #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)