diff --git a/libpurple/purplecredentialmanager.h b/libpurple/purplecredentialmanager.h
--- a/libpurple/purplecredentialmanager.h
+++ b/libpurple/purplecredentialmanager.h
@@ -242,36 +242,6 @@
 gboolean purple_credential_manager_clear_password_finish(PurpleCredentialManager *manager, GAsyncResult *result, GError **error);
 
 /**
- * purple_credential_manager_read_settings:
- * @manager: The #PurpleCredentialManager instance.
- * @error: Return address for a #GError, or %NULL.
- *
- * Reads settings from the active #PurpleCredentialProvider of @manager.
- *
- * Returns: (transfer full): New copy of current settings which must be free'd
- *                           with purple_request_fields_destroy().
- *
- * Since: 3.0.0
- */
-PurpleRequestFields *purple_credential_manager_read_settings(PurpleCredentialManager *manager, GError **error);
-
-/**
- * purple_credential_manager_write_settings:
- * @manager: The #PurpleCredentialManager instance.
- * @fields: (transfer full): Modified settings from
- *          purple_credential_manager_read_settings().
- * @error: Return address for a #GError, or %NULL.
- *
- * Write @fields to the active #PurpleCredentialProvider of @manager.
- *
- * Returns: %TRUE if successful, %FALSE otherwise.
- *
- * Since: 3.0.0
- */
-gboolean purple_credential_manager_write_settings(PurpleCredentialManager *manager, PurpleRequestFields *fields, GError **error);
-
-
-/**
  * purple_credential_manager_foreach:
  * @manager: The #PurpleCredentialManager instance.
  * @func: (scope call): The #PurpleCredentialManagerForeachFunc to call.
# HG changeset patch
# Node ID bf397557d9e7
# Parent  31c32b8d4bef
diff --git a/libpurple/purplecredentialmanager.c b/libpurple/purplecredentialmanager.c
--- a/libpurple/purplecredentialmanager.c
+++ b/libpurple/purplecredentialmanager.c
@@ -599,40 +599,6 @@
 	return g_task_propagate_boolean(G_TASK(result), error);
 }
 
-PurpleRequestFields *
-purple_credential_manager_read_settings(PurpleCredentialManager *manager,
-                                        GError **error)
-{
-	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_MANAGER(manager), FALSE);
-
-	if(manager->active != NULL) {
-		return purple_credential_provider_read_settings(manager->active);
-	}
-
-	g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-	            _("can not read settings, no active credential provider"));
-
-	return NULL;
-}
-
-gboolean
-purple_credential_manager_write_settings(PurpleCredentialManager *manager,
-                                         PurpleRequestFields *fields,
-                                         GError **error)
-{
-	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_MANAGER(manager), FALSE);
-
-	if(manager->active != NULL) {
-		return purple_credential_provider_write_settings(manager->active,
-		                                                 fields);
-	}
-
-	g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-	            _("can not write settings, no active credential provider"));
-
-	return FALSE;
-}
-
 void
 purple_credential_manager_foreach(PurpleCredentialManager *manager,
                                   PurpleCredentialManagerForeachFunc func,
diff --git a/libpurple/purplecredentialprovider.h b/libpurple/purplecredentialprovider.h
--- a/libpurple/purplecredentialprovider.h
+++ b/libpurple/purplecredentialprovider.h
@@ -65,8 +65,6 @@
  * @write_password_finish: Finishes writing a password.
  * @clear_password_async: Clears a password from the provider.
  * @clear_password_finish: Finishes clearing a password from the provider.
- * @read_settings: Creates a #PurpleRequestFields for the available settings.
- * @write_settings: Updates the settings for provider.
  *
  * #PurpleCredentialProviderClass defines the interface for interacting with
  * credential providers like libsecret, kwallet, etc.
@@ -90,9 +88,6 @@
 	void (*clear_password_async)(PurpleCredentialProvider *provider, PurpleAccount *account, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer data);
 	gboolean (*clear_password_finish)(PurpleCredentialProvider *provider, GAsyncResult *result, GError **error);
 
-	PurpleRequestFields *(*read_settings)(PurpleCredentialProvider *provider);
-	gboolean (*write_settings)(PurpleCredentialProvider *provider, PurpleRequestFields *fields);
-
 	/*< private >*/
 
 	/* Some extra padding to play it safe. */
