113 |
UID_COL_CREATION = 3 |
UID_COL_CREATION = 3 |
114 |
}; |
}; |
115 |
|
|
116 |
struct keyedit_callback_s { |
/* Key edit callback context. */ |
117 |
|
struct keyedit_cb_s { |
118 |
const char *keyid; |
const char *keyid; |
119 |
const char *pass; |
const char *pass; |
120 |
listview_ctrl_t lv; |
listview_ctrl_t lv; |
121 |
void *opaque; |
void *opaque; |
122 |
unsigned int finished:1; |
unsigned int finished:1; |
123 |
|
unsigned int is_protected:1; |
124 |
}; |
}; |
125 |
typedef struct keyedit_callback_s KEYEDIT_CB; |
typedef struct keyedit_cb_s *keyedit_cb_t; |
126 |
|
|
127 |
struct keygen_callback_s { |
|
128 |
|
/* Key generation callback context. */ |
129 |
|
struct keygen_cb_s { |
130 |
int bits; |
int bits; |
131 |
int algo; |
int algo; |
132 |
u32 expire; |
u32 expire; |
133 |
char *fpr; |
char *fpr; |
134 |
}; |
}; |
135 |
typedef struct keygen_callback_s KEYGEN_CB; |
typedef struct keygen_cb_s *keygen_cb_t; |
136 |
|
|
137 |
|
|
138 |
static subclass_s keyedit_subkey_proc; |
static subclass_s keyedit_subkey_proc; |
212 |
|
|
213 |
|
|
214 |
static void |
static void |
215 |
do_add_new_subkey (listview_ctrl_t lv, KEYGEN_CB *keygen, unsigned int flags) |
do_add_new_subkey (listview_ctrl_t lv, keygen_cb_t keygen, unsigned int flags) |
216 |
{ |
{ |
217 |
char info[128], keyid[32]; |
char info[128], keyid[32]; |
218 |
const char * expdate, * s; |
const char * expdate, * s; |
385 |
BUG (NULL); |
BUG (NULL); |
386 |
if (k->is_protected) |
if (k->is_protected) |
387 |
ke->setPassphrase (pwd); |
ke->setPassphrase (pwd); |
388 |
|
else |
389 |
|
ke->setNoPassphrase (true); |
390 |
ec = ke->addPhotoid (file); |
ec = ke->addPhotoid (file); |
391 |
delete ke; |
delete ke; |
392 |
wipememory (pwd, sizeof (pwd)); |
wipememory (pwd, sizeof (pwd)); |
466 |
ke = new GpgKeyEdit (k->keyid); |
ke = new GpgKeyEdit (k->keyid); |
467 |
if (k->is_protected) |
if (k->is_protected) |
468 |
ke->setPassphrase (pwd); |
ke->setPassphrase (pwd); |
469 |
|
else |
470 |
|
ke->setNoPassphrase (true); |
471 |
err = ke->addDesignatedRevoker (uid); |
err = ke->addDesignatedRevoker (uid); |
472 |
delete ke; |
delete ke; |
473 |
wipememory (pwd, sizeof (pwd)); |
wipememory (pwd, sizeof (pwd)); |
497 |
BOOL CALLBACK |
BOOL CALLBACK |
498 |
keyedit_adduid_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
keyedit_adduid_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
499 |
{ |
{ |
500 |
static KEYEDIT_CB *ctx; |
static keyedit_cb_t ctx; |
501 |
gpgme_error_t err; |
gpgme_error_t err; |
502 |
GpgKeyEdit *ke; |
GpgKeyEdit *ke; |
503 |
char *utf8_name = NULL; |
char *utf8_name = NULL; |
504 |
char name[128], email[128], comment[128]; |
char name[128], email[128], comment[128]; |
505 |
int rc; |
int rc; |
506 |
|
|
507 |
switch ( msg ) { |
switch (msg) { |
508 |
case WM_INITDIALOG: |
case WM_INITDIALOG: |
509 |
ctx = (KEYEDIT_CB *)lparam; |
ctx = (keyedit_cb_t)lparam; |
510 |
if( !ctx ) |
if( !ctx ) |
511 |
dlg_fatal_error(dlg, "Could not get dialog param!"); |
dlg_fatal_error(dlg, "Could not get dialog param!"); |
512 |
SetWindowText (dlg, _("Add new User ID")); |
SetWindowText (dlg, _("Add new User ID")); |
518 |
return FALSE; |
return FALSE; |
519 |
|
|
520 |
case WM_SYSCOMMAND: |
case WM_SYSCOMMAND: |
521 |
if (LOWORD (wparam) == SC_CLOSE) { |
if (LOWORD (wparam) == SC_CLOSE) |
522 |
EndDialog(dlg, TRUE); |
EndDialog(dlg, TRUE); |
|
} |
|
523 |
return FALSE; |
return FALSE; |
524 |
|
|
525 |
case WM_COMMAND: |
case WM_COMMAND: |
553 |
ke = new GpgKeyEdit (ctx->keyid); |
ke = new GpgKeyEdit (ctx->keyid); |
554 |
if (!ke) |
if (!ke) |
555 |
BUG (NULL); |
BUG (NULL); |
556 |
if (ctx->pass) |
if (ctx->is_protected) |
557 |
ke->setPassphrase (ctx->pass); |
ke->setPassphrase (ctx->pass); |
558 |
|
else |
559 |
|
ke->setNoPassphrase (true); |
560 |
err = ke->addUserid (utf8_name? utf8_name : name, |
err = ke->addUserid (utf8_name? utf8_name : name, |
561 |
rc > 0? comment : NULL, email); |
rc > 0? comment : NULL, email); |
562 |
if (err) |
if (err) |
627 |
BOOL CALLBACK |
BOOL CALLBACK |
628 |
keyedit_addsubkey_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
keyedit_addsubkey_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
629 |
{ |
{ |
630 |
static KEYEDIT_CB *ctx; |
static keyedit_cb_t ctx; |
631 |
static KEYGEN_CB *keygen; |
static keygen_cb_t keygen; |
632 |
GpgKeyEdit *ke; |
GpgKeyEdit *ke; |
633 |
gpgme_error_t err; |
gpgme_error_t err; |
634 |
SYSTEMTIME st; |
SYSTEMTIME st; |
637 |
|
|
638 |
switch (msg) { |
switch (msg) { |
639 |
case WM_INITDIALOG: |
case WM_INITDIALOG: |
640 |
ctx = (KEYEDIT_CB *)lparam; |
ctx = (keyedit_cb_t)lparam; |
641 |
if (!ctx) |
if (!ctx) |
642 |
dlg_fatal_error (dlg, "Could not get dialog param!"); |
dlg_fatal_error (dlg, "Could not get dialog param!"); |
643 |
keygen = (KEYGEN_CB *)ctx->opaque; |
keygen = (keygen_cb_t)ctx->opaque; |
644 |
|
|
645 |
SetWindowText (dlg, _("Add new Subkey")); |
SetWindowText (dlg, _("Add new Subkey")); |
646 |
SetDlgItemText (dlg, IDC_ADDSUBKEY_INFALGO, _("Key type")); |
SetDlgItemText (dlg, IDC_ADDSUBKEY_INFALGO, _("Key type")); |
718 |
if (!ke) |
if (!ke) |
719 |
BUG (NULL); |
BUG (NULL); |
720 |
ke->setCallback (keygen_cb, NULL); |
ke->setCallback (keygen_cb, NULL); |
721 |
if (ctx->pass) |
if (ctx->is_protected) |
722 |
ke->setPassphrase (ctx->pass); |
ke->setPassphrase (ctx->pass); |
723 |
|
else |
724 |
|
ke->setNoPassphrase (true); |
725 |
keygen_cb_dlg_create (); |
keygen_cb_dlg_create (); |
726 |
|
|
727 |
err = ke->addSubkey ((gpgme_pubkey_algo_t)index, size, valid); |
err = ke->addSubkey ((gpgme_pubkey_algo_t)index, size, valid); |
754 |
BOOL |
BOOL |
755 |
keyedit_add_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
keyedit_add_userid (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
756 |
{ |
{ |
757 |
KEYEDIT_CB cb; |
keyedit_cb_s cb; |
758 |
char *pass = NULL; |
char *pass = NULL; |
759 |
int cancel = 0; |
int cancel = 0; |
760 |
|
|
770 |
} |
} |
771 |
|
|
772 |
memset (&cb, 0, sizeof cb); |
memset (&cb, 0, sizeof cb); |
773 |
cb.pass = k->is_protected? pass : NULL; |
cb.is_protected = k->is_protected; |
774 |
|
cb.pass = pass; |
775 |
cb.lv = lv; |
cb.lv = lv; |
776 |
cb.keyid = k->keyid; |
cb.keyid = k->keyid; |
777 |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDUID, |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDUID, |
813 |
BOOL |
BOOL |
814 |
keyedit_add_subkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
keyedit_add_subkey (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
815 |
{ |
{ |
816 |
KEYEDIT_CB cb; |
keyedit_cb_s cb; |
817 |
KEYGEN_CB keygen; |
keygen_cb_s keygen; |
818 |
char *pass = NULL; |
char *pass = NULL; |
819 |
int cancel = 0; |
int cancel = 0; |
820 |
|
|
832 |
memset (&cb, 0, sizeof (cb)); |
memset (&cb, 0, sizeof (cb)); |
833 |
cb.lv = lv; |
cb.lv = lv; |
834 |
cb.keyid = k->keyid; |
cb.keyid = k->keyid; |
835 |
cb.pass = k->is_protected? pass : NULL; |
cb.is_protected = k->is_protected; |
836 |
|
cb.pass = pass; |
837 |
cb.opaque = &keygen; |
cb.opaque = &keygen; |
838 |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDSUBKEY, |
dialog_box_param (glob_hinst, (LPCSTR)IDD_WINPT_KEYEDIT_ADDSUBKEY, |
839 |
dlg, keyedit_addsubkey_dlg_proc, |
dlg, keyedit_addsubkey_dlg_proc, |
873 |
BUG (NULL); |
BUG (NULL); |
874 |
if (k->is_protected) |
if (k->is_protected) |
875 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
876 |
|
else |
877 |
|
ke->setNoPassphrase (true); |
878 |
err = ke->setPreferredKeyserver (0 /* XXX */, url->url); |
err = ke->setPreferredKeyserver (0 /* XXX */, url->url); |
879 |
if (!err) |
if (!err) |
880 |
msg_box (dlg, _("Preferred keyserver successfully set."), _("Key Edit"), MB_OK); |
msg_box (dlg, _("Preferred keyserver successfully set."), _("Key Edit"), MB_OK); |
1367 |
BUG (NULL); |
BUG (NULL); |
1368 |
if (k->is_protected) |
if (k->is_protected) |
1369 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1370 |
|
else |
1371 |
|
ke->setNoPassphrase (true); |
1372 |
err = ke->setKeyExpireDate (j, w32_mktime (&udd.st), false); |
err = ke->setKeyExpireDate (j, w32_mktime (&udd.st), false); |
1373 |
if (err) |
if (err) |
1374 |
msg_box (dlg, gpgme_strerror (err), _("Expire Subkey"), MB_ERR); |
msg_box (dlg, gpgme_strerror (err), _("Expire Subkey"), MB_ERR); |
1432 |
BUG (NULL); |
BUG (NULL); |
1433 |
if (k->is_protected) |
if (k->is_protected) |
1434 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1435 |
|
else |
1436 |
|
ke->setNoPassphrase (true); |
1437 |
err = ke->revokeSubkey (j, 0, NULL); |
err = ke->revokeSubkey (j, 0, NULL); |
1438 |
if (err) |
if (err) |
1439 |
msg_box( dlg, gpgme_strerror (err), _("Revoke Subkey"), MB_ERR); |
msg_box( dlg, gpgme_strerror (err), _("Revoke Subkey"), MB_ERR); |
1504 |
BUG (NULL); |
BUG (NULL); |
1505 |
if (k->is_protected) |
if (k->is_protected) |
1506 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1507 |
|
else |
1508 |
|
ke->setNoPassphrase (true); |
1509 |
err = ke->revokeUserid (id); |
err = ke->revokeUserid (id); |
1510 |
if (err) |
if (err) |
1511 |
msg_box (dlg, gpgme_strerror (err), _("Revoke User ID"), MB_ERR); |
msg_box (dlg, gpgme_strerror (err), _("Revoke User ID"), MB_ERR); |
1547 |
BUG (NULL); |
BUG (NULL); |
1548 |
if (k->is_protected) |
if (k->is_protected) |
1549 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1550 |
|
else |
1551 |
|
ke->setNoPassphrase (true); |
1552 |
|
|
1553 |
get_userid_preflist (&prefs, &flags); |
get_userid_preflist (&prefs, &flags); |
1554 |
|
|
1555 |
rc = ke->setUseridPreferences (id, prefs); |
rc = ke->setUseridPreferences (id, prefs); |
1556 |
/* XXX */ |
if (rc) |
1557 |
|
msg_box (dlg, _("Could not set user ID preferences"), _("Key Edit"), MB_ERR); |
1558 |
|
|
1559 |
sfree_if_alloc (pass); |
sfree_if_alloc (pass); |
1560 |
free_if_alloc (prefs); |
free_if_alloc (prefs); |
1590 |
ke = new GpgKeyEdit (k->keyid); |
ke = new GpgKeyEdit (k->keyid); |
1591 |
if (k->is_protected) |
if (k->is_protected) |
1592 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1593 |
|
else |
1594 |
|
ke->setNoPassphrase (true); |
1595 |
err = ke->setPrimaryUserid (id); |
err = ke->setPrimaryUserid (id); |
1596 |
if (err) |
if (err) |
1597 |
msg_box (dlg, gpgme_strerror (err), _("Primary"), MB_ERR); |
msg_box (dlg, gpgme_strerror (err), _("Primary"), MB_ERR); |
1658 |
BOOL CALLBACK |
BOOL CALLBACK |
1659 |
showpref_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
showpref_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
1660 |
{ |
{ |
1661 |
static keyedit_callback_s *cb = NULL; |
static keyedit_cb_t cb = NULL; |
1662 |
gpg_uid_info_t inf=NULL; |
gpg_uid_info_t inf=NULL; |
1663 |
char buf[128]; |
char buf[128]; |
1664 |
int pos; |
int pos; |
1665 |
|
|
1666 |
switch (msg) { |
switch (msg) { |
1667 |
case WM_INITDIALOG: |
case WM_INITDIALOG: |
1668 |
cb = (keyedit_callback_s *)lparam; |
cb = (keyedit_cb_t)lparam; |
1669 |
if (cb == NULL) |
if (cb == NULL) |
1670 |
BUG (dlg); |
BUG (dlg); |
1671 |
pos = listview_get_curr_pos (cb->lv); |
pos = listview_get_curr_pos (cb->lv); |
1710 |
static int |
static int |
1711 |
do_editkey_showpref (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
do_editkey_showpref (winpt_key_t k, HWND dlg, listview_ctrl_t lv) |
1712 |
{ |
{ |
1713 |
struct keyedit_callback_s cb; |
struct keyedit_cb_s cb; |
1714 |
|
|
1715 |
if (k->is_v3) |
if (k->is_v3) |
1716 |
return TRUE; |
return TRUE; |
1855 |
static void |
static void |
1856 |
do_editkey_check (winpt_key_t k, HWND dlg) |
do_editkey_check (winpt_key_t k, HWND dlg) |
1857 |
{ |
{ |
1858 |
gpgme_key_t key; |
if (!k->ctx) |
1859 |
|
get_pubkey (k->keyid, &k->ctx); |
1860 |
get_pubkey (k->keyid, &key); |
if (!k->uid && k->ctx) |
1861 |
|
k->uid = k->ctx->uids->uid; |
1862 |
DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYSIG_TREE, dlg, |
DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYSIG_TREE, dlg, |
1863 |
sigtree_dlg_proc, (LPARAM)key); |
sigtree_dlg_proc, (LPARAM)k); |
1864 |
} |
} |
1865 |
|
|
1866 |
|
|
1897 |
ke = new GpgKeyEdit (k->keyid); |
ke = new GpgKeyEdit (k->keyid); |
1898 |
if (k->is_protected) |
if (k->is_protected) |
1899 |
ke->setPassphrase (pass); |
ke->setPassphrase (pass); |
1900 |
|
else |
1901 |
|
ke->setNoPassphrase (true); |
1902 |
ke->setLocalUser (get_default_key ()); |
ke->setLocalUser (get_default_key ()); |
1903 |
err = ke->signUserid (uid_index, |
err = ke->signUserid (uid_index, |
1904 |
mode == CMD_SIGN? GPG_EDITKEY_SIGN : GPG_EDITKEY_LSIGN, |
mode == CMD_SIGN? GPG_EDITKEY_SIGN : GPG_EDITKEY_LSIGN, |