58 |
|
|
59 |
|
|
60 |
/* Load the key cache and rebuild the signature cache. */ |
/* Load the key cache and rebuild the signature cache. */ |
61 |
void |
int |
62 |
update_keycache (HWND hwnd) |
update_keycache (HWND hwnd) |
63 |
{ |
{ |
64 |
|
int err; |
65 |
|
|
66 |
refresh_cache_s rcs = {0}; |
refresh_cache_s rcs = {0}; |
67 |
rcs.kr_reload = 0; |
rcs.kr_reload = 0; |
68 |
rcs.kr_update = 1; |
rcs.kr_update = 1; |
69 |
rcs.tr_update = 1; |
rcs.tr_update = 1; |
70 |
DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, hwnd, |
err = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, hwnd, |
71 |
keycache_dlg_proc, (LPARAM)&rcs); |
keycache_dlg_proc, (LPARAM)&rcs); |
72 |
/* XXX: the dialog return 0 when an error occurs. |
if (err) { |
73 |
in this case figure out if the gpg env is OK |
char *cfg = get_gnupg_config (); |
74 |
and supress dialogs to configure gpg. */ |
if (cfg && check_gnupg_options (cfg, 0) == WPTERR_FILE_EXIST) |
75 |
|
msg_box (NULL, _("The gpg.conf contains at least one argument which points to a non-existing file."), "WinPT", MB_ERR); |
76 |
|
free_if_alloc (cfg); |
77 |
|
return -1; |
78 |
|
} |
79 |
|
return 0; |
80 |
} |
} |
81 |
|
|
82 |
|
|
727 |
} |
} |
728 |
break; |
break; |
729 |
|
|
730 |
|
case SETUP_CARDGEN: |
731 |
|
rc = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_CARD_KEYGEN, |
732 |
|
h, card_keygen_dlg_proc, 0); |
733 |
|
if (!rc) |
734 |
|
goto start; |
735 |
|
break; |
736 |
|
|
737 |
case 0: /* Cancel/Abort. */ |
case 0: /* Cancel/Abort. */ |
738 |
default: |
default: |
739 |
DestroyWindow (hwnd); |
DestroyWindow (hwnd); |
744 |
if (!check_crypto_engine ()) { |
if (!check_crypto_engine ()) { |
745 |
DestroyWindow (hwnd); |
DestroyWindow (hwnd); |
746 |
free_gnupg_table (); |
free_gnupg_table (); |
747 |
|
keycache_release (1); |
748 |
return 0; |
return 0; |
749 |
} |
} |
750 |
if (!is_gpg4win_installed ()) { |
if (!is_gpg4win_installed ()) { |
754 |
} |
} |
755 |
else { |
else { |
756 |
gpg_keycache_t c, sec_c; |
gpg_keycache_t c, sec_c; |
757 |
update_keycache (hwnd); |
if (update_keycache (hwnd)) { |
758 |
|
DestroyWindow (hwnd); |
759 |
|
free_gnupg_table (); |
760 |
|
keycache_release (1); |
761 |
|
return 0; |
762 |
|
} |
763 |
c = keycache_get_ctx (1); |
c = keycache_get_ctx (1); |
764 |
if (!c || !gpg_keycache_get_size (c)) { |
if (!gpg_keycache_get_size (c)) { |
|
gnupg_display_error (); |
|
765 |
msg_box (hwnd, _("The keycache was not initialized or is empty.\n" |
msg_box (hwnd, _("The keycache was not initialized or is empty.\n" |
766 |
"Please check your GPG config (keyrings, pathes...)"), |
"Please check your GPG config (keyrings, pathes...)"), |
767 |
_("WinPT Error"), MB_ERR); |
_("WinPT Error"), MB_ERR); |
776 |
else { |
else { |
777 |
DestroyWindow (hwnd); |
DestroyWindow (hwnd); |
778 |
free_gnupg_table (); |
free_gnupg_table (); |
779 |
|
keycache_release (1); |
780 |
return 0; |
return 0; |
781 |
} |
} |
782 |
} |
} |