@@ -247,32 +242,6 @@
  */
 gboolean purple_credential_provider_clear_password_finish(PurpleCredentialProvider *provider, GAsyncResult *result, GError **error);
 
-/**
- * purple_credential_provider_read_settings:
- * @provider: The #PurpleCredentialProvider instance.
- *
- * Reads settings from @provider.
- *
- * Returns: (transfer full): New copy of current settings which must be free'd
- *                           with purple_request_fields_destroy().
- *
- * Since: 3.0.0
- */
-PurpleRequestFields *purple_credential_provider_read_settings(PurpleCredentialProvider *provider);
-
-/**
- * purple_credential_provider_write_settings:
- * @provider: The #PurpleCredentialProvider instance.
- * @fields: Modified settings from purple_credential_provider_read_settings().
- *
- * Write @fields to @provider.
- *
- * Returns: %TRUE if successful, %FALSE otherwise.
- *
- * Since: 3.0.0
- */
-gboolean purple_credential_provider_write_settings(PurpleCredentialProvider *provider, PurpleRequestFields *fields);
-
 G_END_DECLS
 
 #endif /* PURPLE_CREDENTIAL_PROVIDER_H */
diff --git a/libpurple/purplecredentialprovider.c b/libpurple/purplecredentialprovider.c
--- a/libpurple/purplecredentialprovider.c
+++ b/libpurple/purplecredentialprovider.c
@@ -418,34 +418,3 @@
 
 	return FALSE;
 }
-
-PurpleRequestFields *
-purple_credential_provider_read_settings(PurpleCredentialProvider *provider) {
-	PurpleCredentialProviderClass *klass = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_PROVIDER(provider), NULL);
-
-	klass = PURPLE_CREDENTIAL_PROVIDER_GET_CLASS(provider);
-	if(klass && klass->read_settings) {
-		return klass->read_settings(provider);
-	}
-
-	return NULL;
-}
-
-gboolean
-purple_credential_provider_write_settings(PurpleCredentialProvider *provider,
-                                          PurpleRequestFields *fields)
-{
-	PurpleCredentialProviderClass *klass = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_PROVIDER(provider), FALSE);
-	g_return_val_if_fail(fields != NULL, FALSE);
-
-	klass = PURPLE_CREDENTIAL_PROVIDER_GET_CLASS(provider);
-	if(klass && klass->write_settings) {
-		return klass->write_settings(provider, fields);
-	}
-
-	return FALSE;
-}
diff --git a/libpurple/tests/test_credential_manager.c b/libpurple/tests/test_credential_manager.c
--- a/libpurple/tests/test_credential_manager.c
+++ b/libpurple/tests/test_credential_manager.c
@@ -135,22 +135,6 @@
 	return g_task_propagate_boolean(G_TASK(result), error);
 }
 
-static PurpleRequestFields *
-test_purple_credential_provider_read_settings(PurpleCredentialProvider *p) {
-	return purple_request_fields_new();
-}
-
-static gboolean
-test_purple_credential_provider_write_settings(PurpleCredentialProvider *p,
-                                               PurpleRequestFields *fields)
-{
-	TestPurpleCredentialProvider *tp = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-
-	tp->fields = fields;
-
-	return TRUE;
-}
-
 static void
 test_purple_credential_provider_init(TestPurpleCredentialProvider *provider) {
 }
@@ -166,8 +150,6 @@
 	provider_class->write_password_finish = test_purple_credential_provider_write_password_finish;
 	provider_class->clear_password_async = test_purple_credential_provider_clear_password_async;
 	provider_class->clear_password_finish = test_purple_credential_provider_clear_password_finish;
-	provider_class->read_settings = test_purple_credential_provider_read_settings;
-	provider_class->write_settings = test_purple_credential_provider_write_settings;
 }
 
 static PurpleCredentialProvider *
@@ -465,39 +447,6 @@
 	g_clear_object(&m);
 }
 
