65 lines
2.1 KiB
C
65 lines
2.1 KiB
C
/*
|
|
* Copyright (c) 2019, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __SECURITY_CNT_H__
|
|
#define __SECURITY_CNT_H__
|
|
|
|
/**
|
|
* @file security_cnt.h
|
|
*
|
|
* @note The interface must be implemented in a fail-safe way that is
|
|
* resistant to asynchronous power failures or it can use hardware
|
|
* counters that have this capability, if supported by the platform.
|
|
* When a counter incrementation was interrupted it must be able to
|
|
* continue the incrementation process or recover the previous consistent
|
|
* status of the counters. If the counters have reached a stable status
|
|
* (every counter incrementation operation has finished), from that point
|
|
* their value cannot decrease due to any kind of power failure.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Initialises the security counters.
|
|
*
|
|
* @return 0 on success; nonzero on failure.
|
|
*/
|
|
int32_t boot_nv_security_counter_init(void);
|
|
|
|
/**
|
|
* Reads the stored value of a given image's security counter.
|
|
*
|
|
* @param image_id Index of the image (from 0).
|
|
* @param security_cnt Pointer to store the security counter value.
|
|
*
|
|
* @return 0 on success; nonzero on failure.
|
|
*/
|
|
int32_t boot_nv_security_counter_get(uint32_t image_id, uint32_t *security_cnt);
|
|
|
|
/**
|
|
* Updates the stored value of a given image's security counter with a new
|
|
* security counter value if the new one is greater.
|
|
*
|
|
* @param image_id Index of the image (from 0).
|
|
* @param img_security_cnt New security counter value. The new value must be
|
|
* between 0 and UINT32_MAX and it must be greater than
|
|
* or equal to the current security counter value.
|
|
*
|
|
* @return 0 on success; nonzero on failure.
|
|
*/
|
|
int32_t boot_nv_security_counter_update(uint32_t image_id,
|
|
uint32_t img_security_cnt);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __SECURITY_CNT_H__ */
|