# Computational Load Analysis of a Galileo OSNMA-Read Receiver for ARM-Based Embedded Platforms +
## 3 Development Work
### The OSNMA Add-On  
The OSNMA functions, already implemented in NGene, as reported in [17], have been included also in eNGene. Being low data rate functions that elaborate the navigation message decoding output, they have been coded in ANSI-C and exploit the C-based open-source OpenSSL 1.1.1 library [32] for the cryptographic operations, thereby considerably easing the porting procedure. The OpenSSL 1.1.1 library is available with both the binary files and the source code, easing the installation on different operating systems and platforms.  
The main OSNMA functionalities implemented in the receiver are depicted in Figure 3, while a short description is reported in Table 1, together with the list of cryptographic functions, main required inputs and outputs produced by each function.  
Figure 3: Simplified block scheme of the main OSNMA functionalities implemented in the receiver, adapted and restyled from [17].  
\begin{table}
\begin{tabular}{c c c c c c} \hline \hline
**Function** & **Description** & **Cypto Functions** & **Main Inputs** & **Validated Outputs** \\ \hline \multirow{4}{*}{**Digital Signature verification**} & verification of the root key received in the & • & ECDSA-P224/SHA-224 & \multirow{4}{*}{\(\bullet\)} & DSM-KROOT message \\  & DSM-KROOT message, by means of the & • & ECDSA-P256/SHA-256 & \(\bullet\) & DSM-KROOT message \\  & Elliptic Curve Digital Signature Algorithm & • & ECDSA-P384/SHA-384 & \(\bullet\) & public key \\  & (ECSA) with several C and hash functions options & & ECDSA-P521/SHA-512 & \\ \hline \multirow{4}{*}{**TESLA key verification**} & verification of a key received in a MACK & • & \(\bullet\) & TESLA key \\  & block, applying a hash function for a & SHA-256 & \(\bullet\) & Galileo System Time (GST) \\  & number of times equal to the distance in the & SHA3-224 & \(\bullet\) & last verified TESLA key (or \\  & TESLA chain between the key to be verified & \(\bullet\) & SHA3-256 & root key) \\  & and the last verified key or the root key & & & \\ \hline \multirow{4}{*}{**MAC verification**} & verification of the MAC/MACO field & & \(\bullet\) & \(I/N\)/AV navigation message \(\bullet\) & specific portions of the \\  & received in the MACK block & & \(\bullet\) & Galileo System Time (GST) & navigation data, depending on \\  & & received in the MACK block & & \(\bullet\) & MAC and MAC-Info fields \\  & & & \(\bullet\) & verified TESLA key & Key Delay (ADKD) field \\  & & & (PRN1 or PRN19) & \\ \hline \multirow{4}{*}{**MACSEQ verification**} & verification of the MACSEQ field in the & & \(\bullet\) & MAC lookup table & \\  & MACS blob, similar to the & & \(\bullet\) & Galileo System Time (GST) & \\  & MAC verification & & & MCSCP and & \(\bullet\) & MAC-Info fields \\  & MAC verification & & & \(\bullet\) & Aventifest Tesla key & \\  & & & (PRN1 or PRN19) & & \\ \hline \multirow{4}{*}{**Public key verification**} & verification of a new public key received in a DSM-PKK message, through the Merkle Tree & \(\bullet\) & SHA-256 & \(\bullet\) & DSM-PKK message \(\bullet\) & public key \\ \cline{1-1}  & & & & \(\bullet\) & Merkle Tree Root & \(\bullet\) & public key \\ \hline \hline \end{tabular}
\end{table}
Table 1: OSNMA functions’ descriptions. For each one the list of cryptographic functions, main inputs and outputs are also shown. © [2020] IEEE. Reprinted, with permission, from [16].