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); }
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)); }
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); }
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)); }