openblt/Host/Source/SeedNKey
Frank Voorburg 7dcbeb6eda Refs #823. Added gitignore files to empty directories that are needed to probably build programs.
git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@699 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
2019-06-21 10:03:29 +00:00
..
build Refs #823. Added gitignore files to empty directories that are needed to probably build programs. 2019-06-21 10:03:29 +00:00
lint Refs #523, #529. Added bash-script for updating the pc-lint configuration files for the installed GCC version. Replaced deprecated libusb_set_debug() with libusb_set_option() for newer versions of Libusb. 2018-04-23 10:28:51 +00:00
CMakeLists.txt Refs #424. Added -std=gnu99 flag to CMakeLists.txt files when building with GCC under Windows. 2017-10-24 16:20:55 +00:00
readme.dox Refs #320. Refactored the XCP Seed and Key shared library. Its build system is now based on CMake and it is cross-platform. 2017-10-24 13:56:03 +00:00
seednkey.c Refs #320. Implemented support for the seed/key protection in the XCP loader module. 2017-10-26 14:06:17 +00:00
seednkey.h Refs #320. Refactored the XCP Seed and Key shared library. Its build system is now based on CMake and it is cross-platform. 2017-10-24 13:56:03 +00:00

readme.dox

/**
\mainpage XCP Seed and Key shared library (SeedNKey)   
\details
\tableofcontents
\section into Introduction
The OpenBLT bootloader is an open source project, allowing everyone to access the 
sources. One downside of this is that if someone knows the OpenBLT bootloader is used
in your product, it is relatively easy for them to figure out how to update the 
firmware in your product. Although this could be a feature of your product, in most
cases it is not desirable.

For this reason the bootloader contains a seed/key security module. If this security
module is enabled in the bootloader's configuration, updates can only be made by users
that have the correct algorithm inside this Seed and Key shared library. If not, then 
new firmware update requests are rejected by the bootloader.

The SeedNKey project is preconfigured to build this Seed and Key shared library. Its
default implemented seed and key algorithm works together with those implemented in
the OpenBLT demo bootloaders. You are free and encouraged to update this algorithm to
match your security needs.

On the bootloader target side (microcontroller), this security module is enabled by
setting configurable BOOT_XCP_SEED_KEY_ENABLE to a value of 1 in the bootloader's 
configuration header file (blt_conf.h). The implementation of the seed and key algorithm
can be made in the hook-functions XcpGetSeedHook() and XcpVerifyKeyHook().

On the host side (PC), you simply specify the Seed and Key shared library file that this
preconfigured project built. In MicroBoot this shared library can be specified through
the settings user interface. In BootCommander it is specified via a command line option.

Refer to the OpenBLT website for additional information regarding the XCP Seed and Key
shared library, including step-by-step instructions on how to build it:
https://www.feaser.com/openblt/doku.php?id=manual:security
php?id=manual:libopenblt.

\verbatim
----------------------------------------------------------------------------------------
                          C O P Y R I G H T
----------------------------------------------------------------------------------------
               Copyright (c) 2017 Feaser. All rights reserved.

----------------------------------------------------------------------------------------
                            L I C E N S E
----------------------------------------------------------------------------------------
 This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
 modify it under the terms of the GNU General Public License as published by the Free
 Software Foundation, either version 3 of the License, or (at your option) any later
 version.

 OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE. See the GNU General Public License for more details.

 You have received a copy of the GNU General Public License along with OpenBLT. It 
 should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
----------------------------------------------------------------------------------------
\endverbatim

*/