41 |
#include "wptDlgs.h" |
#include "wptDlgs.h" |
42 |
#include "wptUTF8.h" |
#include "wptUTF8.h" |
43 |
|
|
|
#define MAX_KEYSIZE 80000 |
|
44 |
|
|
45 |
char* get_reg_entry_keyserver (const char *); |
char* get_reg_entry_keyserver (const char *); |
46 |
int set_reg_entry_keyserver (const char *, const char *); |
int set_reg_entry_keyserver (const char *, const char *); |
170 |
{ |
{ |
171 |
gpgme_ctx_t ctx; |
gpgme_ctx_t ctx; |
172 |
gpgme_data_t keydata; |
gpgme_data_t keydata; |
173 |
gpgme_error_t ec; |
gpgme_import_result_t import_res = NULL; |
174 |
gpgme_import_result_t import_res = NULL; |
gpgme_error_t err; |
175 |
char *rawkey = NULL; |
char *rawkey = NULL; |
176 |
|
int keylen = 0; |
177 |
int rc; |
int rc; |
178 |
|
|
|
/* XXX: implement dynamic buffers. */ |
|
|
rawkey = new char[MAX_KEYSIZE]; |
|
|
if (!rawkey) |
|
|
BUG (0); |
|
|
memset (rawkey, 0, MAX_KEYSIZE); |
|
179 |
if (proto == KSPROTO_LDAP) { |
if (proto == KSPROTO_LDAP) { |
180 |
rc = ldap_recvkey (kserver, pattern, rawkey, MAX_KEYSIZE-1); |
rc = ldap_recvkey (kserver, pattern, &rawkey, &keylen); |
181 |
if (rc) { |
if (rc) { |
182 |
msg_box (dlg, _("LDAP key import failed.\n" |
msg_box (dlg, _("LDAP key import failed.\n" |
183 |
"Please make sure you have an online connection" |
"Please make sure you have an online connection" |
188 |
} |
} |
189 |
} |
} |
190 |
else if (proto == KSPROTO_FINGER) { |
else if (proto == KSPROTO_FINGER) { |
191 |
rc = finger_recvkey (kserver, pattern, rawkey, MAX_KEYSIZE-1); |
rc = finger_recvkey (kserver, pattern, &rawkey, &keylen); |
192 |
if (rc) { |
if (rc) { |
193 |
log_box (_("Keyserver"), MB_ERR, |
log_box (_("Keyserver"), MB_ERR, |
194 |
_("Finger key import failed: %s\n"), winpt_strerror (rc)); |
_("Finger key import failed: %s\n"), winpt_strerror (rc)); |
198 |
} |
} |
199 |
else if ((rc = kserver_recvkey (kserver, port, |
else if ((rc = kserver_recvkey (kserver, port, |
200 |
kserver_check_keyid (pattern), |
kserver_check_keyid (pattern), |
201 |
rawkey, MAX_KEYSIZE-1))) { |
&rawkey, &keylen))) { |
202 |
hkp_err_box (dlg, kserver, port, rc); |
hkp_err_box (dlg, kserver, port, rc); |
203 |
free_if_alloc (rawkey); |
free_if_alloc (rawkey); |
204 |
return rc; |
return rc; |
209 |
_("Keyserver"), MB_ERR); |
_("Keyserver"), MB_ERR); |
210 |
goto leave; |
goto leave; |
211 |
} |
} |
212 |
ec = gpgme_new (&ctx); |
if (gpgme_new (&ctx)) |
|
if (ec) |
|
213 |
BUG (NULL); |
BUG (NULL); |
214 |
gpgme_data_new_from_mem (&keydata, rawkey, strlen (rawkey), 1); |
gpgme_data_new_from_mem (&keydata, rawkey, strlen (rawkey), 1); |
215 |
rc = gpgme_op_import (ctx, keydata); |
err = gpgme_op_import (ctx, keydata); |
216 |
if (rc) { |
if (err) { |
217 |
msg_box (dlg, gpgme_strerror ((gpgme_error_t)rc), _("Import"), MB_ERR); |
msg_box (dlg, gpgme_strerror (err), _("Import"), MB_ERR); |
218 |
goto leave; |
goto leave; |
219 |
} |
} |
220 |
import_res = gpgme_op_import_result (ctx); |
import_res = gpgme_op_import_result (ctx); |