add logic to report generation for missing auditor signatures

This commit is contained in:
Christian Grothoff 2020-12-22 18:38:14 +01:00
parent fe232f1fed
commit 0e74fbef8d
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 59 additions and 6 deletions

View File

@ -967,6 +967,39 @@ with respect to outgoing wire transfers.
\section{Minor irregularities} \section{Minor irregularities}
\subsection{Denominations without auditor signature}
This section highlights denomination keys that lack a proper
signature from the {\t taler-auditor-offline} tool. This may be
legitimate, say in case where the auditor's involvement in the
exchange business is ending and a new auditor is responsible for
future denomnations. So this must be read with a keen eye on the
business situation.
{% if coins.unsigned_denominations() == 0 %}
{\bf All denominations officially audited by this auditor.}
{% else %}
\begin{longtable}{p{6cm}|r|r|r}
{\bf Denomination} & {\bf Value} & {\bf Start} & {\bf End} \\ \hline \hline
\endfirsthead
{\bf Denomination} & {\bf Value} & {\bf Start} & {\bf End} \\ \hline \hline
\endhead
\hline \hline
{\bf Denomination} & {\bf Value} & {\bf Start} & {\bf End} \\ \hline \hline
\endfoot
\caption{Denominations not officially audited by this auditor.}
\label{table:denominations:denoms_without_signatures}
\endlastfoot
{% for item in coins.unsigned_denominations %}
{\tt \tiny {{ item.denomination }} } &
{{ item.value }} &
{{ item.start_time }} &
{{ item.end_time }} \\ \hline
{% endfor %}
\end{longtable}
{% endif %}
\subsection{Incorrect reserve balance summary in database} \subsection{Incorrect reserve balance summary in database}
This section highlights cases where the reserve balance summary This section highlights cases where the reserve balance summary

View File

@ -74,6 +74,11 @@ static json_t *report_emergencies_by_count;
*/ */
static json_t *report_row_inconsistencies; static json_t *report_row_inconsistencies;
/**
* Array of reports about denominations not counter-signed by the auditor.
*/
static json_t *report_denominations_without_sigs;
/** /**
* Report about amount calculation differences (causing profit * Report about amount calculation differences (causing profit
* or loss at the exchange). * or loss at the exchange).
@ -2262,10 +2267,19 @@ check_denomination (
&TALER_ARL_auditor_pub, &TALER_ARL_auditor_pub,
&auditor_sig)) &auditor_sig))
{ {
// FIXME: add properly to audit report! TALER_ARL_report (report_denominations_without_sigs,
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, json_pack ("{s:o, s:o, s:o, s:o}",
"Exchange has invalid signature from this auditor for denomination `%s' in its database!\n", "denomination",
GNUNET_h2s (&issue->denom_hash)); GNUNET_JSON_from_data_auto (
&issue->denom_hash),
"value",
TALER_JSON_from_amount (&coin_value),
"start_time",
TALER_ARL_json_from_time_abs_nbo (
issue->start),
"end_time",
TALER_ARL_json_from_time_abs_nbo (
issue->expire_legal)));
} }
} }
} }
@ -2580,6 +2594,8 @@ run (void *cls,
(report_emergencies_by_count = json_array ())); (report_emergencies_by_count = json_array ()));
GNUNET_assert (NULL != GNUNET_assert (NULL !=
(report_row_inconsistencies = json_array ())); (report_row_inconsistencies = json_array ()));
GNUNET_assert (NULL !=
(report_denominations_without_sigs = json_array ()));
GNUNET_assert (NULL != GNUNET_assert (NULL !=
(report_amount_arithmetic_inconsistencies = (report_amount_arithmetic_inconsistencies =
json_array ())); json_array ()));
@ -2602,7 +2618,8 @@ run (void *cls,
" s:o, s:o, s:o, s:o, s:o," " s:o, s:o, s:o, s:o, s:o,"
" s:I, s:I, s:I, s:I, s:I," " s:I, s:I, s:I, s:I, s:I,"
" s:I, s:I, s:I, s:I, s:I," " s:I, s:I, s:I, s:I, s:I,"
" s:I, s:I, s:o, s:o, s:o}", " s:I, s:I, s:o, s:o, s:o,"
" s:o}",
/* Block #1 */ /* Block #1 */
"total_escrow_balance", "total_escrow_balance",
TALER_JSON_from_amount (&total_escrow_balance), TALER_JSON_from_amount (&total_escrow_balance),
@ -2703,7 +2720,10 @@ run (void *cls,
GNUNET_TIME_absolute_get ()), GNUNET_TIME_absolute_get ()),
"total_irregular_recoups", "total_irregular_recoups",
TALER_JSON_from_amount ( TALER_JSON_from_amount (
&total_irregular_recoups) &total_irregular_recoups),
/* Block #8 */
"unsigned_denominations",
report_denominations_without_sigs
); );
GNUNET_break (NULL != report); GNUNET_break (NULL != report);
TALER_ARL_done (report); TALER_ARL_done (report);