summaryrefslogtreecommitdiffabout
path: root/src/gpg.c
authorSergey Poznyakoff <gray@gnu.org.ua>2007-08-26 13:03:32 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2007-08-26 13:03:32 (GMT)
commitb89ece30bebb5b9dd06e4e061537b6bf068566f2 (patch) (side-by-side diff)
treec7f65b64fccfac2f0e7e134e5f7666a4fb1907d1 /src/gpg.c
parent338c0d9c35c56f35c636df1c1da0852a466e731f (diff)
downloadwydawca-b89ece30bebb5b9dd06e4e061537b6bf068566f2.tar.gz
wydawca-b89ece30bebb5b9dd06e4e061537b6bf068566f2.tar.bz2
Implement project owner notifications.
* wydawca/wydawca.c (syslog_printer): Reduce the number of memory reallocations (make_stat_expansion): Update * wydawca/method.c: Implement a new framework: methods may return 2-dimensional arrays of strings. * wydawca/sql.c, wydawca/sql.h: Implement the new method framework. * wydawca/verify.c (expand_param): kw_expansion may provide expansion functions. An additional argument supplies user-defined data for expansions. (escape_kwexp): Extern (free_kwexp): Improve (get_project_name): New function (make_default_kwexp): New function (check_access_rights): Call get_project_name. Use make_default_kwexp to initialize expansions (verify_directive_file): Use make_default_kwexp to initialize expansions * wydawca/wydawca.h (NITEMS): New macro (enum access_method_type): New members: ncol, nrow (struct directory_pair): New members url,project_owner_method, user_data_method (struct file_info): Replace mtime, uid with struct stat sb (struct file_triplet): New members project, dpair, user_data (TRIPLET_UID): Take into account the changes to struct file_info (enum notification_event): New data type (notify_project_owner, notify_admin, notify): New functions (struct kw_expansion): New members static_p, expand and data. (escape_kwexp,make_default_kwexp): New proto (expand_param): Change signature (triplet_expand_param): New function (method_result): Change prototype (method_num_rows,method_num_cols): New functions * wydawca/config.c: New statements project-owner, user-data, admin-address, mail-user, user-message directory can take an optional argument specifying base URL for notification messages * wydawca/gpg.c (verify_directive_signature): Expand directives even if the signature does not match. Useful for notifications. Add notifications. * wydawca/process.c: Add notifications. * wydawca/directive.c: Add notifications * wydawca/wydawca.rc: Update * wydawca/mail.c, wydawca/mail.h: Implement project owner notifications * wydawca/triplet.c (triplet_expand_param): New function * lib/cfg.c (read_cont_line): Fix counting of input lines. git-svn-id: file:///svnroot/wydawca/trunk@297 6bb4bd81-ecc2-4fd4-a2d4-9571d19c0d33
Diffstat (limited to 'src/gpg.c') (more/less context) (ignore whitespace changes)
-rw-r--r--src/gpg.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/gpg.c b/src/gpg.c
index 3372c7b..eb2a64a 100644
--- a/src/gpg.c
+++ b/src/gpg.c
@@ -224,20 +224,22 @@ verify_directive_signature (struct file_triplet *trp,
{
gpgme_verify_result_t result;
+ size = gpgme_data_seek (plain, 0, SEEK_END);
+ gpgme_data_seek (plain, 0, SEEK_SET);
+ trp->blurb = xmalloc (size + 1);
+ gpgme_data_read (plain, trp->blurb, size);
+ trp->blurb[size] = 0;
+ gpgme_data_release (plain);
+
+ rc = directive_parse (trp);
+
result = gpgme_op_verify_result (ctx);
- if (gpg_sig_ok_p (ctx, result->signatures))
+ if (!gpg_sig_ok_p (ctx, result->signatures))
{
- size = gpgme_data_seek (plain, 0, SEEK_END);
- gpgme_data_seek (plain, 0, SEEK_SET);
- trp->blurb = xmalloc (size + 1);
- gpgme_data_read (plain, trp->blurb, size);
- trp->blurb[size] = 0;
- gpgme_data_release (plain);
-
- rc = directive_parse (trp);
+ UPDATE_STATS (STAT_BAD_SIGNATURE);
+ notify (trp, ev_bad_directive_signature);
+ rc = 1;
}
- else
- rc = 1;
}
else
{
@@ -245,7 +247,6 @@ verify_directive_signature (struct file_triplet *trp,
UPDATE_STATS (STAT_BAD_SIGNATURE);
logmsg (LOG_ERR, "%s: directive verification failed: %s",
trp->name, gpgme_strerror (ec));
- /* FIXME: Send mail to the project maintainer */
}
gpgme_data_release (directive_data);
@@ -292,6 +293,7 @@ verify_detached_signature (struct file_triplet *trp,
case exec_fail:
UPDATE_STATS (STAT_BAD_SIGNATURE);
logmsg (LOG_ERR, "BAD detached signature for %s", trp->name);
+ notify (trp, ev_bad_detached_signature);
break;
case exec_error:

Return to:

Send suggestions and report system problems to the System administrator.