diff --git a/library/sha512.c b/library/sha512.c
index 8260f32..e7b2c50 100644
--- a/library/sha512.c
+++ b/library/sha512.c
@@ -88,13 +88,13 @@
 }
 #endif /* PUT_UINT64_BE */
 
-#define MBEDTLS_SHA512_VALIDATE_RET(cond)                           \
+#define SHA512_VALIDATE_RET(cond)                           \
     MBEDTLS_INTERNAL_VALIDATE_RET( cond, MBEDTLS_ERR_SHA512_BAD_INPUT_DATA )
-#define MBEDTLS_SHA512_VALIDATE(cond)  MBEDTLS_INTERNAL_VALIDATE( cond )
+#define SHA512_VALIDATE(cond)  MBEDTLS_INTERNAL_VALIDATE( cond )
 
 void mbedtls_sha512_init( mbedtls_sha512_context *ctx )
 {
-    MBEDTLS_SHA512_VALIDATE( ctx != NULL );
+    SHA512_VALIDATE( ctx != NULL );
 
     memset( ctx, 0, sizeof( mbedtls_sha512_context ) );
 }
@@ -110,8 +110,8 @@
 void mbedtls_sha512_clone( mbedtls_sha512_context *dst,
                            const mbedtls_sha512_context *src )
 {
-    MBEDTLS_SHA512_VALIDATE( dst != NULL );
-    MBEDTLS_SHA512_VALIDATE( src != NULL );
+    SHA512_VALIDATE( dst != NULL );
+    SHA512_VALIDATE( src != NULL );
 
     *dst = *src;
 }
@@ -121,8 +121,8 @@
  */
 int mbedtls_sha512_starts_ret( mbedtls_sha512_context *ctx, int is384 )
 {
-    MBEDTLS_SHA512_VALIDATE_RET( ctx != NULL );
-    MBEDTLS_SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
+    SHA512_VALIDATE_RET( ctx != NULL );
+    SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
 
     ctx->total[0] = 0;
     ctx->total[1] = 0;
@@ -221,8 +221,8 @@
     uint64_t temp1, temp2, W[80];
     uint64_t A, B, C, D, E, F, G, H;
 
-    MBEDTLS_SHA512_VALIDATE_RET( ctx != NULL );
-    MBEDTLS_SHA512_VALIDATE_RET( (const unsigned char *)data != NULL );
+    SHA512_VALIDATE_RET( ctx != NULL );
+    SHA512_VALIDATE_RET( (const unsigned char *)data != NULL );
 
 #define  SHR(x,n) (x >> n)
 #define ROTR(x,n) (SHR(x,n) | (x << (64 - n)))
@@ -309,8 +309,8 @@
     size_t fill;
     unsigned int left;
 
-    MBEDTLS_SHA512_VALIDATE_RET( ctx != NULL );
-    MBEDTLS_SHA512_VALIDATE_RET( ilen == 0 || input != NULL );
+    SHA512_VALIDATE_RET( ctx != NULL );
+    SHA512_VALIDATE_RET( ilen == 0 || input != NULL );
 
     if( ilen == 0 )
         return( 0 );
@@ -369,8 +369,8 @@
     unsigned used;
     uint64_t high, low;
 
-    MBEDTLS_SHA512_VALIDATE_RET( ctx != NULL );
-    MBEDTLS_SHA512_VALIDATE_RET( (unsigned char *)output != NULL );
+    SHA512_VALIDATE_RET( ctx != NULL );
+    SHA512_VALIDATE_RET( (unsigned char *)output != NULL );
 
     /*
      * Add padding: 0x80 then 0x00 until 16 bytes remain for the length
@@ -448,9 +448,9 @@
     int ret;
     mbedtls_sha512_context ctx;
 
-    MBEDTLS_SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
-    MBEDTLS_SHA512_VALIDATE_RET( ilen == 0 || input != NULL );
-    MBEDTLS_SHA512_VALIDATE_RET( (unsigned char *)output != NULL );
+    SHA512_VALIDATE_RET( is384 == 0 || is384 == 1 );
+    SHA512_VALIDATE_RET( ilen == 0 || input != NULL );
+    SHA512_VALIDATE_RET( (unsigned char *)output != NULL );
 
     mbedtls_sha512_init( &ctx );
 
