private void HandleAuthChange(MySqlPacket packet) { byte b = packet.ReadByte(); Debug.Assert(b == 0xfe); string method = packet.ReadString(); byte[] authData = new byte[packet.Length - packet.Position]; Array.Copy(packet.Buffer, packet.Position, authData, 0, authData.Length); MySqlAuthenticationPlugin plugin = MySqlAuthenticationPlugin.GetPlugin(method, driver, authData); plugin.AuthenticationChange(); }
private static MySqlAuthenticationPlugin CreatePlugin(string method) { PluginInfo pi = plugins[method]; try { Type t = Type.GetType(pi.Type); MySqlAuthenticationPlugin o = (MySqlAuthenticationPlugin)Activator.CreateInstance(t); return(o); } catch (Exception e) { throw new MySqlException(String.Format(Resources.UnableToCreateAuthPlugin, method), e); } }
/// <summary> /// This is a factory method that is used only internally. It creates an auth plugin based on the method type /// </summary> /// <param name="method"></param> /// <param name="flags"></param> /// <param name="settings"></param> /// <returns></returns> internal static MySqlAuthenticationPlugin GetPlugin(string method, NativeDriver driver, byte[] authData) { if (method == "mysql_old_password") { driver.Close(true); throw new MySqlException(Resources.OldPasswordsNotSupported); } MySqlAuthenticationPlugin plugin = AuthenticationPluginManager.GetPlugin(method); if (plugin == null) { throw new MySqlException(String.Format(Resources.UnknownAuthenticationMethod, method)); } plugin.driver = driver; plugin.SetAuthData(authData); return(plugin); }