Make sure memmove() is defined, even on SunOS 4.1.4.
[oweals/openssl.git] / crypto / md32_common.h
index 573850b12289a8d9a73892c596542fc41f881943..8137c57b1c55f85cfc8992fa9278eb655efe50a4 100644 (file)
  *                                     <appro@fy.chalmers.se>
  */
 
+#include <openssl/crypto.h>
+#include <openssl/fips.h>
+#include <openssl/err.h>
+
 #if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
 #error "DATA_ORDER must be defined!"
 #endif
@@ -555,6 +559,14 @@ int HASH_FINAL (unsigned char *md, HASH_CTX *c)
        static const unsigned char end[4]={0x80,0x00,0x00,0x00};
        const unsigned char *cp=end;
 
+#ifdef OPENSSL_FIPS
+       if(FIPS_mode() && !FIPS_md5_allowed())
+           {
+           FIPSerr(FIPS_F_HASH_FINAL,FIPS_R_NON_FIPS_METHOD);
+           return 0;
+           }
+#endif
+
        /* c->num should definitly have room for at least one more byte. */
        p=c->data;
        i=c->num>>2;