[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-donau] branch master updated: add meeting protocol
From: |
gnunet |
Subject: |
[taler-donau] branch master updated: add meeting protocol |
Date: |
Fri, 23 Feb 2024 14:05:06 +0100 |
This is an automated email from the git hooks/post-receive script.
lukas-matyja pushed a commit to branch master
in repository donau.
The following commit(s) were added to refs/heads/master by this push:
new 88e3d75 add meeting protocol
new 833fb1d Merge remote-tracking branch 'refs/remotes/origin/master'
88e3d75 is described below
commit 88e3d75eae7c65b0aa0a5815f9f291564b6418f8
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Fri Feb 23 14:04:51 2024 +0100
add meeting protocol
---
doc/flows/mainOld.tex | 150 ------------------------------------
doc/flows/meetings/01_22-02-2024.md | 43 +++++++++++
2 files changed, 43 insertions(+), 150 deletions(-)
diff --git a/doc/flows/mainOld.tex b/doc/flows/mainOld.tex
deleted file mode 100644
index 5ac84e6..0000000
--- a/doc/flows/mainOld.tex
+++ /dev/null
@@ -1,150 +0,0 @@
-\documentclass{article}
-
-\usepackage[english]{babel}
-\usepackage[utf8]{inputenc}
-\usepackage{amsmath,amssymb}
-\usepackage{parskip}
-\usepackage{graphicx}
-\graphicspath{ {./images/} }
-
-% Margins
-\usepackage[top=3cm, left=3cm, right=3cm, bottom=3cm]{geometry}
-% Colour table cells
-\usepackage[table]{xcolor}
-
-\title{DONAU protocol overview}
-\author{Johannes Casaburi \and Pius Loosli \and Lukas Matyja}
-\date{\today}
-
-\begin{document}
-\maketitle
-
-\section{Definitions}
-\begin{itemize}
-\item $DU :=$ \textbf{donation unit} = Smallest structure representing a
donation confirmation unit, i.e. accepted values that compose a donation
(examples: CHF1, CHF2, EUR1, EUR2). Equivalent in Taler is "denomination".
- \item $UDID := $ \textbf{unique donor identifier} of a donor by tax ID, made
unique per donation to obtain unique $DR$s per donation
- \item $BDID :=$ blinded $UDID$, blinded for privacy of the donor
- \item $BS :=$ BDU blinded signature made with a donation unit secret key
(from DONAU)
- \item $S :=$ unblinded BS
- \item $DR :=$ \textbf{donation receipt} = $UDID$ with $S$ signature of DONAU
affirming donation over the respectiv amount as given by the DU associated with
the signature
- \item $DRs :=$ collection of $DR$s
- \item $DS_{year} :=$ \textbf{donation statement} = confirmation over the
total amount of DRs produced for a specific year and specific donor (DID)
- \item $b :=$ blinding factor
- \item $H :=$ cryptographic hash function
- \item $DUi, Si, DRi, \ldots$ := number entities if there are more than one
e.g. $DU1$, $DU2$ ...
- \item $BS_{kj}$ or $S_{kj} \Rightarrow kj$ := specific DONAU public key used
to attribute a specific value to a DU, e.g. k1 gives the DU a value of 1, k2 a
value of 2...
-\end{itemize}
-
-\subsection{Unique Donor ID (UDID)}
-
-The NONCE is used to uniquely distinguish donor IDs of the same value
-("create a fresh donor ID"). Otherwise the DONAU would refuse DUs
-containing donations of equal amount to the same charity, since this
-would be seen as "double spending" (or rather, double claiming of
-tax deduction for the same donation).
-
-\begin{align}
- UDID := \langle H(TAXID, SALT), NONCE \rangle
-\end{align}
-
-\section{Overview}
-\includegraphics[width=\textwidth]{overview}
-
-\subsection{Step 0: Initial setup}
-\begin{enumerate}
- \item Key generation for blind signatures and statement signing by the
DONAU. Distribution of the keys to charities, donors and tax authorities
(possibly on-demand via REST API). Let $ki$ be the private key for $i$ DU and
$Pi$ be the corresponding public key.
- \item The charity generates their own key pair (charity pub/priv).
- \item The DONAU administrator registers the public key of the charity and
sets the yearly donation limit for the charities.
-\end{enumerate}
-
-\subsection{Step 1: Attest donation}
-\subsubsection{Donor donates to charity}
-\begin{enumerate}
- \item The donor downloads the DU public keys $P1, P4$ for the corresponding
year from the DONAU.
-
- \item To donate 5 Euros the donor has to generate 2 UDIDs (for 1 Euro and 4
Euro DU).
- The donor generates UDIDs $U1$ and $U2$ which include a salted hash of the
tax number
- (here TAXID) and a NONCE.
-
- \begin{align}
- U1 = \langle H(TAXID, SALT), NONCE_1 \rangle \\
- U2 = \langle H(TAXID, SALT), NONCE_2 \rangle
- \end{align}
-
- \item The donor blinds the UDIDs using two different blinding factors $b_1,
b_2$.
- \begin{align}
- BU1 = \langle blind(b_1,U1, P1), H(P1) \rangle \\
- BU2 = \langle blind(b_2,U2, P4), H(P4) \rangle
- \end{align}
-
-\item The donor sends the blinded UDIDs (BDIDs) $BU1$ and $BU2$ as well as the
payment of 5 Euros.
-
-\end{enumerate}
-
-\subsubsection{Charity sends signed BDIDs to DONAU}
-\begin{enumerate}
-\item The charity verifies that the amount requested (based on the $H(Pi)$)
- for signing is lower or equal to the effective amount of the donation.
- \item The charity signs (using EdDSA) a structure containing all unsigned
BDIDs coming from the donor.
- \item The charity sends this structure and the signature to the DONAU.
-\end{enumerate}
-
-\subsubsection{DONAU sends back blind signed UDIDs to charity}
-\begin{enumerate}
- \item The DONAU:
- \begin{enumerate}
- \item verifies the charity signature on the structure.
- \item increments the current year amount of the charity by the total
amount of the BDIDs, if the increment does not exceed the annual limit.
- \item blind signs all the BDIDs using the private keys $k_i$ matching
the public keys $H(Pi)$.
- \begin{align}
- BS1 &:= sign(BU1, k_1) \\
- BS2 &:= sign(BU2, k_4)
- \end{align}
- \item sends back the blind signatures to the charity.
- \end{enumerate}
- \item The charity transmits the blind signatures to the donor.
- \item The donor unblinds the signatures.
- \begin{align}
- S1_{k1} &= unblind(BS1, b_1) \\
- S2_{k4} &= unblind(BS2, b_2)
- \end{align}
-\end{enumerate}
-
-
-\subsection{Step 2: Donor sends DRs to DONAU, DONAU sends back donation
statement (DS)}
-\begin{enumerate}
- \item The donor sends the collection of all $\langle DUi, Si, H(Pj)
\rangle$, also called DRs, to the DONAU. The DRs are sent manually once a year.
- \item For each $\langle DUi, Si, H(Pj) \rangle$ The DONAU...
-
- \begin{itemize}
- \item check if $Pj$ is stored and get the corresponding year and donation
unit (amount donated).
- \item verifies if $Si$ is a correct signature with the corresponding
public key $Pj$.
- \item verifies that the hash of the TAXID and the salt is the same as in
other DRs (With multiple wallets each wallet must simply obtain a separate DS!).
- \item verifies that the nonce is different from each ever used nonce of
this donor for the corresponding year.
- \item if all of this is the case, it adds the amount corresponding to the
public key to the total donation amount for the year.
- \end{itemize}
- \item The DONAU then signs over the total amount,
- year and hashed TAXID+salt and sends signature and the total amount so far
back to the donor.
-
- \begin{align}
- DS := sign(total amount, year, H(TAXID, salt))
- \end{align}
-
-\end{enumerate}
-
-\subsection{Step 3: Donor sends QR Code to validator (tax office)}
-\begin{enumerate}
- \item The donor generates a QR code containing the following and sends it to
the validator/tax office:
- \begin{itemize}
- \item version of the protocol (one byte)
- \item TAXID
- \item salt
- \item DS received from the DONAU
- \item year
- \item amount for the year
- \end{itemize}
-
-\item The validator scans the QR code and validates that the signature
corresponds to the current DONAU DS signing key.
-\end{enumerate}
-
-\end{document}
diff --git a/doc/flows/meetings/01_22-02-2024.md
b/doc/flows/meetings/01_22-02-2024.md
new file mode 100644
index 0000000..25f0c76
--- /dev/null
+++ b/doc/flows/meetings/01_22-02-2024.md
@@ -0,0 +1,43 @@
+# Meeting 22.02.2024
+
+## administrative
+
+Must have (to prioritize):
+
+- DONAU implementation
+
+- Merchant part implementation
+
+- Clarification of practicability with the cantonal tax office
+
+ - presentation of the idea
+
+ - legal requirements
+
+ - Is there a need -> yes :)
+
+Optional (time dependent):
+
+- Wallet implementation (client side)
+
+- Android app (verification tool for tax office)
+
+ - Scans the QR, checks the signature and shows a green visual check mark or
a red cross
+
+- SPA DONAU
+
+## donau coding questions
+
+This code in src/testing/testing_api_cmd_charity_get.c will asynchronously
call the next job if the timeout is not zero. Since the next call is
TALER_TESTING_cmd_end (), all jobs are terminated and the desired GET
charitiy/1. The solution: Use GNUNET_TIME_relative_get_zero_ () to call the
function.
+
+```c
+ if (! GNUNET_TIME_relative_is_zero (ss->timeout))
+ {
+ TALER_TESTING_interpreter_next (is);
+ return;
+ }
+```
+
+Problem uint64_t gives warnings by writing into the database. Therefore we are
now generally using long long unsigned int and casting before database
interaction with long unsigned int (important to cast after scanf operation we
dont want to cut off parts).
+
+
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-donau] branch master updated: add meeting protocol,
gnunet <=