ArchitectureΒΆ

The solution is based on a local service (the Smart Card Web Service, or SCWS), which is set up on the client phone when the client application is installed. The SCWS is able to communicate with tokens connected to the phone. In order to communicate with this service, a React-Native application can use the SCWS API React (SCWS API), which communicates with the SCWS.

The general architecture is depicted below:

digraph { graph [ compound=true, newrank=true ]; subgraph cluster_phone_machine { label="Phone OS (Android or iOS)"; subgraph cluster_browser { label="Application"; subgraph cluster_client_page { style=dashed; label="React class"; node [ label="SCWS API React", style=dashed, shape=rectangle, width=1 ] scwsapi; } } node [ label="Smart Card\nWeb Service", shape=rectangle, width=2.7 ] scws; } node [ label="Smart Card\nReader", shape=rectangle ] reader; scwsapi -> scws; scws -> scwsapi; scws -> reader; reader -> scws; { rank=same; } }

When access to the smart card system is needed, the application can use the SCWS API provided by Idopte (with which the application is bundled). This API is a simple wrapper that takes care of the communication with the underlying Smart Card Web Service. The Smart Card Web Service, which is resident in the background of the app, performs the operations through native calls.