18 |
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
19 |
*/ |
*/ |
20 |
|
|
|
#ifdef HAVE_CONFIG_H |
|
|
#include <config.h> |
|
|
#endif |
|
|
|
|
|
#include <windows.h> |
|
21 |
#include <windows.h> |
#include <windows.h> |
22 |
|
#include <time.h> |
23 |
|
|
24 |
#include "../resource.h" |
#include "../resource.h" |
25 |
#include "wptGPG.h" |
#include "wptGPG.h" |
145 |
gpgme_signature_t sig = NULL, s; |
gpgme_signature_t sig = NULL, s; |
146 |
gpg_keycache_t kc = NULL; |
gpg_keycache_t kc = NULL; |
147 |
gpgme_ctx_t c=NULL; |
gpgme_ctx_t c=NULL; |
|
char keyid[16+1]; |
|
148 |
const char *det_data=NULL; |
const char *det_data=NULL; |
149 |
u16 port = HKP_PORT; |
u16 port = HKP_PORT; |
150 |
int rc = 0, det_len=0; |
int rc = 0, det_len=0; |
173 |
} |
} |
174 |
|
|
175 |
if (gpgme_err_code (sig->status) == GPG_ERR_NO_PUBKEY) { |
if (gpgme_err_code (sig->status) == GPG_ERR_NO_PUBKEY) { |
176 |
const char * kserv; |
const char *keyid; |
177 |
const char *fpr = sig->fpr; |
const char *kserv; |
178 |
if (!fpr) |
if (!sig->fpr) |
179 |
fpr = "0xDEADBEEF"; |
BUG (NULL); |
180 |
if (strlen (fpr) == 40) |
if (strlen (sig->fpr) == 40) |
181 |
fpr += 32; |
keyid = sig->fpr+24; |
182 |
else |
else |
183 |
fpr += 24; |
keyid = sig->fpr+16; |
184 |
rc = log_box (_("Verify"), MB_INFO|MB_YESNO, |
rc = log_box (_("Verify"), MB_INFO|MB_YESNO, |
185 |
_("Signature made %s using %s key ID 0x%s\n" |
_("Signature made %s using %s key ID 0x%s\n" |
186 |
"Cannot check signature: public key not found\n\n" |
"Cannot check signature: public key not found\n\n" |
187 |
"Do you want to try to retrieve the key from the keyserver?"), |
"Do you want to try to retrieve the key from the keyserver?"), |
188 |
strtimestamp (sig->timestamp), |
strtimestamp (sig->timestamp), |
189 |
get_key_pubalgo (sig->pubkey_algo), fpr); |
get_key_pubalgo (sig->pubkey_algo), keyid+8); |
190 |
if (rc == IDNO) { |
if (rc == IDNO) { |
191 |
msg_box (dlg, gpg_sigstat[GPGME_SIG_STAT_NOKEY], _("Verify"), MB_WARN); |
msg_box (dlg, gpg_sigstat[GPGME_SIG_STAT_NOKEY], _("Verify"), MB_WARN); |
192 |
gpgme_release (c); |
gpgme_release (c); |
205 |
port = default_keyserver_port; |
port = default_keyserver_port; |
206 |
}*/ |
}*/ |
207 |
} |
} |
|
|
|
208 |
else { |
else { |
209 |
kserv = default_keyserver; |
kserv = default_keyserver; |
210 |
port = default_keyserver_port; |
port = default_keyserver_port; |
211 |
} |
} |
212 |
if (!hkp_recv_key (dlg, kserv, port, keyid, 0, 0)) { |
if (!hkp_recv_key (dlg, kserv, port, keyid+8, 0, 0)) { |
213 |
keycache_reload (dlg); |
keycache_reload (dlg); |
214 |
kc = keycache_get_ctx (KEYCACHE_PUB); |
kc = keycache_get_ctx (KEYCACHE_PUB); |
215 |
if (!kc) |
if (!kc) |
216 |
BUG (dlg); |
BUG (dlg); |
217 |
} |
} |
218 |
} |
} |
219 |
else if (gpgme_err_code (sig->status) == GPG_ERR_BAD_SIGNATURE && !sig->timestamp) |
else if (gpgme_err_code (sig->status) == GPG_ERR_BAD_SIGNATURE && |
220 |
|
!sig->timestamp) |
221 |
; |
; |
222 |
else if (!sig->timestamp || !sig->validity) { |
else if (!sig->timestamp || !sig->validity) { |
223 |
msg_box (dlg, _("Invalid signature state."), _("Verify"), MB_ERR); |
msg_box (dlg, _("Invalid signature state."), _("Verify"), MB_ERR); |