The ROBOOT project uses dual-licensing. You can use it for free for non-commercial, open source projects. See license.txt for details or visit project home page at http://www.wsn.agh.edu.pl/?q=roboot
THIS SOFTWARE IS PROVIDED 'AS IS'. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. AGH UST SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
Definition in file roboot.c.
#include <string.h>
#include "roboot.h"
#include "xtea.h"
Go to the source code of this file.
Defines | |
#define | GET_BYTE(val, byte_no) ((uint8_t) (((val) >> ((byte_no)*8)) & 0xff)) |
#define | MIN(val1, val2) ((((uint32_t) (val1)) > ((uint32_t) (val2))) ? ((uint32_t) (val2)) : ((uint32_t) (val1))) |
#define | PS_FILE_MAGIC_LEN 4 |
#define | PS_DEV_MAGIC_TYPE_LEN 1 |
#define | APP_ID_LEN 5 |
#define | DEV_VER_LEN 1 |
#define | PS_DEV_MAGIC_LEN (PS_DEV_MAGIC_TYPE_LEN + APP_ID_LEN + 2 * DEV_VER_LEN) |
#define | PS_FILE_MAGIC_OFF 0 |
#define | IMG_VER_MSB_OFF PS_FILE_MAGIC_OFF |
#define | HASH_CIPHER_OFF (IMG_VER_MSB_OFF + 1) |
#define | CIPHER_PARAMS_OFF (HASH_CIPHER_OFF + 1) |
#define | IMG_VER_LSB_OFF (CIPHER_PARAMS_OFF + 1) |
#define | PS_DEV_MAGIC_OFF 0 |
#define | PS_DEV_MAGIC_TYPE_OFF PS_DEV_MAGIC_OFF |
#define | DEV_ID_OFF (PS_DEV_MAGIC_TYPE_OFF + PS_DEV_MAGIC_TYPE_LEN) |
#define | APP_ID_OFF (PS_DEV_MAGIC_TYPE_OFF + PS_DEV_MAGIC_TYPE_LEN) |
#define | DEV_VER_MIN_OFF (APP_ID_OFF + APP_ID_LEN) |
#define | DEV_VER_MAX_OFF (DEV_VER_MIN_OFF + DEV_VER_LEN) |
#define | KEY_LEN 128 |
#define | USER_DATA_LEN 128 |
#define | NO_SECTIONS_LEN 4 |
#define | PS_CHECK_AREA_LEN (PS_FILE_MAGIC_LEN + PS_DEV_MAGIC_LEN + USER_DATA_LEN + NO_SECTIONS_LEN) |
#define | FM_CHECK_OFF 0 |
#define | DM_CHECK_OFF (FM_CHECK_OFF + PS_FILE_MAGIC_LEN) |
#define | USER_DATA_OFF (DM_CHECK_OFF + PS_DEV_MAGIC_LEN) |
#define | NO_SECTIONS_OFF (USER_DATA_OFF + USER_DATA_LEN) |
#define | SECTION_MAGIC_LEN 4 |
#define | SECTION_ADDR_LEN 4 |
#define | SECTION_LEN_LEN 4 |
#define | SECTION_HASH_LEN 32 |
#define | SECTION_MAGIC_OFF 0 |
#define | SECTION_ADDR_OFF (SECTION_MAGIC_OFF + SECTION_MAGIC_LEN) |
#define | SECTION_LEN_OFF (SECTION_ADDR_OFF + SECTION_ADDR_LEN) |
#define | SECTION_HASH_OFF (SECTION_LEN_OFF + SECTION_LEN_LEN) |
#define | PS_SECTION_DATA_OFF (SECTION_HASH_OFF + SECTION_HASH_LEN) |
#define | PS_SECTION_HEADER_LEN (SECTION_MAGIC_LEN + SECTION_ADDR_LEN + SECTION_LEN_LEN + SECTION_HASH_LEN) |
#define | GET_HASH_TYPE(byte) (((byte) & 0xf0) >> 4) |
#define | GET_CIPHER_TYPE(byte) ((byte) & 0x0f) |
#define | GET_ASSYMETRIC_FLAG(byte) (((byte) & 0x80) != 0) |
#define | GET_CIPHER_KEY_LEN(byte) ((byte) & 0x7f) |
#define | IMG_VER_MAGIC_MSB 0xa2 |
#define | IMG_VER_MAGIC_LSB 0x75 |
#define | SECTION_MAGIC 0xdeadbeefUL |
Functions | |
const uint8_t * | ROBOOT_GetFileMagic (void) |
const uint8_t * | ROBOOT_GetDeviceMagic (void) |
const uint8_t * | ROBOOT_GetUserData (void) |
uint8_t | ROBOOT_GetHashType (void) |
uint8_t | ROBOOT_GetCipherType (void) |
bool | ROBOOT_IsAsymetricKeyCipherUsed (void) |
uint32_t | ROBOOT_GetNumberOfSections (void) |
uint8_t * | ROBOOT_InitProcessing (const ROBOOT_FLASH_Operations_T *flash_oper) |
int8_t | ROBOOT_ProcessPacket (uint32_t size, uint8_t **new_buf) |