private void btnAuth_Click(object sender, EventArgs e) { if (authuser.Text.Length == 0) { MessageBox.Show("Please enter a username!"); return; } var myCallback = new SezameAuthCallbackType(authCallback); _manager.auth(authuser.Text, "Dotnet example UI", myCallback); }
public async Task auth(string username, string message, SezameAuthCallbackType callback) { var webRequestHandler = new WebRequestHandler(); webRequestHandler.ClientCertificates.Add(certificate); // X509Certificate var invoker = new SezameAuthenticationServiceInvoker(webRequestHandler, true); SezameResult response = null; var timeout = TimeSpan.FromSeconds(60); response = await invoker.RequestAuthenticationAsync(username, message, "auth", (int)Math.Ceiling(timeout.TotalMinutes)); var status = response.GetParameter(SezameResultKey.AuthenticationStatus); if (status == "notlinked") { callback(SezameAuthenticationResultKey.NotPaired); return; } var authId = response.GetParameter(SezameResultKey.Id); var result = SezameAuthenticationResultKey.Timedout; if (status == "initiated") { result = await Task.Run <SezameAuthenticationResultKey>(async() => { int sleeptime = 1000; int loopPassCount = (int)Math.Ceiling(Math.Ceiling((double)timeout.TotalMilliseconds) / sleeptime); while (loopPassCount > 0) { response = await invoker.CheckAuthenticationStatusAsync(authId); status = response.GetParameter(SezameResultKey.AuthenticationStatus); if (status == "authorized") { return(SezameAuthenticationResultKey.Authenticated); } else if (status == "denied") { return(SezameAuthenticationResultKey.Denied); } loopPassCount--; System.Threading.Thread.Sleep(sleeptime); } return(SezameAuthenticationResultKey.Timedout); }); } callback(result); }