private byte[] UserIdentificationData() { using (var result = new MemoryStream()) { if (!string.IsNullOrEmpty(_userID)) { _srp = new SrpClient(); var login = Encoding.UTF8.GetBytes(_userID); result.WriteByte(IscCodes.CNCT_login); result.WriteByte((byte)login.Length); result.Write(login, 0, login.Length); var pluginName = Encoding.ASCII.GetBytes(SrpClient.PluginName); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); var specificData = Encoding.ASCII.GetBytes(_srp.PublicKeyHex); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); } else { _sspi = new SspiHelper(); var pluginName = Encoding.ASCII.GetBytes(SspiHelper.PluginName); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); var specificData = _sspi.InitializeClientSecurity(); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); } var user = Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable("USERNAME")); result.WriteByte(IscCodes.CNCT_user); result.WriteByte((byte)user.Length); result.Write(user, 0, user.Length); var host = Encoding.UTF8.GetBytes(Dns.GetHostName()); result.WriteByte(IscCodes.CNCT_host); result.WriteByte((byte)host.Length); result.Write(host, 0, host.Length); result.WriteByte(IscCodes.CNCT_client_crypt); result.WriteByte(4); result.Write(new byte[] { 0, 0, 0, 0 }, 0, 4); result.WriteByte(IscCodes.CNCT_user_verification); result.WriteByte(0); return(result.ToArray()); } }
private byte[] UserIdentificationData(out SrpClient srp, out SspiHelper sspi) { srp = null; sspi = null; using (var result = new MemoryStream()) { var userString = Environment.GetEnvironmentVariable("USERNAME") ?? Environment.GetEnvironmentVariable("USER") ?? string.Empty; var user = Encoding.UTF8.GetBytes(userString); result.WriteByte(IscCodes.CNCT_user); result.WriteByte((byte)user.Length); result.Write(user, 0, user.Length); var host = Encoding.UTF8.GetBytes(Dns.GetHostName()); result.WriteByte(IscCodes.CNCT_host); result.WriteByte((byte)host.Length); result.Write(host, 0, host.Length); result.WriteByte(IscCodes.CNCT_user_verification); result.WriteByte(0); if (!string.IsNullOrEmpty(_userID)) { srp = new SrpClient(); var login = Encoding.UTF8.GetBytes(_userID); result.WriteByte(IscCodes.CNCT_login); result.WriteByte((byte)login.Length); result.Write(login, 0, login.Length); var pluginName = Encoding.ASCII.GetBytes(SrpClient.PluginName); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); var specificData = Encoding.ASCII.GetBytes(srp.PublicKeyHex); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); result.WriteByte(IscCodes.CNCT_client_crypt); result.WriteByte(4); result.Write(TypeEncoder.EncodeInt32(WireCryptOptionValue(_wireCrypt)), 0, 4); } else { sspi = new SspiHelper(); var pluginName = Encoding.ASCII.GetBytes(SspiHelper.PluginName); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginName.Length); result.Write(pluginName, 0, pluginName.Length); var specificData = sspi.InitializeClientSecurity(); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); result.WriteByte(IscCodes.CNCT_client_crypt); result.WriteByte(4); result.Write(TypeEncoder.EncodeInt32(IscCodes.WIRE_CRYPT_DISABLED), 0, 4); } return(result.ToArray()); } }
public byte[] UserIdentificationData() { using (var result = new MemoryStream(1024)) { var userString = Environment.GetEnvironmentVariable("USERNAME") ?? Environment.GetEnvironmentVariable("USER") ?? string.Empty; var user = Encoding.UTF8.GetBytes(userString); result.WriteByte(IscCodes.CNCT_user); result.WriteByte((byte)user.Length); result.Write(user, 0, user.Length); var host = Encoding.UTF8.GetBytes(Dns.GetHostName()); result.WriteByte(IscCodes.CNCT_host); result.WriteByte((byte)host.Length); result.Write(host, 0, host.Length); result.WriteByte(IscCodes.CNCT_user_verification); result.WriteByte(0); if (!string.IsNullOrEmpty(User)) { var login = Encoding.UTF8.GetBytes(User); result.WriteByte(IscCodes.CNCT_login); result.WriteByte((byte)login.Length); result.Write(login, 0, login.Length); var pluginNameBytes = Encoding.ASCII.GetBytes(_srp256.Name); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginNameBytes.Length); result.Write(pluginNameBytes, 0, pluginNameBytes.Length); var specificData = Encoding.ASCII.GetBytes(_srp256.PublicKeyHex); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); var plugins = string.Join(",", new[] { _srp256.Name, _srp.Name }); var pluginsBytes = Encoding.ASCII.GetBytes(plugins); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginsBytes.Length); result.Write(pluginsBytes, 0, pluginsBytes.Length); result.WriteByte(IscCodes.CNCT_client_crypt); result.WriteByte(4); result.Write(TypeEncoder.EncodeInt32(WireCryptOptionValue(WireCrypt)), 0, 4); } else { var pluginNameBytes = Encoding.ASCII.GetBytes(_sspi.Name); result.WriteByte(IscCodes.CNCT_plugin_name); result.WriteByte((byte)pluginNameBytes.Length); result.Write(pluginNameBytes, 0, pluginNameBytes.Length); var specificData = _sspi.InitializeClientSecurity(); WriteMultiPartHelper(result, IscCodes.CNCT_specific_data, specificData); result.WriteByte(IscCodes.CNCT_plugin_list); result.WriteByte((byte)pluginNameBytes.Length); result.Write(pluginNameBytes, 0, pluginNameBytes.Length); result.WriteByte(IscCodes.CNCT_client_crypt); result.WriteByte(4); result.Write(TypeEncoder.EncodeInt32(IscCodes.WIRE_CRYPT_DISABLED), 0, 4); } return(result.ToArray()); } }