diff options
author | ticktock35 <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) |
commit | 968549573f2146ef6efa8abef722533b82716b2b (patch) | |
tree | adf86ffc7e1c2c33ce92df479e8889d1977e179e /libopkg | |
parent | f3c3b7a6b89c7acdc4eb1c42670522b6b20e015f (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.c | 28 |
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); |