Fix build with --disable-gpgme

The alpm_decode_signature function was made available for frontends to
display signature information, but this required libalpm to be build with
gpgme support.  As that function did not require anything from gpgme,
have it build unconditionally.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2013-12-21 19:20:44 +10:00
parent 5097b162fc
commit 1d3b17e251
2 changed files with 31 additions and 35 deletions

View File

@ -27,6 +27,7 @@ libalpm_la_SOURCES = \
alpm.h alpm.c \
alpm_list.h alpm_list.c \
backup.h backup.c \
base64.h base64.c \
be_local.c \
be_package.c \
be_sync.c \
@ -60,11 +61,6 @@ libalpm_la_SOURCES += \
sha2.h sha2.c
endif
if HAVE_LIBGPGME
libalpm_la_SOURCES += \
base64.h base64.c
endif
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
libalpm_la_CFLAGS = \

View File

@ -24,17 +24,46 @@
#if HAVE_LIBGPGME
#include <locale.h> /* setlocale() */
#include <gpgme.h>
#include "base64.h"
#endif
/* libalpm */
#include "signing.h"
#include "package.h"
#include "base64.h"
#include "util.h"
#include "log.h"
#include "alpm.h"
#include "handle.h"
/**
* Decode a loaded signature in base64 form.
* @param base64_data the signature to attempt to decode
* @param data the decoded data; must be freed by the caller
* @param data_len the length of the returned data
* @return 0 on success, -1 on failure to properly decode
*/
int SYMEXPORT alpm_decode_signature(const char *base64_data,
unsigned char **data, size_t *data_len)
{
size_t len = strlen(base64_data);
unsigned char *usline = (unsigned char *)base64_data;
/* reasonable allocation of expected length is 3/4 of encoded length */
size_t destlen = len * 3 / 4;
MALLOC(*data, destlen, goto error);
if(base64_decode(*data, &destlen, usline, len)) {
free(*data);
goto error;
}
*data_len = destlen;
return 0;
error:
*data = NULL;
*data_len = 0;
return -1;
}
#if HAVE_LIBGPGME
#define CHECK_ERR(void) do { \
if(gpg_err_code(gpg_err) != GPG_ERR_NO_ERROR) { goto gpg_error; } \
@ -417,35 +446,6 @@ int _alpm_key_import(alpm_handle_t *handle, const char *fpr)
return ret;
}
/**
* Decode a loaded signature in base64 form.
* @param base64_data the signature to attempt to decode
* @param data the decoded data; must be freed by the caller
* @param data_len the length of the returned data
* @return 0 on success, -1 on failure to properly decode
*/
int SYMEXPORT alpm_decode_signature(const char *base64_data,
unsigned char **data, size_t *data_len)
{
size_t len = strlen(base64_data);
unsigned char *usline = (unsigned char *)base64_data;
/* reasonable allocation of expected length is 3/4 of encoded length */
size_t destlen = len * 3 / 4;
MALLOC(*data, destlen, goto error);
if(base64_decode(*data, &destlen, usline, len)) {
free(*data);
goto error;
}
*data_len = destlen;
return 0;
error:
*data = NULL;
*data_len = 0;
return -1;
}
/**
* Check the PGP signature for the given file path.
* If base64_sig is provided, it will be used as the signature data after