36 |
#include "wptW32API.h" |
#include "wptW32API.h" |
37 |
|
|
38 |
|
|
39 |
|
/* Symbolic column IDs */ |
40 |
|
enum { |
41 |
|
VER_COL_NAME = 0, |
42 |
|
VER_COL_STAT = 1, |
43 |
|
VER_COL_SIGNED = 2, |
44 |
|
VER_COL_TRUST = 3, |
45 |
|
VER_COL_KEYID = 4, |
46 |
|
VER_COL_UID = 5 |
47 |
|
}; |
48 |
|
|
49 |
|
|
50 |
/* Extract the file name part out of the given path in @path. |
/* Extract the file name part out of the given path in @path. |
51 |
Return value: file part or NULL on error. */ |
Return value: file part or NULL on error. */ |
52 |
static char* |
static char* |
101 |
Return value: 0 on success. */ |
Return value: 0 on success. */ |
102 |
int |
int |
103 |
verlist_build (listview_ctrl_t *lv, HWND ctrl, int fm_mode) |
verlist_build (listview_ctrl_t *lv, HWND ctrl, int fm_mode) |
104 |
{ |
{ |
105 |
int j, rc = 0; |
struct listview_ctrl_s *c; |
106 |
struct listview_ctrl_s * c; |
struct listview_column_s verlist[] = { |
107 |
struct listview_column_s fm_verlist[] = { |
{0, 100, (char *)_("Name")}, |
108 |
{0, 100, (char *)_("Name") }, |
{1, 140, (char *)_("Status") }, |
109 |
{1, 120, (char *)_("Status") }, |
{2, 120, (char *)_("Signed") }, |
110 |
{2, 115, (char *)_("Signed") }, |
{3, 58, (char *)_("Trust") }, |
111 |
{3, 58, (char *)_("Trust") }, |
{4, 80, (char *)_("Key ID" )}, |
112 |
{4, 160, (char *)_("User ID") }, |
{5, 160, (char *)_("User ID") }, |
113 |
{5, 0, NULL} |
{6, 0, NULL} |
|
|
|
|
}; |
|
|
struct listview_column_s verlist[] = { |
|
|
{0, 140, (char *)_("Status") }, |
|
|
{1, 120, (char *)_("Signed") }, |
|
|
{2, 58, (char *)_("Trust") }, |
|
|
{3, 80, (char *)_("Key ID" )}, |
|
|
{4, 160, (char *)_("User ID") }, |
|
|
{5, 0, NULL} |
|
114 |
}; |
}; |
115 |
|
int j; |
116 |
|
int rc; |
117 |
|
|
118 |
rc = listview_new (&c); |
rc = listview_new (&c); |
119 |
if (rc) |
if (rc) |
120 |
return rc; |
return rc; |
|
|
|
121 |
c->ctrl = ctrl; |
c->ctrl = ctrl; |
122 |
if( fm_mode ) { |
|
123 |
for( j = 0; fm_verlist[j].fieldname; j++ ) |
for(j=0; verlist[j].fieldname; j++) |
124 |
listview_add_column( c, &fm_verlist[j] ); |
listview_add_column (c, &verlist[j]); |
125 |
} |
if (!fm_mode) |
126 |
else { |
listview_set_column_width (c, 0, 60); |
127 |
for( j = 0; verlist[j].fieldname; j++ ) |
listview_set_ext_style (c); |
|
listview_add_column( c, &verlist[ j ] ); |
|
|
} |
|
|
listview_set_ext_style( c ); |
|
128 |
*lv = c; |
*lv = c; |
129 |
return 0; |
return 0; |
130 |
} |
} |
153 |
|
|
154 |
if (listview_add_item (lv, " ")) |
if (listview_add_item (lv, " ")) |
155 |
return WPTERR_GENERAL; |
return WPTERR_GENERAL; |
156 |
|
|
157 |
|
listview_add_sub_item (lv, 0, VER_COL_NAME, "Clipboard"); |
158 |
|
|
159 |
get_pubkey (sig->fpr, &key); |
get_pubkey (sig->fpr, &key); |
|
|
|
160 |
if (sig->summary == 0 && gpg_err_code (sig->status) == GPG_ERR_NO_ERROR) |
if (sig->summary == 0 && gpg_err_code (sig->status) == GPG_ERR_NO_ERROR) |
161 |
attr = get_gpg_sigstat (GPGME_SIGSUM_GREEN); |
attr = get_gpg_sigstat (GPGME_SIGSUM_GREEN); |
162 |
else |
else |
163 |
attr = get_gpg_sigstat (sig->summary); |
attr = get_gpg_sigstat (sig->summary); |
164 |
if (attr) |
if (attr) |
165 |
listview_add_sub_item (lv, 0, 0, (char *)attr); |
listview_add_sub_item (lv, 0, VER_COL_STAT, (char *)attr); |
166 |
|
|
167 |
attr = strtimestamp (sig->timestamp); |
attr = strtimestamp (sig->timestamp); |
168 |
listview_add_sub_item (lv, 0, 1, (char *)attr); |
listview_add_sub_item (lv, 0, VER_COL_SIGNED, (char *)attr); |
169 |
|
|
170 |
attr = _("Unknown"); |
attr = _("Unknown"); |
171 |
if (key) { |
if (key) { |
172 |
key_attr = key->uids->validity; |
key_attr = key->uids->validity; |
173 |
attr = get_key_trust2 (NULL, key_attr, 0, 0); |
attr = get_key_trust2 (NULL, key_attr, 0, 0); |
174 |
} |
} |
175 |
listview_add_sub_item (lv, 0, 2, (char *)attr); |
listview_add_sub_item (lv, 0, VER_COL_TRUST, (char *)attr); |
176 |
|
|
177 |
attr = sig->fpr; |
attr = sig->fpr; |
178 |
if (!attr || strlen (attr) < 8) |
if (!attr || strlen (attr) < 8) |
179 |
listview_add_sub_item (lv, 0, 3, "????????"); |
listview_add_sub_item (lv, 0, VER_COL_KEYID, "????????"); |
180 |
else { |
else { |
181 |
if (strlen (attr) == 40) |
if (strlen (attr) == 40) |
182 |
attr += 32; |
attr += 32; |
185 |
else |
else |
186 |
attr += 8; |
attr += 8; |
187 |
_snprintf (keyid, sizeof keyid -1, "0x%s", attr); |
_snprintf (keyid, sizeof keyid -1, "0x%s", attr); |
188 |
listview_add_sub_item (lv, 0, 3, keyid); |
listview_add_sub_item (lv, 0, VER_COL_KEYID, keyid); |
189 |
} |
} |
190 |
|
|
191 |
if (!key) { |
if (!key) |
192 |
attr = _("Invalid User ID"); |
attr = _("user ID not found"); |
193 |
listview_add_sub_item( lv, 0, 4, (char *)attr ); |
else |
|
} |
|
|
else { |
|
194 |
attr = key->uids->name; |
attr = key->uids->name; |
195 |
uid = utf8_to_native (attr); |
|
196 |
if (uid) { |
uid = utf8_to_native (attr); |
197 |
listview_add_sub_item( lv, 0, 4, (char *)uid ); |
listview_add_sub_item (lv, 0, VER_COL_UID, (char *)uid); |
198 |
free (uid); |
free (uid); |
|
} |
|
|
} |
|
199 |
|
|
200 |
return 0; |
return 0; |
201 |
} |
} |
210 |
gpgme_key_t key = NULL; |
gpgme_key_t key = NULL; |
211 |
const char *attr; |
const char *attr; |
212 |
char t[64], *name; |
char t[64], *name; |
213 |
|
int off = 0; |
214 |
|
|
215 |
if (listview_add_item (lv, "")) { |
if (listview_add_item (lv, "")) { |
216 |
log_debug ("verlist_add_sig_log: listview_add_item() failed.\n"); |
log_debug ("verlist_add_sig_log: listview_add_item() failed.\n"); |
221 |
|
|
222 |
name = extract_filename (log->file); |
name = extract_filename (log->file); |
223 |
if (name) |
if (name) |
224 |
listview_add_sub_item (lv, 0, 0, name); |
listview_add_sub_item (lv, 0, VER_COL_NAME, name); |
225 |
else |
else |
226 |
listview_add_sub_item (lv, 0, 0, log->file); |
listview_add_sub_item (lv, 0, VER_COL_NAME, log->file); |
227 |
free_if_alloc (name); |
free_if_alloc (name); |
228 |
|
|
229 |
if (sig->summary == 0 && gpg_err_code (sig->status) == GPG_ERR_NO_ERROR) |
if (sig->summary == 0 && gpg_err_code (sig->status) == GPG_ERR_NO_ERROR) |
231 |
else |
else |
232 |
attr = get_gpg_sigstat (sig->summary); |
attr = get_gpg_sigstat (sig->summary); |
233 |
if (attr) |
if (attr) |
234 |
listview_add_sub_item (lv, 0, 1, attr); |
listview_add_sub_item (lv, 0, VER_COL_STAT, attr); |
235 |
|
|
236 |
if (sig->timestamp > 0) { |
if (sig->timestamp > 0) |
237 |
attr = strtimestamp (sig->timestamp); |
attr = strtimestamp (sig->timestamp); |
|
listview_add_sub_item (lv, 0, 2, attr); |
|
|
} |
|
238 |
else |
else |
239 |
listview_add_sub_item (lv, 0, 2, "No time"); |
attr = "No time"; |
240 |
|
listview_add_sub_item (lv, 0, VER_COL_SIGNED, attr); |
241 |
attr = _("Unknown"); |
|
242 |
if (key) |
if (key) |
243 |
attr = get_key_trust2 (NULL, key->uids->validity, 0, 0); |
attr = get_key_trust2 (NULL, key->uids->validity, 0, 0); |
244 |
listview_add_sub_item (lv, 0, 3, attr); |
else |
245 |
|
attr = _("Unknown"); |
246 |
|
listview_add_sub_item (lv, 0, VER_COL_TRUST, attr); |
247 |
|
|
248 |
attr = sig->fpr; |
if (strlen (sig->fpr) == 16) |
249 |
if (!log->use_uid && strlen (attr) == 40) { |
off = 8; |
250 |
_snprintf (t, sizeof (t)-1, "0x%s", attr + 32); |
else |
251 |
listview_add_sub_item (lv, 0, 4, t); |
off = strlen (sig->fpr) == 40? 32 : 24; |
252 |
} |
_snprintf (t, sizeof (t)-1, "0x%s", sig->fpr + off); |
253 |
else if (!log->use_uid && strlen( attr ) == 32) { |
listview_add_sub_item (lv, 0, VER_COL_KEYID, t); |
254 |
_snprintf (t, sizeof (t)-1, "0x%s", attr + 24); |
|
255 |
listview_add_sub_item (lv, 0, 4, t); |
if (log->user_id) |
256 |
} |
name = utf8_to_native (log->user_id); |
257 |
else if (log->user_id) { |
else |
258 |
char *p = utf8_to_native (log->user_id); |
name = strdup (_("user ID not found")); |
259 |
if (p) { |
|
260 |
listview_add_sub_item (lv, 0, 4, p); |
listview_add_sub_item (lv, 0, VER_COL_UID, name); |
261 |
free (p); |
free (name); |
|
} |
|
|
} |
|
262 |
return 0; |
return 0; |
263 |
} |
} |