+
+int dkim_exim_verify_finish(void) {
+ dkim_signatures = NULL;
+ dkim_collect_input = 0;
+ if (pdkim_feed_finish(dkim_verify_ctx,&dkim_signatures) != PDKIM_OK) return 0;
+
+ while (dkim_signatures != NULL) {
+ debug_printf("DKIM: Signature from domain '%s': ",dkim_signatures->domain);
+ switch(dkim_signatures->verify_status) {
+ case PDKIM_VERIFY_NONE:
+ debug_printf("not verified\n");
+ log_write(0, LOG_MAIN, "DKIM: Signature from domain '%s', selector '%s': "
+ "not verified", dkim_signatures->domain, dkim_signatures->selector);
+ break;
+ case PDKIM_VERIFY_INVALID:
+ debug_printf("invalid\n");
+ log_write(0, LOG_MAIN, "DKIM: Signature from domain '%s', selector '%s': "
+ "invalid", dkim_signatures->domain, dkim_signatures->selector);
+ break;
+ case PDKIM_VERIFY_FAIL:
+ debug_printf("verification failed\n");
+ log_write(0, LOG_MAIN, "DKIM: Signature from domain '%s', selector '%s': "
+ "verification failed", dkim_signatures->domain, dkim_signatures->selector);
+ break;
+ case PDKIM_VERIFY_PASS:
+ debug_printf("verification succeeded\n");
+ log_write(0, LOG_MAIN, "DKIM: Signature from domain '%s', selector '%s': "
+ "verification succeeded", dkim_signatures->domain, dkim_signatures->selector);
+ break;
+ }
+ /* Try next signature */
+ dkim_signatures = dkim_signatures->next;
+ }
+
+ return dkim_signatures?1:0;
+}
+
+