Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,12 @@ write_basic_package_version_file(FCS.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)

add_subdirectory(third_party)
add_subdirectory(include)
add_subdirectory(lib)
add_subdirectory(app)

if(${ARCH} STREQUAL linux_aarch64)
add_subdirectory(third_party)
add_subdirectory(app)
endif()

add_subdirectory(toolchain)
2 changes: 1 addition & 1 deletion cmake/arch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ if (NOT DEFINED ARCH)
endif ()

# Setup platform toolchain file.
include(${CMAKE_SOURCE_DIR}/toolchain/${ARCH}/toolchain.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/toolchain/${ARCH}/toolchain.cmake)
2 changes: 1 addition & 1 deletion cmake/os.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ if (NOT DEFINED OS)
endif ()

# Setup platform toolchain file.
include(${CMAKE_SOURCE_DIR}/toolchain/${OS}/toolchain.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/toolchain/${OS}/toolchain.cmake)
9 changes: 9 additions & 0 deletions lib/include/os/freertos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: MIT-0
# Copyright (C) 2025 Altera

if(NOT DEFINED FREERTOS_TOOLCHAIN)
message(FATAL_ERROR "not building inside inside FreeRTOS")
endif()
set(SHARED_LIB OFF)
set(OS freertos)

2 changes: 1 addition & 1 deletion lib/src/common/libfcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2937,7 +2937,7 @@ static FCS_OSAL_INT fcs_fit_image_hash_verify(FCS_OSAL_UUID *session_uuid,
FCS_OSAL_SIZE cal_hash_size = FCS_SHA_384_DIGEST_SIZE;
struct fcs_digest_get_req get_digest_req;

cal_hash = (FCS_OSAL_CHAR *)malloc(FCS_SHA_384_DIGEST_SIZE);
cal_hash = (FCS_OSAL_CHAR *)fcs_malloc(FCS_SHA_384_DIGEST_SIZE);
if (!cal_hash) {
FCS_LOG_ERR("Error in allocating memory for image hash\n");
return -ENOMEM;
Expand Down
9 changes: 9 additions & 0 deletions lib/src/os/freertos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: MIT-0
# Copyright (C) 2025 Altera

if(NOT DEFINED FREERTOS_TOOLCHAIN)
message(FATAL_ERROR "not building inside inside FreeRTOS")
endif()
set(SHARED_LIB OFF)
set(OS freertos)

7 changes: 7 additions & 0 deletions toolchain/freertos_aarch64/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: MIT-0
# Copyright (C) 2025 Altera

cmake_minimum_required(VERSION 3.20)

add_subdirectory(include)

5 changes: 5 additions & 0 deletions toolchain/freertos_aarch64/include/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SPDX-License-Identifier: MIT-0
# Copyright (C) 2025 Altera

target_include_directories(FCS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")

113 changes: 113 additions & 0 deletions toolchain/freertos_aarch64/include/libfcs_osal_types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
/* SPDX-License-Identifier: MIT-0 */
/*
* Copyright (C) 2025 Altera
*/

/**
*
* @file fcs_osal_types.h
* @brief contains OS abstraction layer data types for linux_aarch64 platform.
*/

#ifndef FCS_OSAL_TYPES_H
#define FCS_OSAL_TYPES_H

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stdint.h>
#include <stdbool.h>
#include "osal.h"

#define FCS_OSAL_UUID_SIZE (16U)
#define FCS_AES_CRYPT_BLOCK_SIZE (16U)

#define FCS_AES_BLOCK_MODE_ECB 0
#define FCS_AES_BLOCK_MODE_CBC 1
#define FCS_AES_BLOCK_MODE_CTR 2
#define FCS_AES_BLOCK_MODE_GCM 3
#define FCS_AES_BLOCK_MODE_GHASH 4

#define FCS_AES_GCM_MAX_AAD_SIZE 65535
#define FCS_AES_GCM_TAG_SIZE 3

#define FCS_AES_IV_SOURCE_INTERNAL 1
#define FCS_AES_IV_SOURCE_EXTERNAL 0

#define FCS_AES_ENCRYPT 0
#define FCS_AES_DECRYPT 1

#define FCS_ECC_CURVE_NIST_P256 1
#define FCS_ECC_CURVE_NIST_P384 2
#define FCS_ECC_CURVE_BRAINPOOL_P256 3
#define FCS_ECC_CURVE_BRAINPOOL_P384 4

#define FCS_ECDH_P256_PUBKEY_LEN 64
#define FCS_ECDH_P384_PUBKEY_LEN 96
#define FCS_ECDH_BP256_PUBKEY_LEN 64
#define FCS_ECDH_BP384_PUBKEY_LEN 96
#define FCS_ECDH_P256_SECRET_LEN 32
#define FCS_ECDH_P384_SECRET_LEN 48
#define FCS_ECDH_BP256_SECRET_LEN 32
#define FCS_ECDH_BP384_SECRET_LEN 48

#define FCS_SHA_384 1
#define FCS_SHA_384_DIGEST_SIZE 48
#define FCS_CERT_LEN_PARAM_SZ sizeof(uint32_t)

/** unsigned 64 bit*/
typedef uint64_t FCS_OSAL_U64;
/** unsigned 32 bit*/
typedef uint32_t FCS_OSAL_U32;
/** unsigned 16 bit*/
typedef uint16_t FCS_OSAL_U16;
/** unsigned 8 bit*/
typedef uint8_t FCS_OSAL_U8;

/** signed 64 bit*/
typedef int64_t FCS_OSAL_S64;
/** signed 32 bit*/
typedef int32_t FCS_OSAL_S32;
/** unsigned 16 bit*/
typedef int16_t FCS_OSAL_S16;
/** unsigned 8 bit*/
typedef int8_t FCS_OSAL_S8;

/** void type*/
typedef void FCS_OSAL_VOID;
/** character data type*/
typedef char FCS_OSAL_CHAR;
/** Unsigned character data type*/
typedef unsigned char FCS_OSAL_UCHAR;
/** boolean data type*/
typedef bool FCS_OSAL_BOOL;

/** integer data type*/
typedef int FCS_OSAL_INT;
/** unsigned integer data type*/
typedef unsigned int FCS_OSAL_UINT;
/** data type to denote offset */
typedef int FCS_OSAL_OFFSET;
/** data type to denote size*/
typedef size_t FCS_OSAL_SIZE;

/** mutex object type*/
typedef SemaphoreHandle_t FCS_OSAL_MUTEX;
/** file object type*/
typedef char* FCS_OSAL_FILE;
/** integer data type uuid for session ids*/
typedef char FCS_OSAL_UUID;

// TODO: which data type
typedef int FCS_OSAL_ERROR;

// TODO: which data type
typedef int FCS_OSAL_RSIZE;

typedef uintptr_t FCS_OSAL_UINTPTR;

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif
8 changes: 8 additions & 0 deletions toolchain/freertos_aarch64/toolchain.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: MIT-0
# Copyright (C) 2025 Altera

if(NOT DEFINED FREERTOS_TOOLCHAIN)
message(FATAL_ERROR "not building inside inside FreeRTOS")
endif()
set(SHARED_LIB OFF)
set(OS freertos)