Fix for MSVC Compiler warnings

Fixes Microsoft Visual C compiler warnings in multiple files. All issues
with type mismatches.
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index f0a88fe..90d5ac7 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2981,7 +2981,17 @@
     ssl->handshake->pmslen = 48;
 
     /* mask = diff ? 0xff : 0x00 */
+    /* MSVC has a warning about unary minus on unsigned, but this is
+     * well-defined and precisely what we want to do here */
+#if defined(_MSC_VER)
+#pragma warning( push )
+#pragma warning( disable : 4146 )
+#endif
     mask = - ( diff | - diff ) >> ( sizeof( unsigned int ) * 8 - 1 );
+#if defined(_MSC_VER)
+#pragma warning( pop )
+#endif
+
     for( i = 0; i < ssl->handshake->pmslen; i++ )
         pms[i] = ( mask & fake_pms[i] ) | ( (~mask) & peer_pms[i] );