public static bool Check(this ClientChallenge data) { return(data.Trace != null && data.Trace.Length >= 1 && IsValidReportTime(data.ReportTime) && IsValidUsername(data.Username) && IsValidPow(data.ProofOfWork)); }
public int Step1(string username, long[] trace) { var clientChallenge = new ClientChallenge(); if (CheckVendor.NotValidUsername(username) || CheckVendor.NotValidTrace(trace)) { return(03_0010); } clientChallenge.Trace = trace; _username = username; clientChallenge.Username = username; clientChallenge.ReportTime = DateTime.Now; for (var i = 0; i < 3; i++) { var result = ApiCall.AuthStart.Call(null, new MilvanethProtocol { Context = null, Data = clientChallenge }); if (!(result.Data is ServerChallenge sc)) { return(02_0007); } if (!CheckVendor.NotValidResponse(sc)) { _serverChallenge = sc; } if (sc.Message != 01_0003) // retry with pow { return(sc.Message); } clientChallenge.SessionId = sc.SessionId; clientChallenge.ProofOfWork = ProofOfWorkVendor.CalculateProofOfWork(sc.ProofOfWork); } return(01_0002); }