-static void
-test_purple_credential_manager_no_provider_read_settings(void) {
-	PurpleCredentialManager *manager = NULL;
-	PurpleRequestFields *fields = NULL;
-	GError *error = NULL;
-
-	manager = g_object_new(PURPLE_TYPE_CREDENTIAL_MANAGER, NULL);
-
-	fields = purple_credential_manager_read_settings(manager, &error);
-
-	g_assert_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0);
-	g_clear_error(&error);
-
-	g_assert_null(fields);
-
-	g_clear_object(&manager);
-}
-
-static void
-test_purple_credential_manager_no_provider_write_settings(void) {
-	PurpleCredentialManager *manager = NULL;
-	GError *error = NULL;
-
-	manager = g_object_new(PURPLE_TYPE_CREDENTIAL_MANAGER, NULL);
-
-	purple_credential_manager_write_settings(manager, NULL, &error);
-
-	g_assert_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0);
-	g_clear_error(&error);
-
-	g_clear_object(&manager);
-}
-
 /******************************************************************************
  * Provider Tests
  *****************************************************************************/
@@ -707,52 +656,6 @@
 	g_clear_object(&m);
 }
 
-static void
-test_purple_credential_manager_settings(void) {
-	PurpleCredentialManager *m = NULL;
-	PurpleCredentialProvider *p = NULL;
-	TestPurpleCredentialProvider *tp = NULL;
-	PurpleRequestFields *fields = NULL;
-	GError *e = NULL;
-	gboolean r = FALSE;
-
-	m = g_object_new(PURPLE_TYPE_CREDENTIAL_MANAGER, NULL);
-	p = test_purple_credential_provider_new();
-	tp = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-
-	r = purple_credential_manager_register(m, p, &e);
-	g_assert_no_error(e);
-	g_assert_true(r);
-
-	r = purple_credential_manager_set_active(m, "test-provider", &e);
-	g_assert_no_error(e);
-	g_assert_true(r);
-
-	fields = purple_credential_manager_read_settings(m, &e);
-	g_assert_no_error(e);
-	g_assert_nonnull(fields);
-	purple_request_fields_destroy(fields);
-
-	fields = purple_request_fields_new();
-	r = purple_credential_manager_write_settings(m, fields, &e);
-	g_assert_no_error(e);
-	g_assert_true(r);
-	g_assert_true(tp->fields == fields);
-
-	purple_request_fields_destroy(fields);
-
-	r = purple_credential_manager_set_active(m, NULL, &e);
-	g_assert_no_error(e);
-	g_assert_true(r);
-
-	r = purple_credential_manager_unregister(m, p, &e);
-	g_assert_no_error(e);
-	g_assert_true(r);
-
-	g_clear_object(&p);
-	g_clear_object(&m);
-}
-
 /******************************************************************************
  * Main
  *****************************************************************************/
@@ -783,10 +686,6 @@
 	                test_purple_credential_manager_no_provider_write_password_async);
 	g_test_add_func("/credential-manager/no-provider/clear-password-async",
 	                test_purple_credential_manager_no_provider_clear_password_async);
-	g_test_add_func("/credential-manager/no-provider/read-settings",
-	                test_purple_credential_manager_no_provider_read_settings);
-	g_test_add_func("/credential-manager/no-provider/write-settings",
-	                test_purple_credential_manager_no_provider_write_settings);
 
 	g_test_add_func("/credential-manager/provider/read-password-async",
 	                test_purple_credential_manager_read_password_async);
@@ -794,8 +693,6 @@
 	                test_purple_credential_manager_write_password_async);
 	g_test_add_func("/credential-manager/provider/clear-password-async",
 	                test_purple_credential_manager_clear_password_async);
-	g_test_add_func("/credential-manager/provider/settings",
-	                test_purple_credential_manager_settings);
 
 	ret = g_test_run();
 
diff --git a/libpurple/tests/test_credential_provider.c b/libpurple/tests/test_credential_provider.c
--- a/libpurple/tests/test_credential_provider.c
+++ b/libpurple/tests/test_credential_provider.c
@@ -224,8 +224,6 @@
 	gboolean write_password_finish;
 	gboolean clear_password_async;
 	gboolean clear_password_finish;
-	gboolean read_settings;
-	gboolean write_settings;
 };
 
 G_DEFINE_TYPE(TestPurpleCredentialProvider,
@@ -320,26 +318,6 @@
 	return FALSE;
 }
 
