Esempio n. 1
0
 protected static bool verify(TcpInternalSimpleServer.ServerSocket socket, ulong randomPrefix, byte[] md5Data, ref long ticks)
 {
     TcpServer.ServerBase server = socket.Server;
     if (server.CheckVerifyString())
     {
         return(true);
     }
     if (md5Data != null && md5Data.Length == 16)
     {
         if (!timeVerifyTick.Check(ref ticks, ref socket.TimeVerifyTicks))
         {
             return(false);
         }
         TcpServer.ServerBaseAttribute attribute = server.Attribute;
         if (md5 == null)
         {
             md5 = new MD5CryptoServiceProvider();
         }
         if (TcpServer.TimeVerifyServer.IsMd5(TcpServer.TimeVerifyServer.Md5(md5, attribute.VerifyString, randomPrefix, ticks), md5Data) == 0)
         {
             timeVerifyTick.Set(ticks);
             if (attribute.IsMarkData)
             {
                 socket.MarkData = server.ServerAttribute.VerifyHashCode ^ randomPrefix;
             }
             return(true);
         }
     }
     ticks = 0;
     return(false);
 }
Esempio n. 2
0
 protected static bool verify(TcpInternalServer.ServerSocketSender sender, string userID, ulong randomPrefix, byte[] md5Data, ref long ticks)
 {
     TcpServer.ServerBase <TcpInternalServer.ServerAttribute> server = sender.Server;
     TcpServer.ServerBaseAttribute attribute = server.Attribute;
     if (TcpServer.TimeVerifyServer.CheckVerifyString(server, attribute))
     {
         return(true);
     }
     return(verify(sender, randomPrefix, attribute.VerifyString, md5Data, ref ticks));
 }
Esempio n. 3
0
 protected static bool verify(TcpInternalSimpleServer.ServerSocket socket, ulong randomPrefix, byte[] md5Data, ref long ticks)
 {
     TcpServer.ServerBase <TcpInternalSimpleServer.ServerAttribute> server = socket.Server;
     TcpServer.ServerBaseAttribute attribute = server.Attribute;
     if (TcpServer.TimeVerifyServer.CheckVerifyString(server, attribute))
     {
         return(true);
     }
     if (md5Data != null && md5Data.Length == 16)
     {
         if (ticks <= lastVerifyTicks && ticks != socket.TimeVerifyTicks)
         {
             if (socket.TimeVerifyTicks == 0)
             {
                 while (System.Threading.Interlocked.CompareExchange(ref lastVerifyTickLock, 1, 0) != 0)
                 {
                     AutoCSer.Threading.ThreadYield.Yield(AutoCSer.Threading.ThreadYield.Type.TimeVerifyServerSetTicks);
                 }
                 socket.TimeVerifyTicks = ++lastVerifyTicks;
                 lastVerifyTickLock     = 0;
             }
             ticks = socket.TimeVerifyTicks;
             return(false);
         }
         if (TcpServer.TimeVerifyServer.IsMd5(TcpServer.TimeVerifyServer.Md5(attribute.VerifyString, randomPrefix, ticks), md5Data) == 0)
         {
             if (ticks > lastVerifyTicks)
             {
                 while (System.Threading.Interlocked.CompareExchange(ref lastVerifyTickLock, 1, 0) != 0)
                 {
                     AutoCSer.Threading.ThreadYield.Yield(AutoCSer.Threading.ThreadYield.Type.TimeVerifyServerSetTicks);
                 }
                 if (ticks > lastVerifyTicks)
                 {
                     lastVerifyTicks = ticks;
                 }
                 lastVerifyTickLock = 0;
             }
             if (attribute.IsMarkData)
             {
                 socket.MarkData = attribute.VerifyHashCode ^ randomPrefix;
             }
             return(true);
         }
     }
     ticks = 0;
     return(false);
 }
Esempio n. 4
0
 protected static bool verify(TcpInternalServer.ServerSocketSender sender, string userID, ulong randomPrefix, byte[] md5Data, ref long ticks)
 {
     TcpServer.ServerBase server = sender.Server;
     return(server.CheckVerifyString() || verify(sender, randomPrefix, server.Attribute.VerifyString, md5Data, ref ticks));
 }