commit bbf541a56267327997d71ae09edd67135d8c734b
parent 33afa2a15d34bdfa40ceade5a4a401a8b9d55646
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
Date: Tue, 4 Jun 2024 22:23:51 +0200
added system arch uml, minor changes
Diffstat:
7 files changed, 114 insertions(+), 5 deletions(-)
diff --git a/doc/thesis/chapters/acknowledgements/acknowledgements.tex b/doc/thesis/chapters/acknowledgements/acknowledgements.tex
@@ -1,7 +1,7 @@
%\section{Acknowledgements}
-First and foremost, we would like to thank Christian Grothoff and Emmanuel Benoist for their continued support throughout the project.
+First and foremost, we would like to thank Christian Grothoff and Emmanuel Benoist for their continued support and feedback throughout the project.
A special thank to Michiel Leenaars from the NLnet foundation who had the initial idea for the project.
We would also like to thank our expert Daniel Voisard for his feedback during the project.
Further we would also like to thank Christian Blättler for his contributions to GNUnet, on which our project relies on.
-We would like to mention that we have used DeepL for word translations.
-%tax auth zurich
+A big thank to the tax authority Zürich who agreed to an interview, which has provided us with valuable insight in how donations are verified and important aspects that a system like the Donau should fulfil.
+We would like to mention that we have used DeepL for word translations and \url{https://app.diagrams.net/} for some of the figures in this thesis.
diff --git a/doc/thesis/chapters/implementation/arch.tex b/doc/thesis/chapters/implementation/arch.tex
@@ -1,4 +1,11 @@
\section{System Architecture}
As the charity backend and donor wallet implementation are not yet developed the following architecture is reduced to the Donau backend, the client API calls and the API tests.
% The android app
-% TODO: architecture image
+
+\begin{figure}[ht]
+ \includegraphics[width=1\textwidth]{donau_system_arch}
+ \caption{Donau system architecture} \label{fig:donau_system_arch}
+\end{figure}
+
+The Donau backend implements the REST API and HTTP handler which communicates with the database plugin. The postgresql database is further described in section ?? of the thesis.
+The HTTP handler includes a key handler that interacts with the three secmod processes. The secmod processes generate and manage keys.
diff --git a/doc/thesis/chapters/introduction/interview.tex b/doc/thesis/chapters/introduction/interview.tex
diff --git a/doc/thesis/chapters/introduction/scope.tex b/doc/thesis/chapters/introduction/scope.tex
@@ -2,7 +2,7 @@
At the start of the project we wrote the REST API specifications together with the database schema and the Donau protocol.
Later tests were written to ensure that the endpoints work correctly without any errors.
During the project we documented the code and created various other documents like presentations and project summaries.
-To demonstrate the Donau we developped an android application that can verify donations.
+To demonstrate the Donau we developped an android application that can verify donations by scanning a QR-Code.
We also held an interview with the tax authority Zürich, which has provided valuable insight in how donations are verified and important aspects that a system like the Donau should fulfil.
diff --git a/doc/thesis/images/donau_system_arch.png b/doc/thesis/images/donau_system_arch.png
Binary files differ.
diff --git a/doc/thesis/images/uml/donau_system_arch.drawio b/doc/thesis/images/uml/donau_system_arch.drawio
@@ -0,0 +1,102 @@
+<mxfile host="app.diagrams.net" modified="2024-06-04T20:12:24.501Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0" etag="PTGdJqgFEGB45qRsRi3k" version="24.4.13" type="device">
+ <diagram name="Page-1" id="90a13364-a465-7bf4-72fc-28e22215d7a0">
+ <mxGraphModel dx="2457" dy="966" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1.5" pageWidth="1169" pageHeight="826" background="none" math="0" shadow="0">
+ <root>
+ <mxCell id="0" style=";html=1;" />
+ <mxCell id="1" style=";html=1;" parent="0" />
+ <mxCell id="3a17f1ce550125da-7" value="<div>Database</div>" style="whiteSpace=wrap;html=1;shadow=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
+ <mxGeometry x="960" y="600" width="120" height="60" as="geometry" />
+ </mxCell>
+ <mxCell id="3a17f1ce550125da-20" style="edgeStyle=elbowEdgeStyle;rounded=0;html=1;startArrow=none;startFill=0;jettySize=auto;orthogonalLoop=1;fontSize=18;elbow=vertical;" parent="1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="554" y="518.5" />
+ </Array>
+ <mxPoint x="514" y="518.5" as="sourcePoint" />
+ <mxPoint x="597" y="518.5" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3a17f1ce550125da-8" target="3a17f1ce550125da-11">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="3a17f1ce550125da-8" value="REST API" style="whiteSpace=wrap;html=1;shadow=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
+ <mxGeometry x="597" y="444" width="120" height="150" as="geometry" />
+ </mxCell>
+ <mxCell id="3a17f1ce550125da-21" style="edgeStyle=elbowEdgeStyle;rounded=0;html=1;startArrow=none;startFill=0;jettySize=auto;orthogonalLoop=1;fontSize=18;elbow=vertical;" parent="1" source="3a17f1ce550125da-9" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="963" y="630" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="3a17f1ce550125da-9" value="Database plugin" style="whiteSpace=wrap;html=1;shadow=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
+ <mxGeometry x="760" y="600" width="120" height="60" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3a17f1ce550125da-11" target="3a17f1ce550125da-9">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-20" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3a17f1ce550125da-11" target="U7Q_6XmOLSdSQr47prqe-19">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1119" y="519" />
+ <mxPoint x="1119" y="472" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3a17f1ce550125da-11" target="U7Q_6XmOLSdSQr47prqe-21">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1119" y="519" />
+ <mxPoint x="1119" y="554" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-24" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3a17f1ce550125da-11" target="U7Q_6XmOLSdSQr47prqe-23">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="1119" y="519" />
+ <mxPoint x="1119" y="635" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="3a17f1ce550125da-11" value="<div>HTTP</div><div>Handler</div>" style="whiteSpace=wrap;html=1;shadow=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" vertex="1">
+ <mxGeometry x="760" y="489" width="120" height="60" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-1" value="" style="swimlane;startSize=0;" vertex="1" parent="1">
+ <mxGeometry x="580" y="420" width="320" height="260" as="geometry">
+ <mxRectangle x="1220" y="20" width="50" height="40" as="alternateBounds" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-4" value="<font style="font-size: 20px;">Donau server</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+ <mxGeometry x="672.5" y="690" width="135" height="30" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-5" value="<font style="font-size: 20px;">Postgresql<br></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+ <mxGeometry x="952.5" y="690" width="135" height="30" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-6" value="" style="swimlane;startSize=0;" vertex="1" parent="1">
+ <mxGeometry x="940" y="580" width="160" height="100" as="geometry">
+ <mxRectangle x="1220" y="20" width="50" height="40" as="alternateBounds" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-7" value="Network requests" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+ <mxGeometry x="500" y="480" width="70" height="30" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-12" value="<font style="font-size: 20px;">Secmod Helper<br></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+ <mxGeometry x="1149.25" y="690" width="147.5" height="30" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-13" value="" style="swimlane;startSize=0;" vertex="1" parent="1">
+ <mxGeometry x="1143" y="420" width="160" height="260" as="geometry">
+ <mxRectangle x="1220" y="20" width="50" height="40" as="alternateBounds" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-19" value="EdDSA" style="whiteSpace=wrap;html=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;shadow=1;" vertex="1" parent="U7Q_6XmOLSdSQr47prqe-13">
+ <mxGeometry x="20" y="22" width="120" height="60" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-21" value="RSA" style="whiteSpace=wrap;html=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;shadow=1;" vertex="1" parent="U7Q_6XmOLSdSQr47prqe-13">
+ <mxGeometry x="22" y="104" width="120" height="60" as="geometry" />
+ </mxCell>
+ <mxCell id="U7Q_6XmOLSdSQr47prqe-23" value="CS" style="whiteSpace=wrap;html=1;fontSize=18;fillColor=#f5f5f5;strokeColor=#666666;shadow=1;" vertex="1" parent="U7Q_6XmOLSdSQr47prqe-13">
+ <mxGeometry x="20" y="185" width="120" height="60" as="geometry" />
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
diff --git a/doc/thesis/thesis.pdf b/doc/thesis/thesis.pdf
Binary files differ.