-static PurpleRequestFields *
-test_purple_credential_provider_read_settings(PurpleCredentialProvider *p) {
-	TestPurpleCredentialProvider *provider = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-
-	provider->read_settings = TRUE;
-
-	return NULL;
-}
-
-static gboolean
-test_purple_credential_provider_write_settings(PurpleCredentialProvider *p,
-                                               PurpleRequestFields *fields)
-{
-	TestPurpleCredentialProvider *provider = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-
-	provider->write_settings = TRUE;
-
-	return FALSE;
-}
-
 static void
 test_purple_credential_provider_init(TestPurpleCredentialProvider *provider) {
 }
@@ -355,8 +333,6 @@
 	provider_class->write_password_finish = test_purple_credential_provider_write_password_finish;
 	provider_class->clear_password_async = test_purple_credential_provider_clear_password_async;
 	provider_class->clear_password_finish = test_purple_credential_provider_clear_password_finish;
-	provider_class->read_settings = test_purple_credential_provider_read_settings;
-	provider_class->write_settings = test_purple_credential_provider_write_settings;
 }
 
 static PurpleCredentialProvider *
@@ -428,8 +404,6 @@
 	g_assert_false(tp->write_password_finish);
 	g_assert_false(tp->clear_password_async);
 	g_assert_false(tp->clear_password_finish);
-	g_assert_false(tp->read_settings);
-	g_assert_false(tp->write_settings);
 
 	g_object_unref(p);
 }
@@ -478,8 +452,6 @@
 	g_assert_true(tp->write_password_finish);
 	g_assert_false(tp->clear_password_async);
 	g_assert_false(tp->clear_password_finish);
-	g_assert_false(tp->read_settings);
-	g_assert_false(tp->write_settings);
 
 	g_object_unref(G_OBJECT(p));
 }
@@ -528,52 +500,10 @@
 	g_assert_false(tp->write_password_finish);
 	g_assert_true(tp->clear_password_async);
 	g_assert_true(tp->clear_password_finish);
-	g_assert_false(tp->read_settings);
-	g_assert_false(tp->write_settings);
 
 	g_object_unref(p);
 }
 
-static void
-test_purple_credential_provider_test_read_settings(void) {
-	PurpleCredentialProvider *p = test_purple_credential_provider_new();
-	TestPurpleCredentialProvider *tp = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-
-	purple_credential_provider_read_settings(p);
-
-	g_assert_false(tp->read_password_async);
-	g_assert_false(tp->read_password_finish);
-	g_assert_false(tp->write_password_async);
-	g_assert_false(tp->write_password_finish);
-	g_assert_false(tp->clear_password_async);
-	g_assert_false(tp->clear_password_finish);
-	g_assert_true(tp->read_settings);
-	g_assert_false(tp->write_settings);
-
-	g_object_unref(G_OBJECT(p));
-}
-
-static void
-test_purple_credential_provider_test_write_settings(void) {
-	PurpleCredentialProvider *p = test_purple_credential_provider_new();
-	TestPurpleCredentialProvider *tp = TEST_PURPLE_CREDENTIAL_PROVIDER(p);
-	PurpleRequestFields *fields = purple_request_fields_new();
-
-	purple_credential_provider_write_settings(p, fields);
-	purple_request_fields_destroy(fields);
-
-	g_assert_false(tp->read_password_async);
-	g_assert_false(tp->read_password_finish);
-	g_assert_false(tp->write_password_async);
-	g_assert_false(tp->write_password_finish);
-	g_assert_false(tp->clear_password_async);
-	g_assert_false(tp->clear_password_finish);
-	g_assert_false(tp->read_settings);
-	g_assert_true(tp->write_settings);
-
-	g_object_unref(G_OBJECT(p));
-}
-
 /******************************************************************************
  * Main
  *****************************************************************************/
@@ -604,10 +534,6 @@
 	                test_purple_credential_provider_test_write);
 	g_test_add_func("/credential-provider/functional/clear",
 	                test_purple_credential_provider_test_clear);
-	g_test_add_func("/credential-provider/functional/read_settings",
-	                test_purple_credential_provider_test_read_settings);
-	g_test_add_func("/credential-provider/functional/write_settings",
-	                test_purple_credential_provider_test_write_settings);
 
 	ret = g_test_run();
 
