summaryrefslogtreecommitdiffstats
path: root/libopkg
diff options
context:
space:
mode:
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:16:36 (EST)
committer ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2008-12-15 00:16:36 (EST)
commit968549573f2146ef6efa8abef722533b82716b2b (patch)
treeadf86ffc7e1c2c33ce92df479e8889d1977e179e /libopkg
parentf3c3b7a6b89c7acdc4eb1c42670522b6b20e015f (diff)
opkg: * Add opkg-key utility
* Move update-alternatives to utils directory * Update opkg_verify_file function to import keys from /etc/opkg git-svn-id: http://opkg.googlecode.com/svn/trunk@106 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg')
-rw-r--r--libopkg/opkg_download.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/libopkg/opkg_download.c b/libopkg/opkg_download.c
index 6acdc32..1d882a1 100644
--- a/libopkg/opkg_download.c
+++ b/libopkg/opkg_download.c
@@ -233,27 +233,48 @@ opkg_verify_file (opkg_conf_t *conf, char *text_file, char *sig_file)
#ifdef HAVE_GPGME
int status = -1;
gpgme_ctx_t ctx;
- gpgme_data_t sig, text;
+ gpgme_data_t sig, text, key;
gpgme_error_t err = -1;
gpgme_verify_result_t result;
gpgme_signature_t s;
+ char *trusted_path = NULL;
err = gpgme_new (&ctx);
if (err)
return -1;
+ sprintf_alloc(&trusted_path, "%s/%s", conf->offline_root, "/etc/opkg/trusted.gpg");
+ err = gpgme_data_new_from_file (&key, trusted_path, 1);
+ free (trusted_path);
+ if (err)
+ {
+ return -1;
+ }
+ err = gpgme_op_import (ctx, key);
+ if (err)
+ {
+ gpgme_data_release (key);
+ return -1;
+ }
+ gpgme_data_release (key);
+
err = gpgme_data_new_from_file (&sig, sig_file, 1);
if (err)
+ {
+ gpgme_release (ctx);
return -1;
+ }
err = gpgme_data_new_from_file (&text, text_file, 1);
if (err)
+ {
+ gpgme_data_release (sig);
+ gpgme_release (ctx);
return -1;
+ }
err = gpgme_op_verify (ctx, sig, text, NULL);
- if (err)
- return -1;
result = gpgme_op_verify_result (ctx);
if (!result)
@@ -269,6 +290,7 @@ opkg_verify_file (opkg_conf_t *conf, char *text_file, char *sig_file)
s = s->next;
}
+
gpgme_data_release (sig);
gpgme_data_release (text);
gpgme_release (ctx);