46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
/*
|
|
* Copyright (c) 2023 O.S.Systems
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __UPDATEHUB_INTEGRITY_H__
|
|
#define __UPDATEHUB_INTEGRITY_H__
|
|
|
|
#if defined(CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS)
|
|
#include <mbedtls/md.h>
|
|
#elif defined(CONFIG_FLASH_AREA_CHECK_INTEGRITY_TC)
|
|
#include <tinycrypt/sha256.h>
|
|
#include <tinycrypt/constants.h>
|
|
#else
|
|
#error "Integrity check method not defined"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define SHA256_BIN_DIGEST_SIZE (32)
|
|
#define SHA256_HEX_DIGEST_SIZE ((SHA256_BIN_DIGEST_SIZE * 2) + 1)
|
|
|
|
struct updatehub_crypto_context {
|
|
#if defined(CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS)
|
|
mbedtls_md_context_t md_ctx;
|
|
const mbedtls_md_info_t *md_info;
|
|
#elif defined(CONFIG_FLASH_AREA_CHECK_INTEGRITY_TC)
|
|
struct tc_sha256_state_struct sha256sum;
|
|
#endif
|
|
};
|
|
|
|
int updatehub_integrity_init(struct updatehub_crypto_context *ctx);
|
|
int updatehub_integrity_update(struct updatehub_crypto_context *ctx,
|
|
const uint8_t *buffer, const uint32_t len);
|
|
int updatehub_integrity_finish(struct updatehub_crypto_context *ctx,
|
|
uint8_t *hash, const uint32_t size);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __UPDATEHUB_INTEGRITY_H__ */
|