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}
\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}
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;
/**
* 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
* or loss at the exchange).
@ -2262,10 +2267,19 @@ check_denomination (
&TALER_ARL_auditor_pub,
&auditor_sig))
{
// FIXME: add properly to audit report!
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Exchange has invalid signature from this auditor for denomination `%s' in its database!\n",
GNUNET_h2s (&issue->denom_hash));
TALER_ARL_report (report_denominations_without_sigs,
json_pack ("{s:o, s:o, s:o, s:o}",
"denomination",
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 ()));
GNUNET_assert (NULL !=
(report_row_inconsistencies = json_array ()));
GNUNET_assert (NULL !=
(report_denominations_without_sigs = json_array ()));
GNUNET_assert (NULL !=
(report_amount_arithmetic_inconsistencies =
json_array ()));
@ -2602,7 +2618,8 @@ run (void *cls,
" 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:o, s:o, s:o}",
" s:I, s:I, s:o, s:o, s:o,"
" s:o}",
/* Block #1 */
"total_escrow_balance",
TALER_JSON_from_amount (&total_escrow_balance),
@ -2703,7 +2720,10 @@ run (void *cls,
GNUNET_TIME_absolute_get ()),
"total_irregular_recoups",
TALER_JSON_from_amount (
&total_irregular_recoups)
&total_irregular_recoups),
/* Block #8 */
"unsigned_denominations",
report_denominations_without_sigs
);
GNUNET_break (NULL != report);
TALER_ARL_done (report);