mirror of
https://github.com/moparisthebest/pacman
synced 2025-01-08 12:28:00 -05:00
_alpm_key_in_keychain: cache known keys
Implements FS#38042 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
This commit is contained in:
parent
aec4241af2
commit
7ee01c8666
@ -71,6 +71,10 @@ void _alpm_handle_free(alpm_handle_t *handle)
|
|||||||
curl_easy_cleanup(handle->curl);
|
curl_easy_cleanup(handle->curl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBGPGME
|
||||||
|
FREELIST(handle->known_keys);
|
||||||
|
#endif
|
||||||
|
|
||||||
regfree(&handle->delta_regex);
|
regfree(&handle->delta_regex);
|
||||||
|
|
||||||
/* free memory */
|
/* free memory */
|
||||||
|
@ -62,6 +62,10 @@ struct __alpm_handle_t {
|
|||||||
CURL *curl; /* reusable curl_easy handle */
|
CURL *curl; /* reusable curl_easy handle */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBGPGME
|
||||||
|
alpm_list_t *known_keys; /* keys verified to be in our keychain */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* callback functions */
|
/* callback functions */
|
||||||
alpm_cb_log logcb; /* Log callback function */
|
alpm_cb_log logcb; /* Log callback function */
|
||||||
alpm_cb_download dlcb; /* Download callback function */
|
alpm_cb_download dlcb; /* Download callback function */
|
||||||
|
@ -221,6 +221,11 @@ int _alpm_key_in_keychain(alpm_handle_t *handle, const char *fpr)
|
|||||||
gpgme_key_t key;
|
gpgme_key_t key;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
if(alpm_list_find_str(handle->known_keys, fpr)) {
|
||||||
|
_alpm_log(handle, ALPM_LOG_DEBUG, "key %s found in cache\n", fpr);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if(init_gpgme(handle)) {
|
if(init_gpgme(handle)) {
|
||||||
/* pm_errno was set in gpgme_init() */
|
/* pm_errno was set in gpgme_init() */
|
||||||
goto error;
|
goto error;
|
||||||
@ -238,6 +243,7 @@ int _alpm_key_in_keychain(alpm_handle_t *handle, const char *fpr)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
} else if(gpg_err_code(gpg_err) == GPG_ERR_NO_ERROR) {
|
} else if(gpg_err_code(gpg_err) == GPG_ERR_NO_ERROR) {
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "key lookup success, key exists\n");
|
_alpm_log(handle, ALPM_LOG_DEBUG, "key lookup success, key exists\n");
|
||||||
|
handle->known_keys = alpm_list_add(handle->known_keys, strdup(fpr));
|
||||||
ret = 1;
|
ret = 1;
|
||||||
} else {
|
} else {
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "gpg error: %s\n", gpgme_strerror(gpg_err));
|
_alpm_log(handle, ALPM_LOG_DEBUG, "gpg error: %s\n", gpgme_strerror(gpg_err));
|
||||||
|
Loading…
Reference in New Issue
Block a user