aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/architecture.pdfbin0 -> 12892 bytes
-rw-r--r--docs/architecture.svg391
2 files changed, 391 insertions, 0 deletions
diff --git a/docs/architecture.pdf b/docs/architecture.pdf
new file mode 100644
index 0000000..af109af
--- /dev/null
+++ b/docs/architecture.pdf
Binary files differ
diff --git a/docs/architecture.svg b/docs/architecture.svg
new file mode 100644
index 0000000..56f1c85
--- /dev/null
+++ b/docs/architecture.svg
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="116.18518mm"
+ height="79.610497mm"
+ viewBox="0 0 116.18518 79.610497"
+ version="1.1"
+ id="svg1"
+ xml:space="preserve"
+ inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+ sodipodi:docname="architecture.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
+ id="namedview1"
+ pagecolor="#ffffff"
+ bordercolor="#999999"
+ borderopacity="1"
+ inkscape:showpageshadow="false"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="true"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="mm"
+ inkscape:zoom="2.8284271"
+ inkscape:cx="433.81001"
+ inkscape:cy="246.60349"
+ inkscape:window-width="1920"
+ inkscape:window-height="1125"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g7-1"
+ inkscape:clip-to-page="false"
+ labelstyle="default" /><defs
+ id="defs1"><marker
+ style="overflow:visible"
+ id="Triangle"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid"><path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135" /></marker><marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow2Mend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend"><path
+ transform="scale(-0.6)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path887" /></marker><marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker1138"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"><path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path1136" /></marker><marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow1Mend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"><path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path869" /></marker><marker
+ style="overflow:visible"
+ id="Triangle-0"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid"><path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-8" /></marker><marker
+ style="overflow:visible"
+ id="Triangle-6"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid"><path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-2" /></marker><marker
+ style="overflow:visible"
+ id="Triangle-6-9"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid"><path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-2-9" /></marker><marker
+ style="overflow:visible"
+ id="Triangle-1"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid"><path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135-9" /></marker></defs><g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-39.362004,-24.513694)"><g
+ transform="matrix(0.28586171,0,0,0.28586171,31.74187,28.050558)"
+ inkscape:label="Layer 1"
+ id="layer1-3"
+ inkscape:highlight-color="#cf72a3"><text
+ id="text832"
+ y="62.779079"
+ x="78.647041"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.3333px;line-height:1.25;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:42.3333px;font-family:Metropolis;-inkscape-font-specification:'Metropolis Ultra-Bold';stroke-width:0.264583"
+ y="62.779079"
+ x="78.647041"
+ id="tspan830"
+ sodipodi:role="line">EC</tspan></text><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.3333px;line-height:1.25;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="182.21022"
+ y="62.779079"
+ id="text832-2"><tspan
+ sodipodi:role="line"
+ id="tspan830-9"
+ x="182.21022"
+ y="62.779079"
+ style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:42.3333px;font-family:Metropolis;-inkscape-font-specification:'Metropolis Ultra-Bold';stroke-width:0.264583">Tester</tspan></text><path
+ id="path856"
+ d="M 111.17603,96.586813 V 6.4351743"
+ style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /><path
+ id="path858"
+ d="M 83.348106,67.860214 H 259.44811"
+ style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1138)" /><circle
+ r="2.3940837"
+ cy="17.822157"
+ cx="131.84666"
+ id="path1242"
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" /><circle
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1242-2"
+ cx="172.33257"
+ cy="31.304388"
+ r="2.3940837" /><circle
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1242-7"
+ cx="223.64252"
+ cy="16.69183"
+ r="5.1091008" /><ellipse
+ ry="2.3952644"
+ rx="2.3940837"
+ transform="scale(1,-1)"
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1242-6"
+ cx="131.76807"
+ cy="-87.85804" /><ellipse
+ ry="2.3952644"
+ rx="2.3940837"
+ transform="scale(1,-1)"
+ cy="-74.369148"
+ cx="172.25397"
+ id="path1242-2-1"
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" /><ellipse
+ ry="5.1116204"
+ rx="5.1091008"
+ transform="scale(1,-1)"
+ cy="-88.988922"
+ cx="223.56392"
+ id="path1242-7-3"
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" /><circle
+ r="4.2930355"
+ cy="48.575287"
+ cx="94.490883"
+ id="path1242-2-2"
+ style="fill:#000000;stroke-width:1.5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" /></g><rect
+ style="fill:none;stroke:#878787;stroke-width:0.362219;stroke-dasharray:none;stroke-dashoffset:2.89775;stroke-opacity:1"
+ id="rect1"
+ width="74.515152"
+ height="79.248276"
+ x="39.543114"
+ y="24.694803" /><text
+ xml:space="preserve"
+ style="font-size:7.05556px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:0.472813;stroke-width:0.264583"
+ x="48.99971"
+ y="31.703497"
+ id="text1"><tspan
+ sodipodi:role="line"
+ id="tspan1"
+ style="fill:#000000;fill-opacity:0.472813;stroke-width:0.264583"
+ x="48.99971"
+ y="31.703497">Host</tspan></text><rect
+ style="fill:none;stroke:#3c3c3c;stroke-width:0.362219;stroke-dasharray:1.08666, 1.08666;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1-5"
+ width="29.904758"
+ height="13.684691"
+ x="44.090816"
+ y="86.217743" /><text
+ xml:space="preserve"
+ style="font-size:4.93889px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#3b3b3b;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="90.629982"
+ id="text1-9"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:4.93889px;text-align:start;text-anchor:start;fill:#3b3b3b;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="90.629982"
+ id="tspan2"
+ dy="1.24"
+ dx="-0.07 0.07">Native</tspan><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:4.93889px;text-align:start;text-anchor:start;fill:#3b3b3b;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="96.803596"
+ id="tspan3"
+ dy="0 0">library</tspan></text><rect
+ style="fill:none;stroke:#3b3b3b;stroke-width:0.362219;stroke-dasharray:1.08666, 1.08666;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1-5-5"
+ width="29.904758"
+ height="13.684691"
+ x="78.818047"
+ y="86.217743" /><text
+ xml:space="preserve"
+ style="font-size:4.93889px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="81.683533"
+ y="90.605293"
+ id="text1-9-4"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:4.93889px;text-align:start;text-anchor:start;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="81.683533"
+ y="90.605293"
+ id="tspan2-8"
+ dx="0"
+ dy="1.24">Java</tspan><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:4.93889px;text-align:start;text-anchor:start;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="81.683533"
+ y="96.778908"
+ dy="0 0"
+ id="tspan3-1">library</tspan></text><g
+ id="g7"
+ transform="translate(0,-5.2208019)"><rect
+ style="fill:none;stroke:#878787;stroke-width:0.362219;stroke-dasharray:1.08666, 1.08666;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1-5-2"
+ width="29.904758"
+ height="13.684691"
+ x="44.090816"
+ y="71.828934" /><text
+ xml:space="preserve"
+ style="font-size:4.93889px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#878787;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="80.36779"
+ id="text1-9-1"><tspan
+ sodipodi:role="line"
+ style="font-size:4.93889px;text-align:start;text-anchor:start;fill:#878787;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="80.36779"
+ id="tspan3-5">JNI shim</tspan></text></g><text
+ xml:space="preserve"
+ style="font-size:3.52778px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="126.13512"
+ y="97.167488"
+ id="text1-9-1-8"><tspan
+ sodipodi:role="line"
+ style="font-size:3.52778px;text-align:start;text-anchor:start;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="126.13512"
+ y="97.167488"
+ id="tspan3-5-7">Custom applet</tspan></text><path
+ style="fill:none;stroke:#878787;stroke-width:0.362;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.08599997,1.08599997;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 39.543114,58.130175 H 114.05827"
+ id="path6" /><path
+ style="fill:none;stroke:#888888;stroke-width:0.362;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Triangle)"
+ d="M 59.043195,61.78344 V 58.130175"
+ id="path7" /><path
+ style="fill:none;stroke:#888888;stroke-width:0.362;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Triangle-0)"
+ d="M 59.043198,84.805255 V 80.473933"
+ id="path7-0" /><path
+ style="fill:none;stroke:#888888;stroke-width:0.362001;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Triangle-6)"
+ d="M 93.770438,81.39173 V 58.311179"
+ id="path7-8" /><g
+ id="g7-4"
+ transform="translate(78.063208,-36.179641)"><rect
+ style="fill:none;stroke:#878787;stroke-width:0.362219;stroke-dasharray:1.08666, 1.08666;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1-5-2-7"
+ width="33.212051"
+ height="13.684691"
+ x="44.090816"
+ y="71.828934" /><text
+ xml:space="preserve"
+ style="font-size:4.93889px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#878787;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="80.36779"
+ id="text1-9-1-2"><tspan
+ sodipodi:role="line"
+ style="font-size:4.93889px;text-align:start;text-anchor:start;fill:#878787;fill-opacity:1;stroke-width:0.264583"
+ x="46.746399"
+ y="80.36779"
+ id="tspan3-5-4">Card reader</tspan></text></g><path
+ style="fill:none;stroke:#888888;stroke-width:0.362;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Triangle-6-9)"
+ d="M 138.76007,84.758958 V 49.515098"
+ id="path7-8-8" /><g
+ id="g7-1"
+ transform="translate(79.716864,14.388809)"><rect
+ style="fill:none;stroke:#3b3b3b;stroke-width:0.362219;stroke-dasharray:1.08666, 1.08666;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1-5-2-0"
+ width="29.904758"
+ height="13.684691"
+ x="44.090816"
+ y="71.828934" /><text
+ xml:space="preserve"
+ style="font-size:4.93889px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#3a3a3a;fill-opacity:1;stroke-width:0.264583"
+ x="46.473286"
+ y="77.515755"
+ id="text1-9-1-3"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:4.93889px;text-align:start;text-anchor:start;fill:#3a3a3a;fill-opacity:1;stroke-width:0.264583"
+ x="46.473286"
+ y="77.515755"
+ id="tspan3-5-40">JavaCard</tspan></text></g><path
+ style="fill:none;stroke:#888888;stroke-width:0.362;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Triangle-1)"
+ d="m 120.75368,42.491639 h -6.5143"
+ id="path7-9" /><text
+ xml:space="preserve"
+ style="font-size:3.52778px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="82.93837"
+ y="85.051697"
+ id="text1-9-1-8-9"><tspan
+ sodipodi:role="line"
+ style="font-size:3.52778px;text-align:start;text-anchor:start;fill:#3c3c3c;fill-opacity:1;stroke-width:0.264583"
+ x="82.93837"
+ y="85.051697"
+ id="tspan3-5-7-6">JCA Provider</tspan></text><text
+ xml:space="preserve"
+ style="font-size:3.52778px;line-height:1.25;font-family:Metropolis;-inkscape-font-specification:Metropolis;text-align:center;text-anchor:middle;fill:#888888;fill-opacity:1;stroke-width:0.264583"
+ x="48.21114"
+ y="65.633949"
+ id="text1-9-1-8-9-6"><tspan
+ sodipodi:role="line"
+ style="font-size:3.52778px;text-align:start;text-anchor:start;fill:#888888;fill-opacity:1;stroke-width:0.264583"
+ x="48.21114"
+ y="65.633949"
+ id="tspan3-5-7-6-1">JCA Provider</tspan></text></g></svg>