public NTStatus AcceptSecurityContext(ref object context, byte[] inputToken, out byte[] outputToken) { outputToken = null; if (!AuthenticationMessageUtils.IsSignatureValid(inputToken)) { return(NTStatus.SEC_E_INVALID_TOKEN); } MessageTypeName messageType = AuthenticationMessageUtils.GetMessageType(inputToken); if (messageType == MessageTypeName.Negotiate) { NegotiateMessage input = new NegotiateMessage(inputToken); ChallengeMessage output; NTStatus status = GetChallengeMessage(out context, input, out output); outputToken = output.GetBytes(); return(status); } else if (messageType == MessageTypeName.Authenticate) { AuthenticateMessage message = new AuthenticateMessage(inputToken); return(Authenticate(context, message)); } else { return(NTStatus.SEC_E_INVALID_TOKEN); } }
public NTStatus AcceptSecurityContext(ref object context, byte[] inputToken, out byte[]?outputToken) { outputToken = null; if (!AuthenticationMessageUtils.IsSignatureValid(inputToken)) { return(NTStatus.SEC_E_INVALID_TOKEN); } MessageTypeName messageType = AuthenticationMessageUtils.GetMessageType(inputToken); if (messageType != MessageTypeName.Negotiate) { return(messageType == MessageTypeName.Authenticate ? Authenticate(context, inputToken) : NTStatus.SEC_E_INVALID_TOKEN); } NTStatus status = GetChallengeMessage(out context, inputToken, out outputToken); return(status); }