Make GData plugin use the password store.
authorAndrej Kacian <ticho@claws-mail.org>
Sat, 19 Mar 2016 17:10:02 +0000 (18:10 +0100)
committerAndrej Kacian <ticho@claws-mail.org>
Sat, 19 Mar 2016 17:10:02 +0000 (18:10 +0100)
Untested, as I have no Google accounts to test with.

src/plugins/gdata/cm_gdata_contacts.c
src/plugins/gdata/cm_gdata_prefs.c
src/plugins/gdata/cm_gdata_prefs.h
src/plugins/gdata/gdata_plugin.c

index 0a062d2..86fc265 100644 (file)
@@ -31,7 +31,7 @@
 
 #include "addr_compl.h"
 #include "main.h"
 
 #include "addr_compl.h"
 #include "main.h"
-#include "password.h"
+#include "passwordstore.h"
 #include "prefs_common.h"
 #include "mainwindow.h"
 #include "common/log.h"
 #include "prefs_common.h"
 #include "mainwindow.h"
 #include "common/log.h"
@@ -522,6 +522,8 @@ static guchar* decode(const gchar *in)
 
 static void query()
 {
 
 static void query()
 {
+       gchar *token;
+
   if(cm_gdata_contacts_query_running)
   {
     debug_print("GData plugin: Network query already in progress");
   if(cm_gdata_contacts_query_running)
   {
     debug_print("GData plugin: Network query already in progress");
@@ -552,14 +554,12 @@ static void query()
   {
 #if GDATA_CHECK_VERSION(0,17,2)
     /* Try to restore from saved refresh token.*/
   {
 #if GDATA_CHECK_VERSION(0,17,2)
     /* Try to restore from saved refresh token.*/
-    if(cm_gdata_config.oauth2_refresh_token)
+               if((token = passwd_store_get(PWS_PLUGIN,
+                                               "GData", GDATA_TOKEN_PWD_STRING)) != NULL)
     {
     {
-      gchar *token = password_decrypt(cm_gdata_config.oauth2_refresh_token, NULL);
       log_message(LOG_PROTOCOL, _("GData plugin: Trying to refresh authorization\n"));
       log_message(LOG_PROTOCOL, _("GData plugin: Trying to refresh authorization\n"));
-      gdata_oauth2_authorizer_set_refresh_token(authorizer, (token != NULL ? token : ""));
-      if (token != NULL) {
-        memset(token, 0, strlen(token));
-      }
+      gdata_oauth2_authorizer_set_refresh_token(authorizer, token);
+      memset(token, 0, strlen(token));
       g_free(token);
       gdata_authorizer_refresh_authorization_async(GDATA_AUTHORIZER(authorizer), NULL, (GAsyncReadyCallback)cm_gdata_refresh_ready, NULL);
     }
       g_free(token);
       gdata_authorizer_refresh_authorization_async(GDATA_AUTHORIZER(authorizer), NULL, (GAsyncReadyCallback)cm_gdata_refresh_ready, NULL);
     }
@@ -638,7 +638,8 @@ void cm_gdata_contacts_done(void)
 #if GDATA_CHECK_VERSION(0,17,2)
     /* store refresh token */
     pass = gdata_oauth2_authorizer_dup_refresh_token(authorizer);
 #if GDATA_CHECK_VERSION(0,17,2)
     /* store refresh token */
     pass = gdata_oauth2_authorizer_dup_refresh_token(authorizer);
-    cm_gdata_config.oauth2_refresh_token = password_encrypt(pass, NULL);
+               passwd_store_set(PWS_PLUGIN, "GData", GDATA_TOKEN_PWD_STRING, pass,
+                               FALSE);
     memset(pass, 0, strlen(pass));
     g_free(pass);
 #endif
     memset(pass, 0, strlen(pass));
     g_free(pass);
 #endif
index 7ae6f55..83a23a6 100644 (file)
@@ -152,16 +152,3 @@ void cm_gdata_prefs_done(void)
     prefs_gtk_unregister_page((PrefsPage*) &gdata_page);
   }
 }
     prefs_gtk_unregister_page((PrefsPage*) &gdata_page);
   }
 }
-
-void cm_gdata_prefs_master_passphrase_change(const gchar *oldp, const gchar *newp) {
-       gchar *pass;
-       int i;
-
-       pass = password_decrypt(cm_gdata_config.oauth2_refresh_token, oldp);
-       if (pass != NULL) {
-               g_free(cm_gdata_config.oauth2_refresh_token);
-               cm_gdata_config.oauth2_refresh_token = password_encrypt(pass, newp);
-               memset(pass, 0, strlen(pass));
-       }
-       g_free(pass);
-}
index 5e917bd..b99f77f 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "prefs_gtk.h"
 
 
 #include "prefs_gtk.h"
 
+#define GDATA_TOKEN_PWD_STRING "oauth2_refresh_token"
+
 typedef struct {
   char *username;
   char *password;
 typedef struct {
   char *username;
   char *password;
@@ -33,6 +35,5 @@ extern PrefParam    cm_gdata_param[];
 
 void cm_gdata_prefs_init(void);
 void cm_gdata_prefs_done(void);
 
 void cm_gdata_prefs_init(void);
 void cm_gdata_prefs_done(void);
-void cm_gdata_prefs_master_passphrase_change(const gchar *oldp, const gchar *newp);
 
 #endif /* CM_GDATA_PREFS_H_ */
 
 #endif /* CM_GDATA_PREFS_H_ */
index c001f99..99303a1 100644 (file)
@@ -37,6 +37,7 @@
 #include "main.h"
 #include "mainwindow.h"
 #include "addr_compl.h"
 #include "main.h"
 #include "mainwindow.h"
 #include "addr_compl.h"
+#include "passwordstore.h"
 
 #include "cm_gdata_contacts.h"
 #include "cm_gdata_prefs.h"
 
 #include "cm_gdata_contacts.h"
 #include "cm_gdata_prefs.h"
@@ -121,6 +122,13 @@ gint plugin_init(gchar **error)
   prefs_read_config(cm_gdata_param, "GDataPlugin", rcpath, NULL);
   g_free(rcpath);
 
   prefs_read_config(cm_gdata_param, "GDataPlugin", rcpath, NULL);
   g_free(rcpath);
 
+       /* If the refresh token is still stored in config, save it to
+        * password store. */
+       if(cm_gdata_config.oauth2_refresh_token != NULL) {
+               passwd_store_set(PWS_PLUGIN, "GData", GDATA_TOKEN_PWD_STRING,
+                               cm_gdata_config.oauth2_refresh_token, FALSE);
+       }
+
   cm_gdata_prefs_init();
 
   debug_print("GData plugin loaded\n");
   cm_gdata_prefs_init();
 
   debug_print("GData plugin loaded\n");
@@ -181,11 +189,6 @@ const gchar *plugin_version(void)
   return VERSION;
 }
 
   return VERSION;
 }
 
-void plugin_master_passphrase_change (const gchar *oldp, const gchar *newp)
-{
-       cm_gdata_prefs_master_passphrase_change(oldp, newp);
-}
-
 struct PluginFeature *plugin_provides(void)
 {
   static struct PluginFeature features[] =
 struct PluginFeature *plugin_provides(void)
 {
   static struct PluginFeature features[] =