diff --git a/library/base64.c b/library/base64.c
index d7f3642..5b1418b 100644
--- a/library/base64.c
+++ b/library/base64.c
@@ -87,9 +87,9 @@
     if( slen == 0 )
         return( 0 );
 
-    n = (slen << 3) / 6;
+    n = ( slen << 3 ) / 6;
 
-    switch( (slen << 3) - (n * 6) )
+    switch( ( slen << 3 ) - ( n * 6 ) )
     {
         case  2: n += 3; break;
         case  4: n += 2; break;
@@ -102,7 +102,7 @@
         return( POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL );
     }
 
-    n = (slen / 3) * 3;
+    n = ( slen / 3 ) * 3;
 
     for( i = 0, p = dst; i < n; i += 3 )
     {
@@ -119,12 +119,12 @@
     if( i < slen )
     {
         C1 = *src++;
-        C2 = ((i + 1) < slen) ? *src++ : 0;
+        C2 = ( ( i + 1 ) < slen ) ? *src++ : 0;
 
         *p++ = base64_enc_map[(C1 >> 2) & 0x3F];
         *p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
 
-        if( (i + 1) < slen )
+        if( ( i + 1 ) < slen )
              *p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F];
         else *p++ = '=';
 
@@ -171,7 +171,7 @@
     if( n == 0 )
         return( 0 );
 
-    n = ((n * 6) + 7) >> 3;
+    n = ( ( n * 6 ) + 7 ) >> 3;
 
     if( dst == NULL || *dlen < n )
     {
@@ -185,7 +185,7 @@
             continue;
 
         j -= ( base64_dec_map[*src] == 64 );
-        x  = (x << 6) | ( base64_dec_map[*src] & 0x3F );
+        x  = ( x << 6 ) | ( base64_dec_map[*src] & 0x3F );
 
         if( ++n == 4 )
         {
