1 |
/* wptKeyManagerDlg.cpp - WinPT Key Manager |
/* wptKeyManagerDlg.cpp - WinPT Key Manager |
2 |
* Copyright (C) 2000-2004 Timo Schulz |
* Copyright (C) 2000-2005 Timo Schulz |
3 |
* Copyright (C) 2004 Andreas Jobs |
* Copyright (C) 2004 Andreas Jobs |
4 |
* |
* |
5 |
* This file is part of WinPT. |
* This file is part of WinPT. |
39 |
#include "wptKeyEdit.h" |
#include "wptKeyEdit.h" |
40 |
#include "wptRegistry.h" |
#include "wptRegistry.h" |
41 |
|
|
42 |
|
#define KM_SEPARATOR_ID 10000 |
43 |
#define WINDOWCLASS_SEPARATOR_CHILD "WINPT_SEP_CHILD" |
#define WINDOWCLASS_SEPARATOR_CHILD "WINPT_SEP_CHILD" |
44 |
#define SEPARATOR_HEIGHT 5 |
//#define KM_SEPARATOR_HEIGHT 5 |
45 |
|
|
|
int treeview_add_item (HWND tree, HTREEITEM parent, const char * text); |
|
46 |
|
|
47 |
static subclass_s keylist_proc; |
static subclass_s keylist_proc; |
48 |
static int km_index = -1; |
static int km_index = -1; |
|
static int km_def_pos = 0; |
|
49 |
|
|
50 |
HIMAGELIST glob_imagelist; |
HIMAGELIST glob_imagelist; |
51 |
|
|
78 |
}; |
}; |
79 |
|
|
80 |
|
|
81 |
|
#ifndef VK_F |
82 |
|
#define VK_F 70 |
83 |
|
#endif |
84 |
|
#ifndef VK_A |
85 |
|
#define VK_A 65 |
86 |
|
#endif |
87 |
|
#ifndef VK_C |
88 |
|
#define VK_C 67 |
89 |
|
#endif |
90 |
|
#ifndef VK_P |
91 |
|
#define VK_P 80 |
92 |
|
#endif |
93 |
|
|
94 |
static BOOL CALLBACK |
static BOOL CALLBACK |
95 |
keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
96 |
{ |
{ |
97 |
switch (msg) |
struct listview_ctrl_s lv; |
98 |
{ |
|
99 |
|
switch (msg) { |
100 |
case WM_LBUTTONDBLCLK: |
case WM_LBUTTONDBLCLK: |
101 |
send_cmd_id( keylist_proc.dlg, ID_KEYMISC_PROPS ); |
send_cmd_id (keylist_proc.dlg, ID_KEYMISC_PROPS); |
102 |
break; |
break; |
103 |
|
|
104 |
case WM_KEYUP: |
case WM_KEYUP: |
105 |
int virt_key = (int)wparam; |
int virt_key = (int)wparam; |
106 |
if (virt_key == VK_SPACE) |
switch (virt_key) { |
107 |
{ |
case VK_SPACE: |
108 |
send_cmd_id( keylist_proc.dlg, ID_KEYMISC_PROPS ); |
send_cmd_id( keylist_proc.dlg, ID_KEYMISC_PROPS ); |
109 |
break; |
break; |
110 |
} |
|
111 |
if (virt_key == VK_DELETE) |
case VK_DELETE: |
|
{ |
|
112 |
send_cmd_id( keylist_proc.dlg, ID_KEYMISC_DELETE ); |
send_cmd_id( keylist_proc.dlg, ID_KEYMISC_DELETE ); |
113 |
break; |
break; |
114 |
} |
|
115 |
if (virt_key == VK_INSERT) |
case VK_INSERT: |
|
{ |
|
116 |
send_cmd_id (keylist_proc.dlg, ID_KEYMISC_PASTE); |
send_cmd_id (keylist_proc.dlg, ID_KEYMISC_PASTE); |
117 |
break; |
break; |
118 |
|
|
119 |
|
case VK_A: |
120 |
|
if (GetAsyncKeyState (VK_CONTROL)) { |
121 |
|
lv.ctrl = GetDlgItem (keylist_proc.dlg, IDC_KEYMISC_KEYLIST); |
122 |
|
listview_select_all (&lv); |
123 |
|
} |
124 |
|
break; |
125 |
|
|
126 |
|
case VK_C: |
127 |
|
if (GetAsyncKeyState (VK_CONTROL)) { |
128 |
|
lv.ctrl = GetDlgItem (keylist_proc.dlg, IDC_KEYMISC_KEYLIST); |
129 |
|
km_index = listview_get_curr_pos (&lv); |
130 |
|
km_clip_export (keylist_proc.dlg, &lv); |
131 |
|
} |
132 |
|
break; |
133 |
|
|
134 |
|
case VK_P: |
135 |
|
if (GetAsyncKeyState (VK_CONTROL)) { |
136 |
|
km_index = -1; |
137 |
|
km_clip_import (keylist_proc.dlg); |
138 |
|
} |
139 |
|
break; |
140 |
|
|
141 |
|
case VK_F: |
142 |
|
if (GetAsyncKeyState (VK_CONTROL)) { |
143 |
|
lv.ctrl = GetDlgItem (keylist_proc.dlg, IDC_KEYMISC_KEYLIST); |
144 |
|
km_find_key (dlg, &lv); |
145 |
|
} |
146 |
|
break; |
147 |
} |
} |
148 |
break; |
break; |
149 |
} |
} |
203 |
p = get_reg_entry( HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_X" ); |
p = get_reg_entry( HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_X" ); |
204 |
if( p && !strcmp( p, " " ) ) { |
if( p && !strcmp( p, " " ) ) { |
205 |
free_if_alloc( p ); |
free_if_alloc( p ); |
206 |
center_window( dlg ); |
center_window( dlg, NULL ); |
207 |
return; |
return; |
208 |
} |
} |
209 |
else if( p ) |
else if( p ) |
212 |
p = get_reg_entry( HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_Y" ); |
p = get_reg_entry( HKEY_CURRENT_USER, "Software\\WinPT", "KM_Pos_Y" ); |
213 |
if( p && !strcmp( p, " " ) ) { |
if( p && !strcmp( p, " " ) ) { |
214 |
free_if_alloc( p ); |
free_if_alloc( p ); |
215 |
center_window( dlg ); |
center_window( dlg, NULL ); |
216 |
return; |
return; |
217 |
} |
} |
218 |
else if( p ) |
else if( p ) |
219 |
pos_y = atol( p ); |
pos_y = atol( p ); |
220 |
|
|
221 |
if( !pos_y && !pos_x ) { |
if( !pos_y && !pos_x ) { |
222 |
center_window( dlg ); |
center_window( dlg, NULL ); |
223 |
return; |
return; |
224 |
} |
} |
225 |
|
|
326 |
|
|
327 |
|
|
328 |
static void |
static void |
329 |
do_check_cache( listview_ctrl_t lv, HWND dlg, HWND sb ) |
do_check_cache (listview_ctrl_t lv, HWND dlg, HWND sb) |
330 |
{ |
{ |
331 |
gpgme_keycache_t cache; |
gpg_keycache_t cache; |
332 |
|
|
333 |
if( keycache_get_reload( ) ) { |
if( keycache_get_reload( ) ) { |
334 |
keycache_reload( dlg ); |
keycache_reload( dlg ); |
336 |
cache = keycache_get_ctx( 1 ); |
cache = keycache_get_ctx( 1 ); |
337 |
if( !cache ) |
if( !cache ) |
338 |
BUG( dlg ); |
BUG( dlg ); |
339 |
keylist_reload( lv, cache, KEYLIST_LIST, GPGME_ATTR_USERID ); |
keylist_reload( lv, cache, KEYLIST_LIST, KEY_SORT_USERID ); |
340 |
km_complete_status_bar (sb, lv, km_def_pos); |
km_complete_status_bar (sb, lv); |
341 |
} |
} |
342 |
} /* do_check_cache */ |
} /* do_check_cache */ |
343 |
|
|
467 |
#define enable_button(hwnd, cid) \ |
#define enable_button(hwnd, cid) \ |
468 |
SendMessage ((hwnd), TB_ENABLEBUTTON, (cid), MAKELONG (key_selected, 0)) |
SendMessage ((hwnd), TB_ENABLEBUTTON, (cid), MAKELONG (key_selected, 0)) |
469 |
|
|
470 |
|
|
471 |
|
/* Interactive modification of the dialog item which depend if an item |
472 |
|
is selected or not and what kind of item. @lv is the list view with |
473 |
|
the items. */ |
474 |
void |
void |
475 |
update_ui_items (HWND hwnd, listview_ctrl_t lv) |
update_ui_items (HWND hwnd, listview_ctrl_t lv) |
476 |
{ |
{ |
486 |
key_has_sec = FALSE; |
key_has_sec = FALSE; |
487 |
if (key_selected) { |
if (key_selected) { |
488 |
i = listview_get_curr_pos (lv); |
i = listview_get_curr_pos (lv); |
489 |
key_has_sec = km_check_for_seckey( lv, i, NULL ) ? TRUE : FALSE; |
key_has_sec = km_check_for_seckey (lv, i, NULL) ? TRUE : FALSE; |
490 |
key_inv = km_get_key_status (lv, i) & KM_FLAG_REVOKED; |
key_inv = km_get_key_status (lv, i) & KM_FLAG_REVOKED; |
491 |
} |
} |
492 |
|
|
493 |
/* Enable / disable toolbar buttons */ |
/* Enable / disable toolbar buttons */ |
494 |
hwnd_child = GetDlgItem(hwnd, IDR_WINPT_KMTB); |
hwnd_child = GetDlgItem (hwnd, IDR_WINPT_KMTB); |
495 |
enable_button (hwnd_child, ID_KEYMISC_DELETE); |
enable_button (hwnd_child, ID_KEYMISC_DELETE); |
496 |
enable_button (hwnd_child, ID_KEYMISC_PROPS); |
enable_button (hwnd_child, ID_KEYMISC_PROPS); |
497 |
enable_button (hwnd_child, ID_KEYMISC_SIGN); |
enable_button (hwnd_child, ID_KEYMISC_SIGN); |
504 |
set_menu_state (hmenu, ID_KEYMISC_REVCERT, key_has_sec ? MF_ENABLED : MF_GRAYED); |
set_menu_state (hmenu, ID_KEYMISC_REVCERT, key_has_sec ? MF_ENABLED : MF_GRAYED); |
505 |
set_menu_state (hmenu, ID_KEYMISC_DELETE, key_selected ? MF_ENABLED : MF_GRAYED); |
set_menu_state (hmenu, ID_KEYMISC_DELETE, key_selected ? MF_ENABLED : MF_GRAYED); |
506 |
set_menu_state (hmenu, ID_KEYMISC_PROPS, key_selected ? MF_ENABLED : MF_GRAYED); |
set_menu_state (hmenu, ID_KEYMISC_PROPS, key_selected ? MF_ENABLED : MF_GRAYED); |
507 |
set_menu_state (hmenu, ID_KEYMISC_SIGN, key_selected && !key_inv ? MF_ENABLED : MF_GRAYED); |
set_menu_state (hmenu, ID_KEYMISC_SIGN, key_selected && !key_inv ? MF_ENABLED : MF_GRAYED); |
508 |
} /* update_ui_items */ |
set_menu_state (hmenu, ID_KEYMISC_EDITKEY, key_selected? MF_ENABLED : MF_GRAYED); |
509 |
|
set_menu_state (hmenu, ID_KEYMISC_CHECKSIGS, key_selected? MF_ENABLED : MF_GRAYED); |
510 |
|
} |
511 |
|
|
512 |
|
|
513 |
|
/* The items which are shown when GPG is in read-only mode. */ |
514 |
static void |
static void |
515 |
popup_gpg_readonly (HWND dlg, HMENU hm) |
popup_gpg_readonly (HWND dlg, HMENU hm) |
516 |
{ |
{ |
541 |
static void |
static void |
542 |
menu_gpg_readonly (HWND dlg, HMENU hm, int id) |
menu_gpg_readonly (HWND dlg, HMENU hm, int id) |
543 |
{ |
{ |
544 |
int key_resids[] = |
int key_resids[] = { |
|
{ |
|
545 |
ID_KEYMISC_SIGN, |
ID_KEYMISC_SIGN, |
546 |
ID_KEYMISC_DELETE, |
ID_KEYMISC_DELETE, |
547 |
ID_KEYMISC_REVCERT, |
ID_KEYMISC_REVCERT, |
554 |
ID_KEYMISC_NEWKEY, |
ID_KEYMISC_NEWKEY, |
555 |
0, |
0, |
556 |
}; |
}; |
557 |
int edit_resids[] = |
int edit_resids[] = { |
|
{ |
|
558 |
ID_KEYMISC_PASTE, |
ID_KEYMISC_PASTE, |
559 |
ID_KEYMISC_OT, |
ID_KEYMISC_OT, |
560 |
ID_KEYMISC_EDITKEY, |
ID_KEYMISC_EDITKEY, |
566 |
|
|
567 |
if (gpg_read_only == 0) |
if (gpg_read_only == 0) |
568 |
return; |
return; |
569 |
switch (id) |
switch (id) { |
|
{ |
|
570 |
case 0: return; |
case 0: return; |
571 |
case 3: resids = key_resids; break; |
case 3: resids = key_resids; break; |
572 |
case 1: resids = edit_resids;break; |
case 1: resids = edit_resids;break; |
577 |
} |
} |
578 |
|
|
579 |
|
|
580 |
|
static char* |
581 |
|
gen_export_filename (const char *keyid, int is_secret) |
582 |
|
{ |
583 |
|
gpgme_key_t key; |
584 |
|
const char *s; |
585 |
|
char *p; |
586 |
|
|
587 |
|
if (get_pubkey (keyid, &key)) |
588 |
|
return m_strdup (keyid); |
589 |
|
s = key->uids->name; |
590 |
|
if (!s) |
591 |
|
return m_strdup (keyid); |
592 |
|
p = new char[strlen (s) + 8 + 16]; |
593 |
|
if (!p) |
594 |
|
BUG (0); |
595 |
|
sprintf (p, "%s%s.asc", s, is_secret? "_sec" : ""); |
596 |
|
for (size_t i=0; i < strlen (p); i++) { |
597 |
|
if (p[i] == ' ' || p[i] == ':' || p[i] == '?' || p[i] == '|') |
598 |
|
p[i] = '_'; |
599 |
|
} |
600 |
|
return p; |
601 |
|
} |
602 |
|
|
603 |
|
|
604 |
|
static void |
605 |
|
update_key (listview_ctrl_t lv, int pos, const char *keyid, int keypair) |
606 |
|
{ |
607 |
|
gpgme_key_t key; |
608 |
|
|
609 |
|
keycache_update (0, keyid); |
610 |
|
if (keypair) |
611 |
|
keycache_update (1, keyid); |
612 |
|
|
613 |
|
/* because we replaced the key item, we need to update the |
614 |
|
address of the pointer in the ListView control. */ |
615 |
|
get_pubkey (keyid, &key); |
616 |
|
keylist_upd_key (lv, pos, key); |
617 |
|
} |
618 |
|
|
619 |
|
|
620 |
|
/* Setup status bar for the main window @dlg. */ |
621 |
|
static HWND |
622 |
|
setup_status_bar (HWND dlg, listview_ctrl_t lv) |
623 |
|
{ |
624 |
|
HWND statbar; |
625 |
|
RECT r; |
626 |
|
int partpos[3]; |
627 |
|
int i; |
628 |
|
|
629 |
|
GetClientRect (dlg, &r); |
630 |
|
for (i=1; i <= 3; i++) |
631 |
|
partpos[i-1] = r.right/3*i; |
632 |
|
statbar = CreateStatusWindow (WS_CHILD | WS_VISIBLE | CCS_BOTTOM, |
633 |
|
"status bar", dlg, KM_SEPARATOR_ID); |
634 |
|
|
635 |
|
ShowWindow (statbar, SW_SHOW); |
636 |
|
SendMessage (statbar, SB_SETPARTS, (WPARAM)3, (LPARAM)partpos); |
637 |
|
|
638 |
|
km_update_default_key_str (statbar); |
639 |
|
km_complete_status_bar (statbar, lv); |
640 |
|
|
641 |
|
return statbar; |
642 |
|
} |
643 |
|
|
644 |
|
|
645 |
BOOL CALLBACK |
BOOL CALLBACK |
646 |
keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
keymanager_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
647 |
{ |
{ |
652 |
INITCOMMONCONTROLSEX icex; |
INITCOMMONCONTROLSEX icex; |
653 |
HWND kl; |
HWND kl; |
654 |
HMENU hm; |
HMENU hm; |
655 |
gpgme_keycache_t c; |
gpg_keycache_t c; |
656 |
gpgme_key_t pk; |
gpgme_key_t key; |
657 |
km_group_cb_s gcb; |
/*km_group_cb_s gcb; XXX */ |
658 |
|
struct genkey_s genkey; |
659 |
struct winpt_key_s k = {0}; |
struct winpt_key_s k = {0}; |
660 |
struct http_file_s * http; |
struct URL_ctx_s *url; |
661 |
refresh_cache_s rcs = {0}; |
refresh_cache_s rcs = {0}; |
662 |
char keyid[48], uid[128], type[32], * q; |
char keyid[48], uid[128], type[32], *name; |
663 |
const char *t, * host; |
const char *t, * host; |
664 |
u16 port = 0; |
u16 port = 0; |
665 |
int idx = 0, i=0, rc; |
int idx = 0, i=0, rc; |
684 |
#endif |
#endif |
685 |
menu = LoadMenu( glob_hinst, (LPCSTR)IDR_WINPT_KEYMISC ); |
menu = LoadMenu( glob_hinst, (LPCSTR)IDR_WINPT_KEYMISC ); |
686 |
#ifndef LANG_DE |
#ifndef LANG_DE |
687 |
set_menu_text( menu, ID_KEYMISC_QUIT, _("&Quit") ); |
set_menu_text (menu, ID_KEYMISC_MAIL, _("Send Mail...")); |
688 |
set_menu_text( menu, ID_KEYMISC_UID, _("User ID") ); |
set_menu_text (menu, ID_KEYMISC_OT, _("Ownertrust")); /* XXX */ |
689 |
set_menu_text( menu, ID_KEYMISC_NEWKEY, _("&Expert") ); |
set_menu_text (menu, ID_KEYMISC_COPY, _("&Copy\tCtrl+C")); |
690 |
set_menu_text( menu, ID_KEYMISC_KEYWIZARD, _("&Normal") ); |
set_menu_text (menu, ID_KEYMISC_PASTE, _("&Paste\tCtrl+V")); |
691 |
set_menu_text( menu, ID_KEYMISC_EDIT, _("Edit") ); |
set_menu_text (menu, ID_KEYMISC_FIND, _("Search...\tCtrl+F")); |
692 |
set_menu_text( menu, ID_KEYMISC_SIGN, _("&Sign") ); |
set_menu_text (menu, ID_KEYMISC_SELALL, _("Select All\tCtrl+A")); |
693 |
set_menu_text( menu, ID_KEYMISC_DELETE, _("&Delete") ); |
set_menu_text (menu, ID_KEYMISC_QUIT, _("&Quit")); |
694 |
set_menu_text( menu, ID_KEYMISC_REVCERT, _("&Revoke") ); |
set_menu_text (menu, ID_KEYMISC_UID, _("User ID")); |
695 |
set_menu_text( menu, ID_KEYMISC_CHECKSIGS, _("&List Signatures") ); |
set_menu_text (menu, ID_KEYMISC_NEWKEY, _("&Expert")); |
696 |
set_menu_text( menu, ID_KEYMISC_TRUSTPATH, _("List Trust Path") ); |
set_menu_text (menu, ID_KEYMISC_KEYWIZARD, _("&Normal")); |
697 |
set_menu_text( menu, ID_KEYMISC_PROPS, _("&Properties") ); |
set_menu_text (menu, ID_KEYMISC_EDIT, _("Edit")); |
698 |
set_menu_text( menu, ID_KEYMISC_GPGOPT, _("Options") ); |
set_menu_text (menu, ID_KEYMISC_SIGN, _("&Sign")); |
699 |
set_menu_text( menu, ID_KEYMISC_GPGPREFS, _("Preferences") ); |
set_menu_text (menu, ID_KEYMISC_DELETE, _("&Delete")); |
700 |
set_menu_text( menu, ID_KEYMISC_SENDRECV, _("Keyserver") ); |
set_menu_text (menu, ID_KEYMISC_REVCERT, _("&Revoke")); |
701 |
set_menu_text( menu, ID_KEYMISC_RECACHE, _("Re&load Key Cache") ); |
set_menu_text (menu, ID_KEYMISC_CHECKSIGS, _("&List Signatures")); |
702 |
set_menu_text( menu, ID_KEYMISC_REBUILD, _("R&everify Signatures") ); |
set_menu_text (menu, ID_KEYMISC_TRUSTPATH, _("List Trust Path")); |
703 |
set_menu_text( menu, ID_KEYMISC_INFO, _("Info") ); |
set_menu_text (menu, ID_KEYMISC_EXPORT, _("&Export...")); |
704 |
set_menu_text (menu, ID_KEYMISC_HELP, _("Help")); |
set_menu_text (menu, ID_KEYMISC_IMPORT, _("&Import...")); |
705 |
|
set_menu_text (menu, ID_KEYMISC_PROPS, _("&Properties")); |
706 |
|
set_menu_text (menu, ID_KEYMISC_GPGOPT, _("Options")); |
707 |
|
set_menu_text (menu, ID_KEYMISC_GPGPREFS, _("Preferences")); |
708 |
|
set_menu_text (menu, ID_KEYMISC_SENDRECV, _("Keyserver") ); |
709 |
|
set_menu_text (menu, ID_KEYMISC_EXPORT_PRIVKEY, _("E&xport Secret Key")); |
710 |
|
set_menu_text (menu, ID_KEYMISC_RECACHE, _("Re&load Key Cache")); |
711 |
|
set_menu_text (menu, ID_KEYMISC_REBUILD, _("R&everify Signatures")); |
712 |
|
set_menu_text (menu, ID_KEYMISC_REFRESH_KEYS, _("Refresh &Keys (Keyserver)")); |
713 |
|
set_menu_text (menu, ID_KEYMISC_INFO, _("Info") ); |
714 |
|
set_menu_text (menu, ID_KEYMISC_HELP, _("&Help")); |
715 |
|
|
716 |
#endif |
#endif |
717 |
SetMenu( dlg, menu ); |
SetMenu (dlg, menu); |
718 |
if( keyring_check_last_access() ) |
if( keyring_check_last_access() ) |
719 |
keycache_set_reload( 1 ); |
keycache_set_reload( 1 ); |
720 |
if( keycache_get_reload( ) ) |
if( keycache_get_reload( ) ) |
722 |
c = keycache_get_ctx( KEYCACHE_PUB ); |
c = keycache_get_ctx( KEYCACHE_PUB ); |
723 |
if( !c ) |
if( !c ) |
724 |
BUG( NULL ); |
BUG( NULL ); |
725 |
kmi->keylist_sortby = GPGME_ATTR_USERID; |
kmi->keylist_sortby = KEY_SORT_USERID; |
726 |
Header_SetImageList(ListView_GetHeader(GetDlgItem( dlg, IDC_KEYMISC_KEYLIST )), |
Header_SetImageList(ListView_GetHeader(GetDlgItem( dlg, IDC_KEYMISC_KEYLIST )), |
727 |
glob_imagelist); |
glob_imagelist); |
728 |
kmi->lv = keylist_load( GetDlgItem( dlg, IDC_KEYMISC_KEYLIST ), c, |
kmi->lv = keylist_load( GetDlgItem( dlg, IDC_KEYMISC_KEYLIST ), c, |
738 |
BUG( NULL ); |
BUG( NULL ); |
739 |
} |
} |
740 |
} |
} |
741 |
|
#if 0 |
742 |
km_groups_new( &gc, GetDlgItem( dlg, IDC_KEYMISC_GROUP ) ); |
km_groups_new( &gc, GetDlgItem( dlg, IDC_KEYMISC_GROUP ) ); |
743 |
km_groups_load( gc ); |
km_groups_load( gc ); |
744 |
SetForegroundWindow( dlg ); |
#endif |
745 |
|
SetClassLong (dlg, GCL_HICON, (LONG)LoadIcon (glob_hinst, (LPCTSTR)IDI_WINPT)); |
746 |
kmi->statbar = CreateStatusWindow( WS_CHILD | WS_VISIBLE | CCS_BOTTOM, "status bar", dlg, 100000 ); |
SetForegroundWindow (dlg); |
747 |
ShowWindow( kmi->statbar, SW_SHOW ); |
|
748 |
km_update_default_key_str (kmi->statbar, &km_def_pos); |
kmi->statbar = setup_status_bar (dlg, kmi->lv); |
|
km_complete_status_bar( kmi->statbar, kmi->lv, km_def_pos ); |
|
749 |
|
|
750 |
SetWindowLong (dlg, GWL_USERDATA, (LONG)kmi); |
SetWindowLong (dlg, GWL_USERDATA, (LONG)kmi); |
751 |
kmi->toolbar = load_toolbar (dlg, kmi); |
kmi->toolbar = load_toolbar (dlg, kmi); |
752 |
|
|
753 |
do_center_window( dlg, kmi ); |
do_center_window (dlg, kmi); |
754 |
do_resize_window( dlg, kmi ); |
do_resize_window (dlg, kmi); |
755 |
update_ui_items (dlg, kmi->lv); |
update_ui_items (dlg, kmi->lv); |
756 |
return TRUE; |
return TRUE; |
757 |
|
|
759 |
if (kmi->lv) { |
if (kmi->lv) { |
760 |
keylist_delete (kmi->lv); |
keylist_delete (kmi->lv); |
761 |
kmi->lv = NULL; |
kmi->lv = NULL; |
762 |
|
|
763 |
|
/* |
764 |
if (gc) { |
if (gc) { |
765 |
km_groups_release (gc); |
km_groups_release (gc); |
766 |
gc = NULL; |
gc = NULL; |
767 |
} |
}*/ |
768 |
imagelist_destroy (); |
imagelist_destroy (); |
769 |
|
|
770 |
char buf[32]; |
char buf[32]; |
884 |
break; |
break; |
885 |
|
|
886 |
case NM_RCLICK: |
case NM_RCLICK: |
887 |
if (notify->idFrom == IDC_KEYMISC_KEYLIST) |
if (notify->idFrom == IDC_KEYMISC_KEYLIST) { |
|
{ |
|
888 |
if (listview_get_curr_pos (kmi->lv) == -1) |
if (listview_get_curr_pos (kmi->lv) == -1) |
889 |
return TRUE; /* Popup only when a item was selected */ |
return TRUE; /* Popup only when a item was selected */ |
890 |
do_check_cache (kmi->lv, dlg, kmi->statbar); |
do_check_cache (kmi->lv, dlg, kmi->statbar); |
892 |
hm = LoadMenu (glob_hinst, MAKEINTRESOURCE (IDR_WINPT_KEYMISC_CTX)); |
hm = LoadMenu (glob_hinst, MAKEINTRESOURCE (IDR_WINPT_KEYMISC_CTX)); |
893 |
popup = GetSubMenu (hm, 0); |
popup = GetSubMenu (hm, 0); |
894 |
#ifndef LANG_DE |
#ifndef LANG_DE |
895 |
set_menu_text( popup, ID_KEYCTX_UID_COPY, _("Copy User ID to Clipboard") ); |
set_menu_text (popup, ID_KEYCTX_UID_COPY, _("Copy User ID to Clipboard")); |
896 |
set_menu_text( popup, ID_KEYCTX_COPY, _("Copy Key to Clipboard") ); |
set_menu_text (popup, ID_KEYCTX_KEYID_COPY, _("Copy Key ID to Clipboard")); |
897 |
set_menu_text( popup, ID_KEYCTX_PASTE, _("Paste Key from Clipboard") ); |
set_menu_text (popup, ID_KEYCTX_FPR_COPY, _("Copy Fingerprint to Clipboard")); |
898 |
set_menu_text( popup, ID_KEYCTX_RECVFROM, _("Refresh from Keyserver") ); |
set_menu_text (popup, ID_KEYCTX_KINFO_COPY, _("Copy Key Info to Clipboard")); |
899 |
|
set_menu_text (popup, ID_KEYCTX_COPY, _("Copy Key to Clipboard")); |
900 |
|
set_menu_text (popup, ID_KEYCTX_PASTE, _("Paste Key from Clipboard")); |
901 |
|
set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Refresh from Keyserver")); |
902 |
|
set_menu_text (popup, ID_KEYCTX_MAXTRUST, _("Set Implicit &Trust")); |
903 |
|
set_menu_text (popup, ID_KEYCTX_LISTSIGS, _("&List Signatures")); |
904 |
|
set_menu_text (popup, ID_KEYCTX_PROPS, _("&Key Properties")); |
905 |
|
set_menu_text (popup, ID_KEYCTX_EDIT, _("Key Edit")); |
906 |
|
set_menu_text (popup, ID_KEYCTX_DEL, _("&Delete")); |
907 |
|
set_menu_text (popup, ID_KEYCTX_REV, _("&Revoke")); |
908 |
|
set_menu_text (popup, ID_KEYCTX_SIGN, _("&Sign")); |
909 |
|
set_menu_text (popup, ID_KEYCTX_ENABLE, _("&Enable")); |
910 |
|
set_menu_text (popup, ID_KEYCTX_DISABLE, _("&Disable")); |
911 |
|
set_menu_text (popup, ID_KEYCTX_RECVFROM, _("Re&fresh from Keyserver")); |
912 |
|
set_menu_text (popup, ID_KEYCTX_SETPREFKS, _("Set preferred Keyserver URL")); |
913 |
|
set_menu_text (popup, ID_KEYCTX_SENDMAIL, _("Send Key to Mail Recipient")); |
914 |
|
set_menu_text (popup, ID_KEYCTX_SETDEFKEY, _("Set as Default Key")); |
915 |
|
/* change popup texts */ |
916 |
|
set_menu_text_bypos (popup, 0, _("Key Attributes")); |
917 |
|
set_menu_text_bypos (popup, 6, _("Add")); |
918 |
|
set_menu_text_bypos (popup, 19, _("Send to Keyserver")); |
919 |
#endif |
#endif |
920 |
idx = listview_get_curr_pos (kmi->lv); |
idx = listview_get_curr_pos (kmi->lv); |
921 |
if (km_check_for_seckey (kmi->lv, idx, &i) && i == 0) |
if (km_check_for_seckey (kmi->lv, idx, &i)) |
|
{ |
|
922 |
set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED); |
set_menu_state (popup, ID_KEYCTX_SETDEFKEY, MF_ENABLED); |
923 |
|
if (i == 0) |
924 |
set_menu_state (popup, ID_KEYCTX_MAXTRUST, MF_ENABLED); |
set_menu_state (popup, ID_KEYCTX_MAXTRUST, MF_ENABLED); |
925 |
} |
if (!km_check_for_seckey (kmi->lv, idx, NULL)) { |
|
if( !km_check_for_seckey( kmi->lv, idx, NULL ) ) { |
|
926 |
set_menu_state( popup, ID_KEYCTX_REV, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_REV, MF_DISABLED|MF_GRAYED ); |
927 |
set_menu_state( popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED ); |
928 |
set_menu_state( popup, ID_KEYCTX_ADDUID, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_ADDUID, MF_DISABLED|MF_GRAYED ); |
930 |
set_menu_state( popup, ID_KEYCTX_ADDPHOTO, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_ADDPHOTO, MF_DISABLED|MF_GRAYED ); |
931 |
set_menu_state (popup, ID_KEYCTX_SETPREFKS, MF_DISABLED|MF_GRAYED); |
set_menu_state (popup, ID_KEYCTX_SETPREFKS, MF_DISABLED|MF_GRAYED); |
932 |
} |
} |
933 |
else if( km_check_for_seckey( kmi->lv, idx, NULL ) |
else if( km_check_for_seckey (kmi->lv, idx, NULL) |
934 |
&& km_key_is_v3( kmi->lv, idx ) ) |
&& km_key_is_v3 (kmi->lv, idx)) { |
|
{ |
|
935 |
/* PGP 2 keys, version 3 have no no support for photo-id's, |
/* PGP 2 keys, version 3 have no no support for photo-id's, |
936 |
designated revokers and secondary keys. */ |
designated revokers and secondary keys. */ |
937 |
set_menu_state( popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED ); |
set_menu_state (popup, ID_KEYCTX_ADDKEY, MF_DISABLED|MF_GRAYED); |
938 |
set_menu_state( popup, ID_KEYCTX_ADDREV, MF_DISABLED|MF_GRAYED ); |
set_menu_state (popup, ID_KEYCTX_ADDREV, MF_DISABLED|MF_GRAYED); |
939 |
set_menu_state( popup, ID_KEYCTX_ADDPHOTO, MF_DISABLED|MF_GRAYED ); |
set_menu_state (popup, ID_KEYCTX_ADDPHOTO, MF_DISABLED|MF_GRAYED); |
940 |
} |
} |
941 |
if( km_get_key_status( kmi->lv, idx ) & KM_FLAG_DISABLED ) |
if( km_get_key_status( kmi->lv, idx ) & KM_FLAG_DISABLED ) |
942 |
set_menu_state( popup, ID_KEYCTX_DISABLE, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_DISABLE, MF_DISABLED|MF_GRAYED ); |
944 |
set_menu_state( popup, ID_KEYCTX_ENABLE, MF_DISABLED|MF_GRAYED ); |
set_menu_state( popup, ID_KEYCTX_ENABLE, MF_DISABLED|MF_GRAYED ); |
945 |
if (km_get_key_status (kmi->lv, idx) & KM_FLAG_REVOKED) |
if (km_get_key_status (kmi->lv, idx) & KM_FLAG_REVOKED) |
946 |
set_menu_state (popup, ID_KEYCTX_SIGN, MF_DISABLED|MF_GRAYED); |
set_menu_state (popup, ID_KEYCTX_SIGN, MF_DISABLED|MF_GRAYED); |
947 |
if( mapi_init() ) |
if (mapi_init()) |
948 |
set_menu_state( popup, ID_KEYCTX_SENDMAIL, MF_DISABLED|MF_GRAYED ); |
set_menu_state (popup, ID_KEYCTX_SENDMAIL, MF_DISABLED|MF_GRAYED); |
949 |
|
/* Override 'Default Keyserver' with the actual name. */ |
950 |
|
host = kserver_get_hostname (0, -1, &port); |
951 |
|
set_menu_text (popup, ID_KEYCTX_KS_DEFAULT, host); |
952 |
popup_gpg_readonly (dlg, popup); |
popup_gpg_readonly (dlg, popup); |
953 |
TrackPopupMenu( popup, TPM_RIGHTALIGN, p.x, p.y, 0, dlg, NULL ); |
TrackPopupMenu (popup, TPM_RIGHTALIGN, p.x, p.y, 0, dlg, NULL); |
954 |
DestroyMenu( popup ); |
DestroyMenu (popup); |
955 |
DestroyMenu( hm ); |
DestroyMenu (hm); |
956 |
return TRUE; |
return TRUE; |
957 |
} |
} |
958 |
|
#if 0 /* XXX */ |
959 |
if( notify->idFrom == IDC_KEYMISC_GROUP ) { |
if( notify->idFrom == IDC_KEYMISC_GROUP ) { |
960 |
HWND tree = GetDlgItem( dlg, IDC_KEYMISC_GROUP ); |
HWND tree = GetDlgItem( dlg, IDC_KEYMISC_GROUP ); |
961 |
if( TreeView_GetSelection( tree ) ) { |
if( TreeView_GetSelection( tree ) ) { |
972 |
return TRUE; |
return TRUE; |
973 |
} |
} |
974 |
} |
} |
975 |
|
#endif |
976 |
break; |
break; |
977 |
|
|
978 |
case LVN_COLUMNCLICK: |
case LVN_COLUMNCLICK: |
980 |
NMLISTVIEW * p = (LPNMLISTVIEW) lparam; |
NMLISTVIEW * p = (LPNMLISTVIEW) lparam; |
981 |
int sortby = 0; |
int sortby = 0; |
982 |
switch (p->iSubItem) { |
switch (p->iSubItem) { |
983 |
case 0: sortby = GPGME_ATTR_USERID; break; |
case 0: sortby = KEY_SORT_USERID; break; |
984 |
case 1: sortby = GPGME_ATTR_KEYID; break; |
case 1: sortby = KEY_SORT_KEYID; break; |
985 |
case 2: sortby = GPGME_ATTR_IS_SECRET; break; |
case 2: sortby = KEY_SORT_IS_SECRET; break; |
986 |
case 3: sortby = GPGME_ATTR_LEN; break; |
case 3: sortby = KEY_SORT_LEN; break; |
987 |
case 5: sortby = GPGME_ATTR_VALIDITY; break; |
case 5: sortby = KEY_SORT_VALIDITY; break; |
988 |
case 6: sortby = GPGME_ATTR_OTRUST; break; |
case 6: sortby = KEY_SORT_OTRUST; break; |
989 |
case 7: sortby = GPGME_ATTR_CREATED; break; |
case 7: sortby = KEY_SORT_CREATED; break; |
990 |
case 8: sortby = GPGME_ATTR_ALGO; break; |
case 8: sortby = KEY_SORT_ALGO; break; |
991 |
default: return TRUE; //sortby = GPGME_ATTR_USERID; break; |
default: return TRUE; //sortby = KEY_SORT_USERID; break; |
992 |
} |
} |
993 |
|
|
994 |
if ((kmi->keylist_sortby & ~KEYLIST_SORT_DESC) == sortby) |
if ((kmi->keylist_sortby & ~KEYLIST_SORT_DESC) == sortby) |
1023 |
menu_gpg_readonly (dlg, (HMENU)lparam, LOWORD (wparam)); |
menu_gpg_readonly (dlg, (HMENU)lparam, LOWORD (wparam)); |
1024 |
break; |
break; |
1025 |
|
|
1026 |
|
case WM_INITMENUPOPUP: |
1027 |
|
if ((UINT)LOWORD (lparam) == 3) { |
1028 |
|
HMENU hm = (HMENU)wparam; |
1029 |
|
set_menu_text_bypos (hm, 0, _("New")); |
1030 |
|
} |
1031 |
|
return FALSE; |
1032 |
|
|
1033 |
case WM_COMMAND: |
case WM_COMMAND: |
1034 |
if( gnupg_access_keyring( 1 ) ) { |
if( gnupg_access_keyring( 1 ) ) { |
1035 |
msg_box( dlg, _("Could not access public keyring"), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Could not access public keyring"), _("Key Manager"), MB_ERR ); |
1042 |
return TRUE; |
return TRUE; |
1043 |
|
|
1044 |
case ID_KEYMISC_MAIL: |
case ID_KEYMISC_MAIL: |
1045 |
|
/* XXX |
1046 |
DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_MAIL, GetDesktopWindow (), |
DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_MAIL, GetDesktopWindow (), |
1047 |
winpt_mail_proc, NULL); |
winpt_mail_proc, NULL);*/ |
1048 |
break; |
break; |
1049 |
|
|
1050 |
|
case ID_KEYMISC_FIND: |
1051 |
|
km_find_key (dlg, kmi->lv); |
1052 |
|
break; |
1053 |
|
|
1054 |
case ID_KEYMISC_DELETE: |
case ID_KEYMISC_DELETE: |
1055 |
if (km_delete_keys (kmi->lv, dlg)) |
km_delete_keys (kmi->lv, dlg); |
|
return FALSE; |
|
|
refresh_keys = 1; |
|
1056 |
return TRUE; |
return TRUE; |
1057 |
|
|
1058 |
case ID_KEYMISC_SIGN: |
case ID_KEYMISC_SIGN: |
|
gpgme_key_t key; |
|
|
|
|
1059 |
if ( (idx = listview_get_curr_pos( kmi->lv )) == -1 ) { |
if ( (idx = listview_get_curr_pos( kmi->lv )) == -1 ) { |
1060 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), |
msg_box( dlg, _("Please select a key."), _("Key Manager"), |
1061 |
MB_ERR ); |
MB_ERR ); |
1062 |
return FALSE; |
return TRUE;; |
1063 |
} |
} |
1064 |
if( !km_check_key_status( kmi->lv, idx ) ) |
if (km_check_key_status (kmi->lv, idx)) |
1065 |
return FALSE; |
return TRUE; |
1066 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid ); |
key = (gpgme_key_t)listview_get_item2 (kmi->lv, idx); |
1067 |
listview_get_item_text( kmi->lv, idx, 2, type, sizeof type -1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1068 |
rc = get_pubkey( keyid, &key ); |
memset (&k, 0, sizeof (k)); |
1069 |
if( rc ) |
k.ctx = key; |
1070 |
BUG( dlg ); |
k.keyid = keyid; |
1071 |
if( key ) |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIGN, dlg, |
1072 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYSIGN, dlg, |
keysign_dlg_proc, (LPARAM)&k, |
1073 |
keysign_dlg_proc, (LPARAM)key, |
_("Key Signing"), IDS_WINPT_KEYSIGN); |
1074 |
_("Key Signing"), IDS_WINPT_KEYSIGN); |
if (k.update) |
1075 |
|
update_key (kmi->lv, idx, k.keyid, 0); |
1076 |
return TRUE; |
return TRUE; |
1077 |
|
|
1078 |
case ID_KEYMISC_REVCERT: |
case ID_KEYMISC_REVCERT: |
1079 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos( kmi->lv ); |
1080 |
if( idx == -1 ) { |
if( idx == -1 ) { |
1081 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1082 |
return FALSE; |
return TRUE; |
1083 |
} |
} |
1084 |
listview_get_item_text( kmi->lv, idx, 0, uid, sizeof uid -1 ); |
listview_get_item_text( kmi->lv, idx, 0, uid, sizeof uid -1 ); |
1085 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
1086 |
if ( !km_check_for_seckey( kmi->lv, idx, NULL ) ) { |
if ( !km_check_for_seckey( kmi->lv, idx, NULL ) ) { |
1087 |
msg_box( dlg, _("There is no secret key available!"), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("There is no secret key available!"), _("Key Manager"), MB_ERR ); |
1088 |
return FALSE; |
return TRUE; |
1089 |
} |
} |
1090 |
|
|
1091 |
{ |
{ |
1093 |
listview_get_item_text( kmi->lv, idx, 5, t, sizeof t -1 ); |
listview_get_item_text( kmi->lv, idx, 5, t, sizeof t -1 ); |
1094 |
if( strchr( t, 'R' ) ) { |
if( strchr( t, 'R' ) ) { |
1095 |
msg_box( dlg, _("Key already revoked!"), _("Key Manager"), MB_INFO ); |
msg_box( dlg, _("Key already revoked!"), _("Key Manager"), MB_INFO ); |
1096 |
return FALSE; |
return TRUE; |
1097 |
} |
} |
1098 |
} |
} |
1099 |
|
|
1100 |
q = km_quote_uid (uid); |
memset (&k, 0, sizeof (k)); |
1101 |
k.key_pair = 1; |
k.key_pair = 1; |
1102 |
k.keyid = keyid; |
k.keyid = keyid; |
1103 |
k.uid = q; |
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1104 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
dialog_box_param(glob_hinst, (LPCSTR)IDD_WINPT_KEYREVOKE, dlg, |
|
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYREVOKE, dlg, |
|
1105 |
key_revoke_dlg_proc, (LPARAM)&k, |
key_revoke_dlg_proc, (LPARAM)&k, |
1106 |
_("Key Revocation"), IDS_WINPT_KEYREVOKE ); |
_("Key Revocation"), IDS_WINPT_KEYREVOKE); |
|
free_if_alloc( q ); |
|
1107 |
return TRUE; |
return TRUE; |
1108 |
|
|
1109 |
case ID_KEYMISC_TRUSTPATH: |
case ID_KEYMISC_TRUSTPATH: |
1110 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos( kmi->lv ); |
1111 |
if( idx == -1 ) { |
if( idx == -1 ) { |
1112 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1113 |
return FALSE; |
return TRUE; |
1114 |
} |
} |
1115 |
listview_get_item_text( kmi->lv, idx, 0, uid, sizeof uid -1 ); |
listview_get_item_text( kmi->lv, idx, 0, uid, sizeof uid -1 ); |
1116 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid -1 ); |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid -1 ); |
1118 |
msg_box( dlg, _("It does not make any sense with a key pair!"), _("Key Manager"), MB_OK ); |
msg_box( dlg, _("It does not make any sense with a key pair!"), _("Key Manager"), MB_OK ); |
1119 |
return FALSE; |
return FALSE; |
1120 |
} |
} |
1121 |
|
memset (&k, 0, sizeof (k)); |
1122 |
k.keyid = keyid; |
k.keyid = keyid; |
1123 |
k.uid = uid; |
k.uid = uid; |
1124 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYTRUST, dlg, |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYTRUST, dlg, |
1127 |
return TRUE; |
return TRUE; |
1128 |
|
|
1129 |
case ID_KEYMISC_CHECKSIGS: |
case ID_KEYMISC_CHECKSIGS: |
1130 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1131 |
if( idx == -1 ) { |
if( idx == -1 ) { |
1132 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1133 |
return FALSE; |
return FALSE; |
1134 |
} |
} |
1135 |
listview_get_item_text( kmi->lv, idx, 0, uid, sizeof uid-1 ); |
listview_get_item_text (kmi->lv, idx, 0, uid, DIM (uid)-1); |
1136 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1137 |
|
memset (&k, 0, sizeof (k)); |
1138 |
k.keyid = keyid; |
k.keyid = keyid; |
1139 |
k.uid = uid; |
k.uid = uid; |
1140 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG, dlg, |
k.ctx = (gpgme_key_t)listview_get_item2 (kmi->lv, idx); |
1141 |
|
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYSIG, dlg, |
1142 |
keysig_dlg_proc, (LPARAM)&k, |
keysig_dlg_proc, (LPARAM)&k, |
1143 |
_("Key Signature List" ), IDS_WINPT_KEYSIG ); |
_("Key Signature List" ), IDS_WINPT_KEYSIG); |
1144 |
return TRUE; |
return TRUE; |
1145 |
|
|
1146 |
case ID_KEYMISC_PROPS: |
case ID_KEYMISC_PROPS: |
1149 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1150 |
return FALSE; |
return FALSE; |
1151 |
} |
} |
1152 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid -1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1153 |
listview_get_item_text( kmi->lv, idx, 2, type, sizeof type -1 ); |
listview_get_item_text (kmi->lv, idx, 2, type, DIM (type)-1); |
1154 |
|
memset (&k, 0, sizeof (k)); |
1155 |
k.key_pair = 0; |
k.key_pair = 0; |
1156 |
k.keyid = keyid; |
k.keyid = keyid; |
1157 |
if( !strcmp( type, "pub/sec" ) || !strcmp( type, "pub/crd" ) ) |
if( !strcmp( type, "pub/sec" ) || !strcmp( type, "pub/crd" ) ) |
1158 |
k.key_pair = 1; |
k.key_pair = 1; |
1159 |
k.callback.ctl = kmi->lv; |
k.callback.ctl = kmi->lv; |
1160 |
k.callback.idx = idx; |
k.callback.idx = idx; |
1161 |
|
k.is_v3 = km_key_is_v3 (kmi->lv, idx); |
1162 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYPROPS, dlg, |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYPROPS, dlg, |
1163 |
keyprops_dlg_proc, (LPARAM)&k, |
keyprops_dlg_proc, (LPARAM)&k, |
1164 |
_("Key Properties"), IDS_WINPT_KEYPROPS ); |
_("Key Properties"), IDS_WINPT_KEYPROPS ); |
1165 |
if (k.callback.new_val != 0) |
if (k.callback.new_val != 0) { |
|
{ |
|
1166 |
t = get_key_trust_str (k.callback.new_val); |
t = get_key_trust_str (k.callback.new_val); |
1167 |
listview_add_sub_item (kmi->lv, idx, 6, t); |
listview_add_sub_item (kmi->lv, idx, 6, t); |
1168 |
} |
} |
1188 |
c = keycache_get_ctx( 1 ); |
c = keycache_get_ctx( 1 ); |
1189 |
if( !c ) |
if( !c ) |
1190 |
BUG( dlg ); |
BUG( dlg ); |
1191 |
keylist_reload( kmi->lv, c, KEYLIST_LIST, GPGME_ATTR_USERID ); |
keylist_reload( kmi->lv, c, KEYLIST_LIST, KEY_SORT_USERID ); |
1192 |
refresh_keys = 0; |
refresh_keys = 0; |
1193 |
} |
} |
1194 |
return TRUE; |
return TRUE; |
1195 |
|
|
1196 |
case ID_KEYMISC_REBUILD: |
case ID_KEYMISC_REBUILD: |
1197 |
rcs.kr_reload = rcs.kr_update = 1; |
name=NULL; |
1198 |
rcs.tr_update = 1; |
gpg_rebuild_cache (&name); |
1199 |
DialogBoxParam( glob_hinst, (LPCSTR)IDD_WINPT_KEYCACHE, dlg, |
if (name) { |
1200 |
keycache_dlg_proc, (LPARAM)&rcs ); |
char *p = strchr (name, '\n'); |
1201 |
c = keycache_get_ctx( 1 ); |
show_msg (dlg, 2000, p? name + (p-name)+1 : name); |
1202 |
if( !c ) |
free (name); |
1203 |
BUG( dlg ); |
} |
|
keylist_reload( kmi->lv, c, KEYLIST_LIST, GPGME_ATTR_USERID ); |
|
1204 |
return TRUE; |
return TRUE; |
1205 |
|
|
1206 |
case ID_KEYMISC_NEWKEY: |
case ID_KEYMISC_NEWKEY: |
1207 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYGEN, dlg, |
memset (&genkey, 0, sizeof (genkey)); |
1208 |
keygen_dlg_proc, NULL, _("Key Generation"), |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYGEN, dlg, |
1209 |
IDS_WINPT_KEYGEN ); |
keygen_dlg_proc, (LPARAM)&genkey, _("Key Generation"), |
1210 |
if( keycache_get_reload( ) ) |
IDS_WINPT_KEYGEN); |
1211 |
send_cmd_id( dlg, ID_KEYMISC_RECACHE ); |
if (genkey.newkey != NULL) |
1212 |
|
keylist_add_key (kmi->lv, KEYLIST_LIST, genkey.newkey); |
1213 |
return TRUE; |
return TRUE; |
1214 |
|
|
1215 |
case ID_KEYMISC_CARDNEW: |
case ID_KEYMISC_CARDNEW: |
1216 |
if( !scard_support ) { |
if( !scard_support ) { |
1217 |
msg_box( dlg, _("Smart Card support is not available."), _("Key Manager"), MB_INFO ); |
msg_box( dlg, _("Smart Card support is not available."), _("Key Manager"), MB_INFO ); |
1218 |
return FALSE; |
return TRUE; |
1219 |
} |
} |
1220 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_CARD_KEYGEN, dlg, |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_CARD_KEYGEN, dlg, |
1221 |
card_keygen_dlg_proc, NULL, _("Card Key Generation"), |
card_keygen_dlg_proc, NULL, _("Card Key Generation"), |
1222 |
IDS_WINPT_CARD_KEYGEN ); |
IDS_WINPT_CARD_KEYGEN ); |
1223 |
|
/* XXX: use new code */ |
1224 |
if( keycache_get_reload() ) |
if( keycache_get_reload() ) |
1225 |
send_cmd_id( dlg, ID_KEYMISC_RECACHE ); |
send_cmd_id( dlg, ID_KEYMISC_RECACHE ); |
1226 |
return TRUE; |
return TRUE; |
1227 |
|
|
1228 |
case ID_KEYMISC_KEYWIZARD: |
case ID_KEYMISC_KEYWIZARD: |
1229 |
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_KEYWIZARD, dlg, |
memset (&genkey, 0, sizeof (genkey)); |
1230 |
keygen_wizard_dlg_proc, NULL, _("Key Generation Wizard"), |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYWIZARD, dlg, |
1231 |
IDS_WINPT_KEYWIZARD ); |
keygen_wizard_dlg_proc, (LPARAM)&genkey, _("Key Generation Wizard"), |
1232 |
if( keycache_get_reload() ) |
IDS_WINPT_KEYWIZARD); |
1233 |
send_cmd_id( dlg, ID_KEYMISC_RECACHE ); |
if (genkey.newkey != NULL) |
1234 |
|
keylist_add_key (kmi->lv, KEYLIST_LIST, genkey.newkey); |
1235 |
return TRUE; |
return TRUE; |
1236 |
|
|
1237 |
case ID_KEYMISC_SENDRECV: |
case ID_KEYMISC_SENDRECV: |
1253 |
return TRUE; |
return TRUE; |
1254 |
|
|
1255 |
case ID_KEYMISC_IMPORT: |
case ID_KEYMISC_IMPORT: |
1256 |
t = get_filename_dlg( dlg, FILE_OPEN, _("Choose Name of the Key File"), NULL, NULL ); |
t = get_filename_dlg (dlg, FILE_OPEN, _("Choose Name of the Key File"), NULL, NULL); |
1257 |
if( t ) |
if (t) |
1258 |
km_file_import( dlg, t ); |
km_file_import (dlg, t); |
1259 |
return TRUE; |
return TRUE; |
1260 |
|
|
1261 |
case ID_KEYMISC_IMPORT_HTTP: |
case ID_KEYMISC_IMPORT_HTTP: |
1262 |
http = (struct http_file_s *)get_http_file_dlg (dlg); |
url = (struct URL_ctx_s*)get_http_file_dlg (dlg); |
1263 |
if (http->cancel == 0) |
if (url->cancel == 0) |
1264 |
km_http_import (dlg, http->url); |
km_http_import (dlg, url->url); |
1265 |
delete http; |
delete url; url=NULL; |
1266 |
break; |
break; |
1267 |
|
|
1268 |
case ID_KEYMISC_EXPORT: |
case ID_KEYMISC_EXPORT: |
1269 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1270 |
if( idx == -1 ) { |
if (idx == -1) { |
1271 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1272 |
return FALSE; |
return TRUE; |
1273 |
} |
} |
1274 |
if( listview_count_items( kmi->lv, 1 ) > 1 ) |
if (listview_count_items (kmi->lv, 1) > 1) |
1275 |
strcpy( keyid, _("Exported_GPG_Keys.asc") ); |
name = m_strdup ("Exported_GPG_Keys.asc"); |
1276 |
else { |
else { |
1277 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1278 |
strcat( keyid, ".asc" ); |
name = gen_export_filename (keyid, 0); |
1279 |
} |
} |
1280 |
t = get_filename_dlg( dlg, FILE_SAVE, _("Choose Name for Key File"), NULL, keyid ); |
t = get_filename_dlg (dlg, FILE_SAVE, _("Choose Name for Key File"), NULL, name); |
1281 |
if( !t || overwrite_file( t ) == 0 ) |
free_if_alloc (name); |
1282 |
return FALSE; |
if (t == NULL) |
1283 |
km_file_export( dlg, kmi->lv, t ); |
return TRUE; |
1284 |
|
km_file_export (dlg, kmi->lv, t); |
1285 |
return TRUE; |
return TRUE; |
1286 |
|
|
1287 |
case ID_KEYMISC_EXPORT_PRIVKEY: |
case ID_KEYMISC_EXPORT_PRIVKEY: |
1288 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos( kmi->lv ); |
1289 |
if( idx == -1 ) { |
if( idx == -1 ) { |
1290 |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("Please select a key."), _("Key Manager"), MB_ERR ); |
1291 |
return FALSE; |
return TRUE; |
1292 |
} |
} |
1293 |
if( !km_check_for_seckey( kmi->lv, idx, NULL ) ) { |
if( !km_check_for_seckey( kmi->lv, idx, NULL ) ) { |
1294 |
msg_box( dlg, _("There is no corresponding secret key for this key."), |
msg_box( dlg, _("There is no corresponding secret key for this key."), |
1295 |
_("Key Manager"), MB_ERR ); |
_("Key Manager"), MB_ERR ); |
1296 |
return FALSE; |
return TRUE; |
1297 |
} |
} |
1298 |
if( listview_count_items( kmi->lv, 1 ) > 1 ) { |
if( listview_count_items( kmi->lv, 1 ) > 1 ) { |
1299 |
msg_box( dlg, _("You can only export one secret key."), _("Key Manager"), MB_ERR ); |
msg_box( dlg, _("You can only export one secret key."), _("Key Manager"), MB_ERR ); |
1300 |
return FALSE; |
return TRUE; |
1301 |
} |
} |
1302 |
idx = msg_box( dlg, |
idx = msg_box( dlg, |
1303 |
_("This operation will export your *SECRET* key!\n\n" |
_("This operation will export your *SECRET* key!\n\n" |
1309 |
if( idx == IDYES ) { |
if( idx == IDYES ) { |
1310 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos( kmi->lv ); |
1311 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof (keyid)-8 ); |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof (keyid)-8 ); |
1312 |
strcat( keyid, ".sec.asc" ); |
name = gen_export_filename (keyid, 1); |
1313 |
t = get_filename_dlg( dlg, 1, _("Choose Name for Key File"), NULL, keyid ); |
t = get_filename_dlg (dlg, FILE_SAVE, _("Choose Name for Key File"), NULL, name); |
1314 |
if( t && !file_exist_check( t ) ) { |
if (t != NULL) |
1315 |
idx = log_box( _("Key Manager"), MB_INFO|MB_YESNO, |
km_privkey_export (dlg, kmi->lv, t); |
|
_("File %s already exists.\nOverwrite?"), t ); |
|
|
if( idx == IDNO ) |
|
|
return FALSE; |
|
|
} |
|
|
if( t ) |
|
|
km_privkey_export( dlg, kmi->lv, t ); |
|
1316 |
} |
} |
1317 |
break; |
break; |
1318 |
|
|
1334 |
|
|
1335 |
case ID_KEYMISC_EDITKEY: |
case ID_KEYMISC_EDITKEY: |
1336 |
idx = listview_get_curr_pos (kmi->lv); |
idx = listview_get_curr_pos (kmi->lv); |
1337 |
if( idx == -1 ) |
if (idx == -1) |
1338 |
break; |
break; |
1339 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, sizeof (keyid)-1); |
1340 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
/* XXX: pub/crd = secret key does not work */ |
1341 |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
memset (&k, 0, sizeof (k)); |
1342 |
|
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1343 |
|
k.key_pair = km_check_for_seckey (kmi->lv, idx, NULL); |
1344 |
k.keyid = keyid; |
k.keyid = keyid; |
1345 |
k.flags = km_get_key_status( kmi->lv, idx ); |
k.is_v3 = km_key_is_v3 (kmi->lv, idx); |
1346 |
dialog_box_param( glob_hinst, (LPCTSTR)IDD_WINPT_KEYEDIT, dlg, |
k.flags = km_get_key_status (kmi->lv, idx); |
1347 |
|
dialog_box_param (glob_hinst, (LPCTSTR)IDD_WINPT_KEYEDIT, dlg, |
1348 |
keyedit_main_dlg_proc, (LPARAM)&k, |
keyedit_main_dlg_proc, (LPARAM)&k, |
1349 |
_("Key Edit"), IDS_KEYCTX_EDIT ); |
_("Key Edit"), IDS_KEYCTX_EDIT); |
1350 |
|
if (k.update) |
1351 |
|
update_key (kmi->lv, idx, keyid, 1); |
1352 |
break; |
break; |
1353 |
|
|
|
case ID_GROUP_NEW: |
|
|
memset( &gcb, 0, sizeof gcb ); |
|
|
gcb.gc = gc; |
|
|
dialog_box_param( glob_hinst, (LPCSTR)IDD_WINPT_GROUP, glob_hwnd, |
|
|
group_manager_dlg_proc, (LPARAM)&gcb, _("New Group"), |
|
|
IDS_WINPT_GROUP ); |
|
|
if( gcb.use_name ) |
|
|
treeview_add_item( GetDlgItem(dlg, IDC_KEYMISC_GROUP), NULL, gcb.name ); |
|
|
return TRUE; |
|
|
|
|
1354 |
case ID_KEYMISC_COPY: |
case ID_KEYMISC_COPY: |
1355 |
km_index = listview_get_curr_pos( kmi->lv ); |
km_index = listview_get_curr_pos (kmi->lv); |
1356 |
km_clip_export( dlg, kmi->lv ); |
km_clip_export (dlg, kmi->lv); |
1357 |
break; |
break; |
1358 |
|
|
1359 |
case ID_KEYMISC_SELALL: |
case ID_KEYMISC_SELALL: |
1366 |
break; |
break; |
1367 |
|
|
1368 |
case ID_KEYCTX_SETPREFKS: |
case ID_KEYCTX_SETPREFKS: |
1369 |
/* XXX: todo */ |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM(keyid)-1); |
1370 |
|
memset (&k, 0, sizeof (k)); |
1371 |
|
k.keyid = keyid; |
1372 |
|
keyedit_set_pref_keyserver (&k, dlg); |
1373 |
break; |
break; |
1374 |
|
|
1375 |
case ID_KEYMISC_REFRESH_KEYS: |
case ID_KEYMISC_REFRESH_KEYS: |
1376 |
if (listview_count_items (kmi->lv, 1) == 0) |
if (listview_count_items (kmi->lv, 1) == 0) { |
|
{ |
|
1377 |
msg_box (dlg, _("No key was selected, select all by default."), _("Key Manager"), MB_INFO); |
msg_box (dlg, _("No key was selected, select all by default."), _("Key Manager"), MB_INFO); |
1378 |
listview_select_all (kmi->lv); |
listview_select_all (kmi->lv); |
1379 |
} |
} |
1406 |
break; |
break; |
1407 |
|
|
1408 |
case ID_KEYCTX_SENDMAIL: |
case ID_KEYCTX_SENDMAIL: |
1409 |
km_send_to_mail_recipient( kmi->lv, dlg ); |
km_send_to_mail_recipient (kmi->lv, dlg); |
1410 |
break; |
break; |
1411 |
|
|
1412 |
case ID_KEYCTX_KS_DEFAULT: |
case ID_KEYCTX_KS_DEFAULT: |
1415 |
break; |
break; |
1416 |
|
|
1417 |
case ID_KEYCTX_ADDKEY: |
case ID_KEYCTX_ADDKEY: |
1418 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1419 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid - 1 ); |
listview_get_item_text( kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1420 |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
memset (&k, 0, sizeof (k)); |
1421 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
k.key_pair = km_check_for_seckey (kmi->lv, idx, NULL); |
1422 |
|
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1423 |
k.keyid = keyid; |
k.keyid = keyid; |
1424 |
keyedit_add_subkey( &k, dlg, NULL ); |
keyedit_add_subkey (&k, dlg, NULL); |
1425 |
|
if (k.update) |
1426 |
|
update_key (kmi->lv, idx, keyid, 1); |
1427 |
break; |
break; |
1428 |
|
|
1429 |
case ID_KEYCTX_ADDUID: |
case ID_KEYCTX_ADDUID: |
1430 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1431 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text( kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1432 |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
memset (&k, 0, sizeof (k)); |
1433 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
k.key_pair = km_check_for_seckey (kmi->lv, idx, NULL); |
1434 |
|
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1435 |
k.keyid = keyid; |
k.keyid = keyid; |
1436 |
keyedit_add_userid( &k, dlg, NULL ); |
keyedit_add_userid (&k, dlg, NULL); |
1437 |
|
if (k.update) |
1438 |
|
update_key (kmi->lv, idx, keyid, 1); |
1439 |
break; |
break; |
1440 |
|
|
1441 |
case ID_KEYCTX_ADDREV: |
case ID_KEYCTX_ADDREV: |
1442 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1443 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1444 |
|
memset (&k, 0, sizeof (k)); |
1445 |
k.keyid = keyid; |
k.keyid = keyid; |
1446 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1447 |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
1448 |
keyedit_add_revoker( &k, dlg ); |
keyedit_add_revoker (&k, dlg); |
1449 |
|
if (k.update) |
1450 |
|
update_key (kmi->lv, idx, keyid, 1); |
1451 |
break; |
break; |
1452 |
|
|
1453 |
case ID_KEYCTX_ADDPHOTO: |
case ID_KEYCTX_ADDPHOTO: |
1454 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos (kmi->lv); |
1455 |
listview_get_item_text( kmi->lv, idx, 1, keyid, sizeof keyid-1 ); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1456 |
|
memset (&k, 0, sizeof (k)); |
1457 |
k.keyid = keyid; |
k.keyid = keyid; |
1458 |
k.is_protected = km_check_if_protected( kmi->lv, idx ); |
k.is_protected = km_check_if_protected (kmi->lv, idx); |
1459 |
k.key_pair = km_check_for_seckey( kmi->lv, idx, NULL ); |
k.key_pair = km_check_for_seckey (kmi->lv, idx, NULL); |
1460 |
keyedit_add_photo( &k, dlg ); |
keyedit_add_photo (&k, dlg); |
1461 |
|
if (k.update) |
1462 |
|
update_key (kmi->lv, idx, keyid, 1); |
1463 |
break; |
break; |
1464 |
|
|
1465 |
case ID_KEYCTX_KS_NL: |
case ID_KEYCTX_KS_NL: |
1494 |
|
|
1495 |
case ID_KEYCTX_FPR_COPY: |
case ID_KEYCTX_FPR_COPY: |
1496 |
idx = listview_get_curr_pos( kmi->lv ); |
idx = listview_get_curr_pos( kmi->lv ); |
1497 |
listview_get_item_text( kmi->lv, idx, 1, uid, sizeof uid-1 ); |
key = (gpgme_key_t) listview_get_item2 (kmi->lv, idx); |
1498 |
get_pubkey( uid, &pk ); |
if (key) { |
1499 |
if( pk ) { |
const char * s = get_key_fpr (key); |
1500 |
const char * s = get_key_fpr( pk ); |
set_clip_text (NULL, s? s : "", s? strlen (s): 0); |
|
set_clip_text( NULL, s? s : "", s? strlen( s ): 0 ); |
|
1501 |
} |
} |
1502 |
break; |
break; |
1503 |
|
|
1533 |
|
|
1534 |
case ID_KEYCTX_MAXTRUST: |
case ID_KEYCTX_MAXTRUST: |
1535 |
idx = listview_get_curr_pos (kmi->lv); |
idx = listview_get_curr_pos (kmi->lv); |
1536 |
km_set_implicit_trust (dlg, kmi->lv, idx); |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
1537 |
|
rc = km_set_implicit_trust (dlg, kmi->lv, idx); |
1538 |
|
if (!rc) |
1539 |
|
update_key (kmi->lv, idx, keyid, 0); |
1540 |
break; |
break; |
1541 |
|
|
1542 |
case ID_KEYCTX_SETDEFKEY: |
case ID_KEYCTX_SETDEFKEY: |
1543 |
idx = listview_get_curr_pos (kmi->lv); |
idx = listview_get_curr_pos (kmi->lv); |
1544 |
if (km_check_key_status (kmi->lv, idx)) |
if (!km_check_key_status (kmi->lv, idx)) { |
1545 |
{ |
listview_get_item_text (kmi->lv, idx, 1, keyid, DIM (keyid)-1); |
|
listview_get_item_text (kmi->lv, idx, 1, keyid, sizeof keyid -1); |
|
1546 |
rc = set_gnupg_default_key (keyid); |
rc = set_gnupg_default_key (keyid); |
1547 |
if (rc) |
if (rc) |
1548 |
msg_box( dlg, winpt_strerror (rc), _("Key Manager"), MB_ERR); |
msg_box( dlg, winpt_strerror (rc), _("Key Manager"), MB_ERR); |
1549 |
km_update_default_key_str (kmi->statbar, &km_def_pos); |
km_update_default_key_str (kmi->statbar); |
1550 |
} |
} |
1551 |
break; |
break; |
1552 |
|
|
1553 |
|
#if 0 /* XXX */ |
1554 |
|
case ID_GROUP_NEW: |
1555 |
|
memset (&gcb, 0, sizeof (gcb)); |
1556 |
|
gcb.gc = gc; |
1557 |
|
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_GROUP, glob_hwnd, |
1558 |
|
group_manager_dlg_proc, (LPARAM)&gcb, _("New Group"), |
1559 |
|
IDS_WINPT_GROUP); |
1560 |
|
if( gcb.use_name ) |
1561 |
|
treeview_add_item( GetDlgItem(dlg, IDC_KEYMISC_GROUP), NULL, gcb.name ); |
1562 |
|
return TRUE; |
1563 |
|
|
1564 |
case ID_GROUP_PASTE: |
case ID_GROUP_PASTE: |
1565 |
km_groups_add (gc, kmi->lv, km_index); |
km_groups_add (gc, kmi->lv, km_index); |
1568 |
case ID_GROUP_DELETE: |
case ID_GROUP_DELETE: |
1569 |
km_groups_del (gc); |
km_groups_del (gc); |
1570 |
break; |
break; |
1571 |
} |
#endif |
1572 |
|
} |
1573 |
|
|
1574 |
break; |
break; |
1575 |
} |
} |
1576 |
|
|
1577 |
return FALSE; |
return FALSE; |
1578 |
} /* keymanager_dlg_proc */ |
} |
1579 |
|
|
1580 |
|
|
1581 |
|
|