static void OnGetToken(IAsyncResult result)
            {
                if (result.CompletedSynchronously)
                {
                    return;
                }

                GetSspiCredentialAsyncResult thisPtr = (GetSspiCredentialAsyncResult)result.AsyncState;

                Exception completionException = null;

                try
                {
                    thisPtr.CompleteGetToken(result);
                }
#pragma warning suppress 56500 // [....], transferring exception to another thread
                catch (Exception e)
                {
                    if (Fx.IsFatal(e))
                    {
                        throw;
                    }
                    completionException = e;
                }
                thisPtr.Complete(false, completionException);
            }
            public static NetworkCredential End(IAsyncResult result,
                                                out TokenImpersonationLevel impersonationLevel, out bool allowNtlm)
            {
                GetSspiCredentialAsyncResult thisPtr = AsyncResult.End <GetSspiCredentialAsyncResult>(result);

                impersonationLevel = thisPtr.impersonationLevel;
                allowNtlm          = thisPtr.allowNtlm;
                return(thisPtr.credential);
            }
            public static NetworkCredential End(IAsyncResult result,
                                                out TokenImpersonationLevel impersonationLevel, out AuthenticationLevel authenticationLevel)
            {
                GetSspiCredentialAsyncResult thisPtr = AsyncResult.End <GetSspiCredentialAsyncResult>(result);

                impersonationLevel  = thisPtr.impersonationLevel;
                authenticationLevel = thisPtr.allowNtlm ?
                                      AuthenticationLevel.MutualAuthRequested : AuthenticationLevel.MutualAuthRequired;
                return(thisPtr.credential);
            }
 public static NetworkCredential EndGetSspiCredential(IAsyncResult result,
                                                      out TokenImpersonationLevel impersonationLevel, out bool allowNtlm)
 {
     return(GetSspiCredentialAsyncResult.End(result, out impersonationLevel, out allowNtlm));
 }
 public static NetworkCredential EndGetSspiCredential(IAsyncResult result,
                                                      out TokenImpersonationLevel impersonationLevel, out AuthenticationLevel authenticationLevel)
 {
     return(GetSspiCredentialAsyncResult.End(result, out impersonationLevel, out authenticationLevel));
 }