diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index c632d9f..c109c2f 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -1426,11 +1426,26 @@ char *yon_password_hash_get(password_window *window){ const char *encription = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo)); const char *hash = gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)); if (!yon_char_is_empty(hash)){ - if (!yon_char_is_empty(window->old_password)&&strcmp(hash,window->old_password)&&strlen(hash)!=128&&strlen(hash)!=64){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->PasswordHashEntry); - return NULL; - } + // if (!yon_char_is_empty(window->old_password)&&strcmp(hash,window->old_password)){ + switch(encription_active){ + case 1:{ + if (strlen(hash)!=128){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->PasswordHashEntry); + return NULL; + } + } + break; + case 2:{ + if (strlen(hash)!=64){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->PasswordHashEntry); + return NULL; + } + } + break; + } + // } char *final = yon_char_unite(encription,"|",hash,NULL); return final; } else { @@ -1601,6 +1616,29 @@ void on_file_chooser_open(GtkWidget *, GtkEntry *target){ gtk_widget_destroy(dialog); } +void on_password_hash_sensitiveness(GtkWidget *,password_window *window){ + const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + const char *repeat_password = gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry)); + const char *hash = gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry)); + if (!yon_char_is_empty(password)||!yon_char_is_empty(repeat_password)){ + gtk_widget_set_sensitive(window->HashBox,0); + gtk_widget_set_sensitive(window->PasswordBox,1); + } else if (yon_char_is_empty(password)&&yon_char_is_empty(repeat_password)&& + gtk_combo_box_get_active(GTK_COMBO_BOX(window->EncryptionCombo))>0&& + yon_char_is_empty(hash)){ + gtk_widget_set_sensitive(window->HashBox,1); + gtk_widget_set_sensitive(window->PasswordBox,1); + gtk_widget_set_sensitive(window->NoEncriptionCheck,1); + } else if (!yon_char_is_empty(hash)) { + gtk_widget_set_sensitive(window->HashBox,1); + gtk_widget_set_sensitive(window->PasswordBox,0); + gtk_widget_set_sensitive(window->NoEncriptionCheck,0); + } else { + gtk_widget_set_sensitive(window->HashBox,0); + gtk_widget_set_sensitive(window->PasswordBox,1); + } +} + password_window *yon_password_window_new(){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_password_path); password_window *window = malloc(sizeof(password_window)); @@ -1614,10 +1652,16 @@ password_window *yon_password_window_new(){ window->PasswordHashEntry = yon_gtk_builder_get_widget(builder,"PasswordHashEntry"); window->UserCancelButton = yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"UserOkButton"); + window->PasswordBox = yon_gtk_builder_get_widget(builder,"PasswordBox"); + window->HashBox = yon_gtk_builder_get_widget(builder,"HashBox"); window->old_password=NULL; g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PasswordHashEntry); + g_signal_connect(G_OBJECT(window->EncryptionCombo),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); + g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); gtk_widget_show(window->Window); return window; } diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h index 8456eb3..066773a 100644 --- a/source/ubl-settings-update.h +++ b/source/ubl-settings-update.h @@ -279,6 +279,9 @@ typedef struct { GtkWidget *UserCancelButton; GtkWidget *AcceptButton; + GtkWidget *PasswordBox; + GtkWidget *HashBox; + const char *old_password; } password_window; @@ -385,4 +388,5 @@ void on_mirror_configure_accept(GtkWidget *, dictionary *dict); char *yon_password_unencrypted_password_get(password_window *window); char *yon_password_hash_get(password_window *window); void yon_hash_entry_sensitiveness_update(GtkWidget *, password_window *dialog); +void on_password_hash_sensitiveness(GtkWidget *,password_window *window); #endif \ No newline at end of file diff --git a/ubl-settings-update-password.glade b/ubl-settings-update-password.glade index 3005633..cbdd8f1 100644 --- a/ubl-settings-update-password.glade +++ b/ubl-settings-update-password.glade @@ -188,41 +188,41 @@ True True + 1 + + + + + Do not encrypt password + True + False + True + False + True + + + False + True 2 + + + True + False + + + False + True + 3 + + True False vertical 5 - - - True - False - - - False - True - 0 - - - - - Do not encrypt password - True - False - True - False - True - - - False - True - 1 - - True @@ -268,7 +268,7 @@ False True - 3 + 4