% ----------------------------
\section{Process Updates}
\subsection{swupdate}

% ----------------------------
\begin{frame}{Overview}
\begin{center}
\includegraphics[width=8cm]{images/update_swupdate_overview.png}
\end{center}
\end{frame}

% ----------------------------
\begin{frame}{Features I}
\begin{itemize}
\item Open-Source (GPLv2)
\item Bootloader, OS, FPGA images
\item Streamable Updates
\item Multi-Target Updates
\item Powerfail Safe
\item Crypto Support
 \begin{itemize}
 \item Image signing (Integrity)
 \item Image encryption (Protection)
 \end{itemize}
\item Fully Customizable
\item Extendable
\end{itemize}
\end{frame}

% ----------------------------
\begin{frame}{Features II}
\begin{itemize}
\item build-in Handlers
 \begin{itemize}
 \item raw
 \item File-based
 \item MTD
 \item UBI
 \end{itemize}
\item build-in Deployment Interfaces
 \begin{itemize}
 \item Local Files
 \item Network (pull)
 \item Web Interface (push)
 \item hawkbit Deployment Server (push)
 \end{itemize}
\end{itemize}
\end{frame}

% ----------------------------
\subsection{Streaming}

% ----------------------------
\begin{frame}{Update Container}
\begin{itemize}
\item Update Container Format:
 \begin{itemize}
 \item serialized
 \item streamable
 \item 1st Element: Description
 \item 2nd Element: Description Signature
 \end{itemize}
\item Description Elements
 \begin{itemize}
 \item Image Format
 \item Image Size
 \item Image Hash
 \item Install Target
 \item Install Handler
 \end{itemize}
\end{itemize}
\end{frame}

% ----------------------------
\begin{frame}{Update Container Format}
\begin{columns}[onlytextwidth]
 \begin{column}{0.45\textwidth}
 \begin{itemize}
 \item File Format: cpio
  \begin{itemize}
  \item open file format
  \item widely used
  \item indexed
  \item good tooling support
  \item supports seek (e.g for Streaming)
  \end{itemize}
 \end{itemize}
 \end{column}
 \begin{column}{0.45\textwidth}
  \begin{center}
  \includegraphics[height=0.7\textheight]{images/update_swupdate_format.png}
  \end{center}
 \end{column}
\end{columns}
\end{frame}

% ----------------------------
\subsection{Security}

% ----------------------------
\begin{frame}{Update Verification}
\begin{itemize}
\item Update Signature Verification Enforcement
\item Signature ensures Integrity of Update Description
 \begin{itemize}
 \item Integrity Verification early in Update Process
 \item hash-based Image and Script Validation
 \item No Image Download on Integrity failures
 \end{itemize}
\end{itemize}
\end{frame}

% ----------------------------
\begin{frame}[fragile]
\frametitle{Signed Update Layout}
\begin{beamerboxesrounded}[shadow=true]{sw-description}
\begin{scriptsize}
\begin{verbatim}
[...]
stable =
{
  sys_a =
  {
    images =
    (
      {
        filename = "rfs.ext3.gz";
        sha256 = "32df9a4057c858abd2ce64b8bffd2722bd2502d257f221b15295bd9fb85c325b";
        [...]
      }
    );
    scripts =
    (
      {
        filename = "10_markB.sh";
        sha256 = "cbe23f93b00fb758690fc09867c9758b74a15d10522bcc5a4a51f881d2dde0a6";
        type = "postinstall";
      }
    );
  };
[...]
\end{verbatim}
\end{scriptsize}
\end{beamerboxesrounded}
\end{frame}
