donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 2e5c829f7d73a1192ae283b465ea91adf5d0aba5
parent 3420b088d28c5e8579ddcf46621508f599cb6757
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
Date:   Wed, 29 May 2024 00:59:09 +0200

[doc] add QR Code specification & update flow charts

Diffstat:
Mdoc/thesis/chapters/implementation/implementation.tex | 4++++
Mdoc/thesis/images/uml/donau_flow_issue_receipt.drawio | 121++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mdoc/thesis/images/uml/donau_flow_register_charity.drawio | 64+++++++++++++++++++++++++++++++++++++++++++---------------------
Mdoc/thesis/thesis.pdf | 0
4 files changed, 112 insertions(+), 77 deletions(-)

diff --git a/doc/thesis/chapters/implementation/implementation.tex b/doc/thesis/chapters/implementation/implementation.tex @@ -100,3 +100,7 @@ History of the yearly donations for each charity. \section{Android Verification App} The android app is part of the verification process used by the tax authority to check the donation statement (see xx). +It is possible to define an URI scheme for an android app. The app opens when the link is activated. The arguments defined in chapter Protocol xx are separated with ??? %FIXME: should the length of binary data also be included? + +To ensure that as many characters as possible can be stored in the QR code, the QR code should be alphanumeric encoded \footnote{alphanumeric encoded QR codes have a capaticity of up to 4296 characters and support only a few special characters}. This means that each argument is stringified. To ensure that no special characters are used for binary data, the hash and the signature are encoded in ASCII using CrockfordBase32. +%TODO: Add Link example diff --git a/doc/thesis/images/uml/donau_flow_issue_receipt.drawio b/doc/thesis/images/uml/donau_flow_issue_receipt.drawio @@ -1,14 +1,14 @@ -<mxfile host="app.diagrams.net" modified="2024-05-28T16:13:03.952Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0" etag="bwfrhjSZC5gb1RfAE5LW" version="24.4.9" type="device"> +<mxfile host="Electron" modified="2024-05-28T22:55:34.311Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.4.8 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="v95PFEzPbUUMy5VbGAGY" version="24.4.8" type="device"> <diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0"> - <mxGraphModel dx="2033" dy="799" grid="1" gridSize="5" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0"> + <mxGraphModel dx="954" dy="658" grid="1" gridSize="5" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="7baba1c4bc27f4b0-8" value="donor" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1"> - <mxGeometry x="200" y="80" width="100" height="760" as="geometry" /> + <mxGeometry x="200" y="41" width="100" height="800" as="geometry" /> </mxCell> <mxCell id="7baba1c4bc27f4b0-9" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-8" vertex="1"> - <mxGeometry x="45" y="50" width="10" height="695" as="geometry" /> + <mxGeometry x="45" y="50" width="10" height="730" as="geometry" /> </mxCell> <mxCell id="jwiRQB-RJB6SAp2JKjDF-14" value="Add Donau" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry width="60" relative="1" as="geometry"> @@ -27,26 +27,26 @@ <mxPoint x="56" y="171" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-9" value="GET /keys" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-8" edge="1" target="jwiRQB-RJB6SAp2JKjDF-2"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-9" value="GET /keys" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-8" target="jwiRQB-RJB6SAp2JKjDF-2" edge="1"> <mxGeometry width="80" relative="1" as="geometry"> <mxPoint x="55" y="90" as="sourcePoint" /> <mxPoint x="340" y="90" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-1" value="return keys" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;" edge="1" parent="7baba1c4bc27f4b0-8" source="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="gqEucMnvXZBW8aS9mki2-1" value="return keys" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-8" source="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="135" y="119.5" as="sourcePoint" /> <mxPoint x="55" y="119.5" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-5" value="Donate to charity" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-5" value="Donate to charity" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry width="60" relative="1" as="geometry"> <mxPoint x="-60" y="200" as="sourcePoint" /> <mxPoint x="45" y="200" as="targetPoint" /> <mxPoint as="offset" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-8" value="CreateBlindedDonationIdentifier()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-8" value="CreateBlindedDonationIdentifier()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="220" as="sourcePoint" /> <Array as="points"> @@ -56,7 +56,7 @@ <mxPoint x="56" y="251" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-10" value="CreateBlindedDonationIdentifierKeyPair()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-10" value="CreateBlindedDonationIdentifierKeyPair()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="260" as="sourcePoint" /> <Array as="points"> @@ -66,43 +66,43 @@ <mxPoint x="56" y="291" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-26" value="VerifySig()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-26" value="VerifySig()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="55" y="615" as="sourcePoint" /> + <mxPoint x="55" y="692" as="sourcePoint" /> <Array as="points"> - <mxPoint x="85" y="615" /> - <mxPoint x="85" y="646" /> + <mxPoint x="85" y="692" /> + <mxPoint x="85" y="723" /> </Array> - <mxPoint x="56" y="646" as="targetPoint" /> + <mxPoint x="56" y="723" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-27" value="UnblindSig()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-27" value="UnblindSig()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="55" y="655" as="sourcePoint" /> + <mxPoint x="55" y="653" as="sourcePoint" /> <Array as="points"> - <mxPoint x="85" y="655" /> - <mxPoint x="85" y="686" /> + <mxPoint x="85" y="653" /> + <mxPoint x="85" y="684" /> </Array> - <mxPoint x="56" y="686" as="targetPoint" /> + <mxPoint x="56" y="684" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-28" value="CreateDonationReceipt()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="7baba1c4bc27f4b0-8"> + <mxCell id="gqEucMnvXZBW8aS9mki2-28" value="CreateDonationReceipt()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;entryX=1.08;entryY=0.447;entryDx=0;entryDy=0;entryPerimeter=0;" parent="7baba1c4bc27f4b0-8" edge="1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="55" y="695.03" as="sourcePoint" /> + <mxPoint x="55" y="731.03" as="sourcePoint" /> <Array as="points"> - <mxPoint x="85" y="695.03" /> - <mxPoint x="85" y="726.03" /> + <mxPoint x="85" y="731.03" /> + <mxPoint x="85" y="762.03" /> </Array> - <mxPoint x="56" y="726.03" as="targetPoint" /> + <mxPoint x="56" y="762.03" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="jwiRQB-RJB6SAp2JKjDF-1" value="Donau" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1"> - <mxGeometry x="500" y="80" width="100" height="760" as="geometry" /> + <mxGeometry x="500" y="41" width="100" height="800" as="geometry" /> </mxCell> <mxCell id="jwiRQB-RJB6SAp2JKjDF-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="jwiRQB-RJB6SAp2JKjDF-1" vertex="1"> - <mxGeometry x="45" y="50" width="10" height="695" as="geometry" /> + <mxGeometry x="45" y="50" width="10" height="730" as="geometry" /> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-18" value="Verify receipts" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="gqEucMnvXZBW8aS9mki2-18" value="Verify charity signature" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="450" as="sourcePoint" /> <Array as="points"> @@ -111,34 +111,34 @@ <mxPoint x="60" y="479.9999999999998" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-22" value="Blind Sign BUDI&#39;s" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="gqEucMnvXZBW8aS9mki2-22" value="Blind Sign BUDI&#39;s" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="55" y="505" as="sourcePoint" /> + <mxPoint x="55" y="540" as="sourcePoint" /> <Array as="points"> - <mxPoint x="85" y="535" /> + <mxPoint x="85" y="570" /> </Array> - <mxPoint x="60" y="534.9999999999998" as="targetPoint" /> + <mxPoint x="60" y="569.9999999999998" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-23" value="send blind signatures" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1" target="gqEucMnvXZBW8aS9mki2-4"> + <mxCell id="gqEucMnvXZBW8aS9mki2-23" value="send blind signatures" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry width="80" relative="1" as="geometry"> - <mxPoint x="55" y="570" as="sourcePoint" /> - <mxPoint x="135" y="570" as="targetPoint" /> + <mxPoint x="55" y="605" as="sourcePoint" /> + <mxPoint x="325" y="605" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-24" value="send blind signatures" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="gqEucMnvXZBW8aS9mki2-24" value="send blind signatures" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry width="80" relative="1" as="geometry"> - <mxPoint x="324.99999999999955" y="600" as="sourcePoint" /> - <mxPoint x="-245" y="600" as="targetPoint" /> + <mxPoint x="324.99999999999955" y="635" as="sourcePoint" /> + <mxPoint x="-245" y="635" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-2" value="charity" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="1"> - <mxGeometry x="780" y="80" width="100" height="760" as="geometry" /> + <mxCell id="gqEucMnvXZBW8aS9mki2-2" value="charity" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1"> + <mxGeometry x="780" y="41" width="100" height="800" as="geometry" /> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-4" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="gqEucMnvXZBW8aS9mki2-2"> - <mxGeometry x="45" y="50" width="10" height="695" as="geometry" /> + <mxCell id="gqEucMnvXZBW8aS9mki2-4" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="gqEucMnvXZBW8aS9mki2-2" vertex="1"> + <mxGeometry x="45" y="50" width="10" height="730" as="geometry" /> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-15" value="Verify payment" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="gqEucMnvXZBW8aS9mki2-2"> + <mxCell id="gqEucMnvXZBW8aS9mki2-15" value="Verify payment" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="gqEucMnvXZBW8aS9mki2-2" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="345" as="sourcePoint" /> <Array as="points"> @@ -147,7 +147,7 @@ <mxPoint x="60" y="374.9999999999998" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-16" value="Sign BKP&#39;s" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="gqEucMnvXZBW8aS9mki2-2"> + <mxCell id="gqEucMnvXZBW8aS9mki2-16" value="Sign BKP&#39;s" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="gqEucMnvXZBW8aS9mki2-2" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="385" as="sourcePoint" /> <Array as="points"> @@ -156,33 +156,42 @@ <mxPoint x="60" y="414.9999999999998" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-17" value="POST /batch_issue" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="gqEucMnvXZBW8aS9mki2-2" target="jwiRQB-RJB6SAp2JKjDF-2"> + <mxCell id="gqEucMnvXZBW8aS9mki2-17" value="POST /batch_issue" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="gqEucMnvXZBW8aS9mki2-2" target="jwiRQB-RJB6SAp2JKjDF-2" edge="1"> <mxGeometry width="80" relative="1" as="geometry"> <mxPoint x="45" y="440" as="sourcePoint" /> <mxPoint x="-24.976190476190595" y="440.0000000000001" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-9" value="&lt;div style=&quot;font-size: 8px;&quot;&gt;foreach&lt;/div&gt;&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;donation unit&lt;/font&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=60;height=25;" vertex="1" parent="1"> - <mxGeometry x="180" y="290" width="320" height="90" as="geometry" /> + <mxCell id="gqEucMnvXZBW8aS9mki2-9" value="&lt;div style=&quot;font-size: 8px;&quot;&gt;foreach&lt;/div&gt;&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;donation unit&lt;/font&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=60;height=25;" parent="1" vertex="1"> + <mxGeometry x="180" y="251" width="320" height="90" as="geometry" /> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-13" value="Payment" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" edge="1" parent="1" target="gqEucMnvXZBW8aS9mki2-4"> + <mxCell id="gqEucMnvXZBW8aS9mki2-13" value="Payment" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" parent="1" target="gqEucMnvXZBW8aS9mki2-4" edge="1"> <mxGeometry width="60" relative="1" as="geometry"> - <mxPoint x="705" y="420" as="sourcePoint" /> - <mxPoint x="785" y="420" as="targetPoint" /> + <mxPoint x="705" y="381" as="sourcePoint" /> + <mxPoint x="785" y="381" as="targetPoint" /> <mxPoint as="offset" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-12" value="Send BKP&#39;s" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="1" target="gqEucMnvXZBW8aS9mki2-4"> + <mxCell id="gqEucMnvXZBW8aS9mki2-12" value="Send BKP&#39;s" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" parent="1" target="gqEucMnvXZBW8aS9mki2-4" edge="1"> <mxGeometry width="80" relative="1" as="geometry"> - <mxPoint x="255" y="400" as="sourcePoint" /> - <mxPoint x="784.5" y="400" as="targetPoint" /> + <mxPoint x="255" y="361" as="sourcePoint" /> + <mxPoint x="784.5" y="361" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-21" value="foreach BKP" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;" vertex="1" parent="1"> - <mxGeometry x="480" y="575" width="230" height="50" as="geometry" /> + <mxCell id="gqEucMnvXZBW8aS9mki2-21" value="foreach BKP" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;" parent="1" vertex="1"> + <mxGeometry x="480" y="571" width="230" height="50" as="geometry" /> </mxCell> - <mxCell id="gqEucMnvXZBW8aS9mki2-25" value="&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;foreach&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;blind signature&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=60;height=25;" vertex="1" parent="1"> - <mxGeometry x="180" y="690" width="320" height="125" as="geometry" /> + <mxCell id="gqEucMnvXZBW8aS9mki2-25" value="&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;foreach&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;&lt;font style=&quot;font-size: 8px;&quot;&gt;blind signature&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=umlFrame;whiteSpace=wrap;html=1;pointerEvents=0;width=60;height=25;" parent="1" vertex="1"> + <mxGeometry x="180" y="686" width="320" height="125" as="geometry" /> + </mxCell> + <mxCell id="RNT9XIpHyLaZ2cgxR4a1-4" value="check donation limit" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="556" y="532" as="sourcePoint" /> + <Array as="points"> + <mxPoint x="586" y="562" /> + </Array> + <mxPoint x="561" y="561.9999999999998" as="targetPoint" /> + </mxGeometry> </mxCell> </root> </mxGraphModel> diff --git a/doc/thesis/images/uml/donau_flow_register_charity.drawio b/doc/thesis/images/uml/donau_flow_register_charity.drawio @@ -1,16 +1,16 @@ -<mxfile host="app.diagrams.net" modified="2024-05-28T16:04:13.141Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0" etag="HfWZrRZ1-9oemRm7wR7F" version="24.4.9" type="device"> +<mxfile host="Electron" modified="2024-05-28T22:42:03.665Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.4.8 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="Bt-q7TdLfd3Ad3i6hZXs" version="24.4.8" type="device"> <diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0"> - <mxGraphModel dx="1685" dy="662" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0"> + <mxGraphModel dx="795" dy="548" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="7baba1c4bc27f4b0-2" value="charity" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1"> - <mxGeometry x="640" y="80" width="100" height="280" as="geometry" /> + <mxGeometry x="639" y="80" width="100" height="280" as="geometry" /> </mxCell> <mxCell id="7baba1c4bc27f4b0-10" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="7baba1c4bc27f4b0-2" vertex="1"> <mxGeometry x="45" y="50" width="10" height="200" as="geometry" /> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-7" value="CharityKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="7baba1c4bc27f4b0-2"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-7" value="CharityKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="7baba1c4bc27f4b0-2" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="50" as="sourcePoint" /> <Array as="points"> @@ -20,13 +20,13 @@ <mxPoint x="60" y="80" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-1" value="Donau" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="1"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-1" value="Donau" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="1" vertex="1"> <mxGeometry x="380" y="80" width="100" height="280" as="geometry" /> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" parent="jwiRQB-RJB6SAp2JKjDF-1" vertex="1"> <mxGeometry x="45" y="50" width="10" height="200" as="geometry" /> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-6" value="DonauKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-6" value="DonauKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="50" as="sourcePoint" /> <Array as="points"> @@ -36,7 +36,7 @@ <mxPoint x="60" y="80" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-8" value="DonationUnitKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-8" value="DonationUnitKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="90" as="sourcePoint" /> <Array as="points"> @@ -46,7 +46,7 @@ <mxPoint x="60" y="120" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-16" value="InsertCharity()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="jwiRQB-RJB6SAp2JKjDF-1"> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-16" value="InsertCharity()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" parent="jwiRQB-RJB6SAp2JKjDF-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="55" y="210" as="sourcePoint" /> <Array as="points"> @@ -56,23 +56,45 @@ <mxPoint x="60" y="240" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-14" value="Add Charity" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" edge="1" parent="1"> - <mxGeometry width="60" relative="1" as="geometry"> - <mxPoint x="320" y="280" as="sourcePoint" /> - <mxPoint x="425" y="280" as="targetPoint" /> - <mxPoint as="offset" /> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-9" value="GET /keys" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;anchorPointDirection=1;" parent="1" edge="1"> + <mxGeometry width="80" relative="1" as="geometry"> + <mxPoint x="684" y="221.57999999999998" as="sourcePoint" /> + <mxPoint x="434" y="221.57999999999998" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-9" value="GET /keys" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="1" source="jwiRQB-RJB6SAp2JKjDF-2"> - <mxGeometry width="80" relative="1" as="geometry"> - <mxPoint x="440" y="220" as="sourcePoint" /> - <mxPoint x="685" y="220" as="targetPoint" /> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-10" value="return keys" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;" parent="1" edge="1" target="7baba1c4bc27f4b0-10"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="435.07" y="240" as="sourcePoint" /> + <mxPoint x="179.99857142857155" y="240" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="jwiRQB-RJB6SAp2JKjDF-10" value="return keys" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;" edge="1" parent="1" source="7baba1c4bc27f4b0-10"> + <mxCell id="fkkLgq5ons9yVEzRLONb-1" value="Tax Authority" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;rounded=1;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="1"> + <mxGeometry x="121" y="80" width="100" height="280" as="geometry" /> + </mxCell> + <mxCell id="fkkLgq5ons9yVEzRLONb-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=12;align=center;" vertex="1" parent="fkkLgq5ons9yVEzRLONb-1"> + <mxGeometry x="45" y="50" width="10" height="200" as="geometry" /> + </mxCell> + <mxCell id="fkkLgq5ons9yVEzRLONb-3" value="CharityKeyGen()" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" parent="fkkLgq5ons9yVEzRLONb-1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="179.99857142857155" y="240" as="sourcePoint" /> - <mxPoint x="435.07" y="240" as="targetPoint" /> + <mxPoint x="55" y="50" as="sourcePoint" /> + <Array as="points"> + <mxPoint x="85" y="50" /> + <mxPoint x="85" y="80" /> + </Array> + <mxPoint x="60" y="80" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="jwiRQB-RJB6SAp2JKjDF-14" value="Add Charity" style="html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;curved=0;rounded=0;" parent="fkkLgq5ons9yVEzRLONb-1" edge="1"> + <mxGeometry width="60" relative="1" as="geometry"> + <mxPoint x="-60" y="180" as="sourcePoint" /> + <mxPoint x="45" y="180" as="targetPoint" /> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="fkkLgq5ons9yVEzRLONb-4" value="POST /charities" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;anchorPointDirection=1;" edge="1" parent="1"> + <mxGeometry width="80" relative="1" as="geometry"> + <mxPoint x="176" y="270" as="sourcePoint" /> + <mxPoint x="426" y="270" as="targetPoint" /> </mxGeometry> </mxCell> </root> diff --git a/doc/thesis/thesis.pdf b/doc/thesis/thesis.pdf Binary files differ.